鱼C论坛

 找回密码
 立即注册
查看: 3420|回复: 16

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

[复制链接]
发表于 2013-9-17 20:43:04 | 显示全部楼层 |阅读模式
1鱼币
#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的值呢?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-17 21:00:27 | 显示全部楼层
a和b都是字符型的变量,不能够相加的,虽然字符型可以输出对应的ascii码的整数值  但也不能相加   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-17 21:04:05 | 显示全部楼层

那我如果在b=‘b’;后面再命
a=97;
b=98;
这样能输出C等于195么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-17 23:01:28 | 显示全部楼层
对应ASCII‘a’=97 ‘b’=98。所以正常情况下a+b=195,但是字符型只能达到127(参看ASCII表)。因此多出来的会发生溢出,至于怎么溢出的,楼上说的很清楚。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-18 11:11:37 | 显示全部楼层
更替的四季 发表于 2013-9-17 21:38
字符型变量是可以相加的。
       首先'a'值为97,‘b’值为98,和为195。但是字符类型(char)的变量只有8位 ...

支持@@@
如果楼主想要得到a+b,可以将char a, b, c;修改为unsigned char a, b, c;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-18 17:40:26 | 显示全部楼层
苹果沃珂 发表于 2013-9-18 11:11
支持@@@
如果楼主想要得到a+b,可以将char a, b, c;修改为unsigned char a, b, c;

介个 ...无符号 我不确定他看得懂诶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-18 22:00:26 | 显示全部楼层
char 8位的。
范围  -128  -----  127
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-20 01:27:22 | 显示全部楼层
新手{:1_1:}{:1_1:}{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-20 01:47:33 | 显示全部楼层
超过C的范围了。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-20 13:34:38 | 显示全部楼层
更替的四季 发表于 2013-9-17 21:38
字符型变量是可以相加的。
       首先'a'值为97,‘b’值为98,和为195。但是字符类型(char)的变量只有8位 ...

谢谢啦   我理解了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-21 19:56:17 | 显示全部楼层
你把char c 改为 int c ,或者double c .就能计算出你想要的结果了,如果c 被定义为整形,在进行计算时,a+b就会进行进制转换,转换成整形。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-26 09:06:21 | 显示全部楼层

学习,支持一下!加油:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-19 19:36:29 | 显示全部楼层
你的数据类型没有转换
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-19 20:12:31 | 显示全部楼层
本来想到问答模块来回答问题赚鱼币,突然发现我会的问题都被解决了,呜呜,鱼c论坛的人都好热情啊,支持鱼c
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-19 21:23:31 | 显示全部楼层
               嗯                                 对头
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 08:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表