C语言中字符常量可以 参加运算吗?

C语言中字符常量可以参加运算吗?例如:a='1'-2;printf("%d\n",a);return0;我这个结果能输出47,但是老师讲课时说不可以参加运算啊。请各位指点... C语言中字符常量可以 参加运算吗?
例如: a='1'-2;
printf("%d\n",a);
return 0;
我这个结果能输出47,但是老师讲课时说不可以参加运算啊。请各位指点。。谢谢
展开
 我来答
投机士
推荐于2018-03-19 · TA获得超过10.5万个赞
知道大有可为答主
回答量:2.5万
采纳率:0%
帮助的人:3876万
展开全部
  1. 这就要从字符型数据在内存中的存储方式来解释了。

  2. 在C语言中,实际上字符型数据在内存中是以二进制形式存放的,并不是真正的把一个字符存进内存里。在对字符型数据进行相加减运算的时候,系统会首先会将char型数据以隐形的方式转化成int型数据再进行相加减运算的。

  3. 因此,由字符型数据在内存的存储方式来看,字符型数据是可以进行数值运算的,对字符型数据做数字运算实际上就是对字符本身对应的ASSIC码进行相应的数值运算。

adoqq_bd
2012-05-06 · TA获得超过7050个赞
知道大有可为答主
回答量:1818
采纳率:63%
帮助的人:1587万
展开全部
首先你要明白一个概念,没有所谓的字符型变量或者常量,char就是一个整数,范围是-128--+127,而0到127这个范围内的整数有还有另外一种写法,那就是所谓的ASCII字符,比如 'A'就是65的另外一种写法而已,比如要建立一个长度为65的整型数组,那写成int a['A']也是可以的,写成int a['B'-1]也行,int a['B'-('B'-'A')]也没错,而printf函数中的%c就是输出这另外一种写法的格式,所以当int的取值范围落在0--127时,它和char的效果是一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
姝月清风
2012-05-06
知道答主
回答量:4
采纳率:0%
帮助的人:3.1万
展开全部
应该是不可以,对字符常量操作需要用库函数吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梦起ll
2012-05-06
知道答主
回答量:56
采纳率:0%
帮助的人:53万
展开全部
char是特殊的整型,运算时会强制转换成int,值就是他的ascii码值
追问
如果是 a='1'-2;
printf("%c\n",a);
return 0
就不是47了,是/。。怎么回事啊?
追答
你用%c进行格式控制,相当于又进行了一次强制转换,把他变为字符型,字符/的ascii码值就是47
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式