c语言中,c2=c1+'a'—'A'是什么意思

Python020

c语言中,c2=c1+'a'—'A'是什么意思,第1张

楼主的代码不全,之前应该是有int c1,c2的定义吧,两个单引号''中有个字符也可以表示整数的,因为字母a——z有对应的ascll码,a对应97,A对应65(这个去查ascll码表就能查到,每个字母有唯一对应的ascll码,也就是一个整数,这是计算机存储字符的方式),所以上式实际上等同于c2=c1+97-65

同样的,你也可以定义 char cData = 65实际上也等同于 char cData = 'A'

c2和c3都有截断误差问题,但c2还牵扯负数存储的问题

1000的二进制是:1111101000,而一个char型字符的大小是1个字节(8位),当一个较大类型的值赋给较小类型的变量时,会产生截断误差,并且是这样处理:把较大类型的低位(截多少位要看较小类型是几位的,char是8位的,所以截取最后8位)截取下来赋值给c2,于是c2的二进制值是11101000,而char是带符号类型的(unsigned char 是不带符号的),计算机里规定最高位为符号位,为1的话该值就是个负数,为0的话是正数,且负数在计算机里一般是按补码存储的,而c2的原码为10011000,即-24,而一个字节的负数打出的字符好像都是问号

这样c3也就好理解了