为何在C语言中'5' + '9'的运算结果为110?
为什么这段C语言代码输出sum=110?
直接拆解代码里的关键逻辑:
字符的本质是ASCII码值
给char变量赋值'5'和'9'时,存储的不是字符本身,而是它们对应的ASCII编码数值。在ASCII表中:'5'对应的十进制数值是53'9'对应的十进制数值是57
字符运算的隐式转换
执行sum = c1 + c2时,C语言会把char类型的c1和c2自动转换为int类型进行计算:53 + 57 = 110。计算结果会被赋值给char类型的sum,而110在常见的signed char取值范围(-128~127)内,所以能正常存储。printf的格式输出
printf("sum=%d", sum)里的%d是输出十进制整数的格式符,它会把char类型的sum再次提升为int类型,输出其存储的数值110,最终打印出sum=110。
内容的提问来源于stack exchange,提问作者Muhammad Raffey
相关产品推荐
相关产品推荐

