c语言题 char c1,c2,c3; ci='x';c2=1000;c3=6.02e23 printf("%c%c%c\n",c1,c2,c3) 详解一下c2 c3

日期:2010-08-24 18:31:21 人气:2

c语言题 char c1,c2,c3; ci='x';c2=1000;c3=6.02e23 printf("%c%c%c\n",c1,c2,c3) 详解一下c2 c3

c2和c3都有截断误差问题,但c2还牵扯负数存储的问题 1000的二进制是:1111101000,而一个char型字符的大小是1个字节(8位),当一个较大类型的值赋给较小类型的变量时,会产生截断误差,并且是这样处理:把较大类型的低位(截多少位要看较小类型是几位的,char是8位的,所以截取最后8位)截取下来赋值给c2,于是c2的二进制值是11101000,而char是带符号类型的(unsigned char 是不带符号的),计算机里规定最高位为符号位,为1的话该值就是个负数,为0的话是正数,且负数在
    A+
热门评论