请问最后c2的值为什么是B 呢?
#include <stdio.h>void main()
{
int a,b = 322;
float x,y = 8.88;
char c1 ='k',c2;
a = y;
x = b;
a = c1;
c2 = b;
printf("%d,%f,%d,%c\n",a,x,a,c2);
}
计算结果为 107,322.000000,107,B最后的B 不知道怎么得出来的 帮忙解释一下
322应该是ascii(或者其他编码,例如GB2312什么的)码值 本帖最后由 amydog 于 2013-12-16 16:15 编辑
丢失精度照成的b属于int类型Int类型占4个字节,char是占1个字节 真正的b 32位二进制实际只有最后的8位赋值给了char
实际本人没测试理论上这样分析的
补充:
322的二进制是101000010 后8位是1000010 转换为十进制就是66转换为char 就是B
不了缘_hy 发表于 2013-12-16 15:26 static/image/common/back.gif
322应该是ascii(或者其他编码,例如GB2312什么的)码值
B 的 ASCII 值是98c2怎么算能得出98 呢 amydog 发表于 2013-12-16 16:02 static/image/common/back.gif
丢失精度照成的b属于int类型Int类型占4个字节,char是占1个字节 真正的b 32位二进制实际只有最后 ...
也就是说 c2 的值 是不确定的就是原本float 型的b 在赋值给c2 的时候已经有数据丢失了 是吗? 白铯。。囙忆 发表于 2013-12-16 16:13 static/image/common/back.gif
也就是说 c2 的值 是不确定的就是原本float 型的b 在赋值给c2 的时候已经有数据丢失了 是吗?
应该是intb的值 白铯。。囙忆 发表于 2013-12-16 16:14 static/image/common/back.gif
应该是intb的值
补充:
322的二进制是101000010 后8位是1000010 转换为十进制就是66转换为char 就是B 白铯。。囙忆 发表于 2013-12-16 16:07 static/image/common/back.gif
B 的 ASCII 值是98c2怎么算能得出98 呢
大写B是66。。。解决了问题就好 额,我想说的就是我需要中比较健康的生活,不能再这么沉沦了
页:
[1]