我知道过程:1000 0000 ---128
0111 1111----取反
1000 0000----+1
得到128加上-符号变成-128
我也知道a = 127是正常打印的
希望得到解决
char a = 128; printf("%d", a); 为什么输出结果为-128?
char a = 128;a=1000 0000 ---128 在计算机中,整型类数值是用补码来表示的,1000 0000是一个字节-128的补码,所以,按%d输出就是-128. 并不是你所说的过程中的意义,虽然,表面看你写的没啥错误。
char a=128;printf(%x\\n,a); 打印出来的是ff80???
char a=128;printf(%d\\n,a);运行的结果是 -128.所以在使用char时 应避免>=128的数 从'const int' 到 'char'数据截断,即标识符转换为更小的类型,从而导致信息丢失.错误的程序就算可以运行得的结果也是匪夷所思的. 就像未考虑'\\0' 结果会出现一堆 烫 一样 ...
定义char时 超过127的时候 输出是一个负数 这个负数是怎么算出来的 求...
printf("%d\\n", c); \/\/输出-59 A printf("%u\\n", c&0x000000ff); \/\/输出197 B return 0;} c=197, 这句话,c语言编译器理解为你要将一个无符号数197存放到一个字节c中,但c实际上被是char,也就是编译器把c理解为有符号字节。所以A处(把c当成有符号数)把二进制无符号数1...
...{ char a=129; printf("%d",a); } 输出的为什么是-127?
.因为ascii码的值是从-128~127,所以当超过256时,又再次循环,也就是说a=127;则执行printf("%d" ,a)时,输出的是127,加1,a=128就循环到最小值-128,加2,就到-127
char a=127; a+=1; printf("%d",a); 结果是多少?我真的醉了
char a=127; a+=1; printf("%d",a); 结果是-128 char占一个字节的内存,属于有符号数据(无符号定义应该是unsigned char),数据范围为-128~127.char类型存储的是字符的ascii,属于整数类型的一种。计算机存储整形数据用的是补码,补码不区分正负。127 在计算机中的存储是以二进制补码存放,其二...
...char a=128 ; d=(unsigned int)(~a) ; 为什么d会等于-129呀,求大神...
a = 10000000 ~a= 11111111111111111111111101111111 (在32位系统,常量参与运算先被扩展成32位,再取反就这样了)d= 11111111111111111111111101111111 输出d,你用的%d有符号输出,要将d理解为有符号数,所以首先它是负数,绝对值为 00000000000000000000000010000001 (除符号位,后面的位取反加1)也就是...
char a=0x123FFF; printf("%d,",a); a=127; printf("%d",++a); 希望...
0x123fff是十进制的1196031 % 256 = 255 也就是 -1 所以,第一个输出-1 第二个很简单了 ,输出-128.1、因为a是char类型,取值范围是 -128 ~ 127,0x123fff显然是溢出了,于是进行取模操作,char类型占一个字节,所以模为256,取模后剩下255,因为char类型是有符号数,所以是-1.2、127是...
...为128-255字符型数据转为整型变量时得到的是-128--1的值 怎样算的...
printf("%d %d\\n",a,b); \/\/Print the minimum value and maximum value of data type char } 现在我们已经明白了,用8位bit表示的signed char是无法表示超过127的数字的,所以呢,当你赋予变量一个超过127的值的时候,它就会自动变回负值的最小值并向上递加,可以想象成一个圆环,原理在于CPU中...
char c=130;printf ("%d",c);这个得出的结果为什么是-126啊?
注意(负数的最高位肯定是1),由上所讲解的方法。-126的补码是"1000 0010",你会发觉这和130的的编码是一样的。关键就在于你用了%d打印。"%d",打印的时候,因为你是8位的,明显应该是short int,编译器自动解释成"hd",注意,最高位是1,所以它被解释成了-126.by:kingbridge ...
char a=255;printf("%d\\n",a),为什么输出是-1
首先,char的表达范围是[-128,+127],因此你给出的初始化value已经越界了;其次,255的值也就是0xFF,因此char中存储这个0xFF,那么最高位1代表符号为,一定是负数;所以最终按照%d打印的话,转换过来也就是-1