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 在计算机中的存储是以二进制补码存放,其二进制数据为01111111 (2^7-1)

    127+1的结果为:10000000

    10000000按有符号输出,就是-128. (这是使用补码的效果,其值为-128,是补码运算的结果,也可以说是一种规定)

追问

可是那就九位字节了

追答

一个字节! 1byte
一个字节8位! 1byte=8bits

追问

我说错了,那就是也九位了啊,不就溢出了吗?100000000。我看的视频说等于零

追答

127=01111111
127+1=10000000
哪里有九位?

追问

算了,等我再看一遍告诉你,我说不清了

追答

-1=11111111
11111111+1=1 00000000 这里产生了九位,溢出,所以高位的1丢弃,结果为0,正好符合-1+1=0的算术法则。

追问

嗯嗯,好的谢谢你,让我在想想。真的真的谢谢你

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-18

追问

啊,为什么有的说等于零

char到底几个字节

第2个回答  2015-11-18
结果是-128追问

额,为什么有的说是零

char到底几个字节

追答

char 是一个字节8个bit,char表示有符号型的,最高位表示符号位。

追问

对啊,八位,可是相加后前八位都是零啊

追答

127的二进制是0111 1111 加 1 后变成 1000 0000 是8bit 怎么是前8位为0呢?

追问

额,我是彻底晕了,视频上说100000000,因为Char为八位一个字节,溢出了,所以一要去掉

追答

你如果真的算不明白,电脑里面有计算器,你可以计算一下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 在计算机中的存储是以二进制补码存放,其二...

...a=129; printf("%d",a); } 输出的为什么是-127?
.因为ascii码的值是从-128~127,所以当超过256时,又再次循环,也就是说a=127;则执行printf("%d" ,a)时,输出的是127,加1,a=128就循环到最小值-128,加2,就到-127

char a = 128; printf("%d", a); 为什么输出结果为-128?
char a = 128;a=1000 0000 ---128 在计算机中,整型类数值是用补码来表示的,1000 0000是一个字节-128的补码,所以,按%d输出就是-128. 并不是你所说的过程中的意义,虽然,表面看你写的没啥错误。

C语言a=3;a+=(a<1)?a:1;printf("%d",a);结果是?
首先,a= 3故(a<1)不成立,所以,a+=1所以a= a+1 = 3+1 = 4printf()输出 输出结果为4没有换行,也没有多余的空格,就是一个简简单单的4,据推测,a是一个整形变量。

a=3; a+=(a<1)?a:1; printf(“%d”,a);
结果是4.“(a<1)?a:1”是一个“条件表达式”。“?”是条件运算符。如果(a<1)条件为真,则条件表达式的值等于a,否则取值1。这里a=3,a<1不为真,所以整个条件表达式(a<1)?a:1的值取1。所以a+=(a<1)?a:1就变成了a+=1,等价于a=a+1。原来a的值为3,所以a+1=4。然后把4再...

char a=128;printf(%x\\n,a); 打印出来的是ff80???
1 0 0 0 0 0 0 0 但是一般在第一位表示的是符号.如你这样编写 char a=128;printf(%d\\n,a);运行的结果是 -128.所以在使用char时 应避免>=128的数 从'const int' 到 'char'数据截断,即标识符转换为更小的类型,从而导致信息丢失.错误的程序就算可以运行得的结果也是匪夷所思的. 就像未...

C语言a=1 printf("%d",a++)答案是什么
答案是1 a++是先把a的值带进运算在自加1 ++a是先自加1,在吧a的值带入运算 如果是 a=1 printf("%d",++a)那么就是2了 希望对你有帮助!!

若定义char a='A',则执行printf("%d",a),屏幕显示
若定义char a='A',则执行printf("%d",a),屏幕显示 65 C语言中,字符型数据和___数据可以通用。整型 输出整型数据长度为10的格式化字符串是 10d 输出浮点数长度为8,小数位长度为2的格式化字符串是 8.2f 若a是int型变量,则执行a=25\/3,a的值为 8 若定义int a=5,则执行a*=5,a的值...

在c语言中,char a='A'; printf ("%d%o", a = a + 1 , a + 'a...
首先,应该说明的是在不同的编译环境中结果是不一样的。在VC++6.0中的规则: printf函数的执行顺序是由右到左的 举个例子1:int a=65,b=20;printf("%d,%d\\n",b=a+1,a=a+1);输出结果是:67,66 而不是:66,66 例子2:int a=65,b=20;printf ("%d,%d",b=a+1,b+1,a=a+1...

...{ int a=3; a+=(a<1)? a:1; printf("%d\\n",a); } 请问它的结果为什么...
很明显,当对条件 a < 1 进行判断时,因为a = 3 因此判断结果为false ,将执行 :号后面的表达式---也就是1---也就是a += 1, 因为a =3 因此 a += 1 的最终结果为4 。 明白了吗? :)

相似回答