鱼鱼大神们 我是新手帮忙看看
#include"stdio.h"void main()
{
char a, b, c;
a = 'a';
b = 'b';
c = a+b;
printf("%d,%d,%d\n",a, b, c);
}
为什么输出的c不是a+b=65+66的值呢?
a和b都是字符型的变量,不能够相加的,虽然字符型可以输出对应的ascii码的整数值但也不能相加 美女!你露了 发表于 2013-9-17 21:00 static/image/common/back.gif
a和b都是字符型的变量,不能够相加的,虽然字符型可以输出对应的ascii码的整数值但也不能相加
那我如果在b=‘b’;后面再命
a=97;
b=98;
这样能输出C等于195么?
字符型变量是可以相加的。
首先'a'值为97,‘b’值为98,和为195。但是字符类型(char)的变量只有8位,正常情况下只能表示-128~127范围内的值,195明显超出了这个范围。是不能输出195的。
由于195的2进制是11000011,这正是-61的补码,所以输出为-61,如果想输出195,可以将c定义为int
对应ASCII‘a’=97 ‘b’=98。所以正常情况下a+b=195,但是字符型只能达到127(参看ASCII表)。因此多出来的会发生溢出,至于怎么溢出的,楼上说的很清楚。 更替的四季 发表于 2013-9-17 21:38 static/image/common/back.gif
字符型变量是可以相加的。
首先'a'值为97,‘b’值为98,和为195。但是字符类型(char)的变量只有8位 ...
支持@@@
如果楼主想要得到a+b,可以将char a, b, c;修改为unsigned char a, b, c; 苹果沃珂 发表于 2013-9-18 11:11 static/image/common/back.gif
支持@@@
如果楼主想要得到a+b,可以将char a, b, c;修改为unsigned char a, b, c;
介个 ...无符号 我不确定他看得懂诶 char 8位的。
范围-128-----127 新手{:1_1:}{:1_1:}{:1_1:} 超过C的范围了。。 更替的四季 发表于 2013-9-17 21:38 static/image/common/back.gif
字符型变量是可以相加的。
首先'a'值为97,‘b’值为98,和为195。但是字符类型(char)的变量只有8位 ...
谢谢啦 我理解了 你把char c 改为 int c ,或者double c .就能计算出你想要的结果了,如果c 被定义为整形,在进行计算时,a+b就会进行进制转换,转换成整形。
学习,支持一下!加油:lol: #include"stdio.h"
void main()
{
char a,b;
int c;
a='a';
b='b';
c=a+b;
printf("%d,%d,%d\n",a,b,c);
}
你的数据类型没有转换 本来想到问答模块来回答问题赚鱼币,突然发现我会的问题都被解决了,呜呜,鱼c论坛的人都好热情啊,支持鱼c 嗯 对头
页:
[1]