关于C语言的一道题!!!会的进!

来源:百度知道 编辑:UC知道 时间:2024/07/02 06:26:57
main()
{int a=350,b;
char c;
c=a;
b=c;
printf("%d,%d,%d,",a,c,b);
getch();
}
最后得出的结果是:350 94 94
我不明白为什么不是350 350 350
为什么c和b得出的是94 94腻???

那是因为c是char型的,存储的话占8位,而a是int型占32位(一般来说)。所以在你c=a操作的时候会有截断误差(你可以看你的程序,肯定有一个这样的warning),这个时候c不能保证按a原来精度存储。然后你进行b=c,b和c现在是相同了,所以你的结果是350 94 94。
最后想说的是后面的94还跟你机器是大端还是小端有关系。

char只有8位所以只能表示0到255的值 你给它350就溢出了 所以就变成错误值了

char 最大能存放的数值是127,你要把350放进去话,数据就会失去准确性,你试试把a改成127就OK了

char类型只用来存放字符类型的数据,不会用来存放数值类型的数据,可以说你这个题有问题

char类型并不是不可以存放数字,但是以字符的方式存入,与ASIIC码表对应,在表中数字仅到127,对应于char类型占字节数位一,决定了它的范围是从-128~127.说以在相等的时候出现错误,随机分配数据,也就出现了错误

char 是字符型的,而int是整形的。他们表示的范围不一样。char之有8个为。350的二进制可表示:1 0 1 0 1 1 1 1 0。而由于char占8位。所以就只剩下后面的8个位表示了:01011110.这个二进制就是94了。所以最后输出的就是94了。

如果你是用vc++编译器的话,
当赋给的值超过本身的范围的时候,那么它就把这个值对它的无符号的最大数值取模。
例如:你做的那题。
char的范围是-128~127,无符号就是0-256,350超过了范围
(-128~127),那么350就对256取模,剩下的就是94了。其他情况也类似。