C语言的几个不明白

来源:百度知道 编辑:UC知道 时间:2024/06/05 14:07:23
1.
void main()
{int i,j;
i=8,j=10;
printf("%d,%d,%d,%d\n",i,j,++i,j++)
}
结果是 9 11 9 10 计算机是如何算出这个结果的?

2.
main()
{
int a=1,b=2,c=3;
printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c);
}
答案是 3,1,0,0 这个又是怎么计算的
3。
字符型数据可以和数值型数据混合运算。因为字符型数据在计算机内部是用一个字节的整型数表示的。
这句话是不是比如 'a'在计算中,计算机直接用097代替’a'吗?为什么?
4。
空语句常用于循环语句中,构成空循环。
空循环是什么?有何意义 最好打个比方告诉我
5。
#include <stdio.h>
main()
{int x=1,y=2;
{int x=2;
{int x=3;
printf("x=%d,y=%d\n",x,y);
}
printf("x=%d,y=%d\n",x,y);
}
printf("x=%d,y=%d\n",x,y);
}
运行结果是 x=3,y=2 为什么计算机可以判定X=2 Y=2 X=3,Y=2
x=2,y=2
x=1,y=2
而且 为什么不是 x=1,y=2
x=2,y=2
x=3,y=2
6

1.printf("%d,%d,%d,%d\n",i,j,++i,j++)后面是逗号表达式,从右往左算,即:j++ ++i j i
2.弄清=是赋值,把右边变量的值给左边的变量,==是比较,判断左右的值是否相等,相等算作1,不相等算作0
3.知道ASCII码表吧,你把a保存在计算机中时,实际存的是97这个数,因为计算机是2进制,只能存数……
4.空循环很少吧,我没用过,这个例子不知道恰当不:
for(i=0; i<n; i++);/*将i加到n的大小*/
5.定义仅在他所在的语句块内有效
{
int x=6;
......
}
这个x只在两个{ }之间有效
6.所占位数指这个类型的变量保存在计算机时,占的内存大小。位 也是个大小单位,像MB,GB一样。取值范围的理解是对的。
int和short为什么相等,这个在C标准没明确规定,只说int不能小于short,所以各种编译器上,有int等于short的,也有int比short大的,一般教材以TC为准,说int和short一样

初学,如错,请斧正

1 答案错了。不是那样的,答案是9,10,9,10
2 “=”是赋值运算符,而“==”是判断运算符。变量相等就为1,否则为0
3 在程序中每一个字符都有编码的,例如 a编码97.这就是ASCII码。
4 给你一段程序:void main()
{int i,j;
i=100,j=200;
while(++i<--j);
printf("midpoint is :%d\n",i) ;
}
输出结果是 150.还有程序延时也用到空循环。
5 全局变量和局部变量作用域不同所致。就进原则。
6 一个字节占8位,一个类型占不同字节数。这是根据内存来存储数据来区分的。位就是二进制表示一个数据的基本单位。

没有意思, C 中的函数参数是从右向左传的。
给你提醒这一点就好了。

什么逗号表达式,PASCAL ca