草房子 发表于 2013-9-17 20:43:04

鱼鱼大神们 我是新手帮忙看看

#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的值呢?

美女!你露了 发表于 2013-9-17 21:00:27

a和b都是字符型的变量,不能够相加的,虽然字符型可以输出对应的ascii码的整数值但也不能相加   

草房子 发表于 2013-9-17 21:04:05

美女!你露了 发表于 2013-9-17 21:00 static/image/common/back.gif
a和b都是字符型的变量,不能够相加的,虽然字符型可以输出对应的ascii码的整数值但也不能相加

那我如果在b=‘b’;后面再命
a=97;
b=98;
这样能输出C等于195么?

更替的四季 发表于 2013-9-17 21:38:00

字符型变量是可以相加的。
       首先'a'值为97,‘b’值为98,和为195。但是字符类型(char)的变量只有8位,正常情况下只能表示-128~127范围内的值,195明显超出了这个范围。是不能输出195的。
       由于195的2进制是11000011,这正是-61的补码,所以输出为-61,如果想输出195,可以将c定义为int

正在写代码 发表于 2013-9-17 23:01:28

对应ASCII‘a’=97 ‘b’=98。所以正常情况下a+b=195,但是字符型只能达到127(参看ASCII表)。因此多出来的会发生溢出,至于怎么溢出的,楼上说的很清楚。

苹果沃珂 发表于 2013-9-18 11:11:37

更替的四季 发表于 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 17:40:26

苹果沃珂 发表于 2013-9-18 11:11 static/image/common/back.gif
支持@@@
如果楼主想要得到a+b,可以将char a, b, c;修改为unsigned char a, b, c;

介个 ...无符号 我不确定他看得懂诶

wangjie5540 发表于 2013-9-18 22:00:26

char 8位的。
范围-128-----127

雪忆 发表于 2013-9-20 01:27:22

新手{:1_1:}{:1_1:}{:1_1:}

my_angel 发表于 2013-9-20 01:47:33

超过C的范围了。。

草房子 发表于 2013-9-20 13:34:38

更替的四季 发表于 2013-9-17 21:38 static/image/common/back.gif
字符型变量是可以相加的。
       首先'a'值为97,‘b’值为98,和为195。但是字符类型(char)的变量只有8位 ...

谢谢啦   我理解了

血色熊猫 发表于 2013-9-21 19:56:17

你把char c 改为 int c ,或者double c .就能计算出你想要的结果了,如果c 被定义为整形,在进行计算时,a+b就会进行进制转换,转换成整形。

玉宁417 发表于 2013-9-26 09:06:21


学习,支持一下!加油:lol:

花开淡墨痕 发表于 2013-11-19 16:55:50

#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);
}

BoPo 发表于 2013-11-19 19:36:29

你的数据类型没有转换

Diu 发表于 2013-11-19 20:12:31

本来想到问答模块来回答问题赚鱼币,突然发现我会的问题都被解决了,呜呜,鱼c论坛的人都好热情啊,支持鱼c

莫名C 发表于 2013-11-19 21:23:31

               嗯                                 对头
页: [1]
查看完整版本: 鱼鱼大神们 我是新手帮忙看看