变量附值

来源:百度知道 编辑:UC知道 时间:2024/05/06 04:04:32
char ch;
ch=97;
ch=90+7;
ch='90'+'7';
ch='90+7';
ch='97';
ch='a'+'b';
这几个之间有什么区别?
‘90’取低8位 为什么是‘0’ 谢谢

是不是说'90'占了两个字符,而一个char行变量只能寸一个字符 所以把'9'给去掉了

ch=97;
ch=90+7;
这两个直接赋值,即将以右值为ASCII码的字符赋值到ch

ch='90'+'7';
ch='90+7';
因为char类型长度为一字节,所以只取结果的低八位,即

ch='90'+'7'
实际上执行的运算是
ch='0'+'7'=103(以ASCII值计算)
所以ch='g'

ch='90+7'
等价于
ch='7'

同理

ch='97';
等价于
ch='7'

ch='a'+'b'=97+98=195(最高位为1)
这将会使ch在7位ASCII码中有了一个负值,具体如何解释,因C系统而异。
***********************************

因为这两个字符占16位,第一个字符'9'占了高8位(在笔者的计算机上是这样的),低8位存放了字符'0'

上机验证过了
char字符类型本质上是8位的整型(一个字节)
-------------------------------------------

ch=97;
ch=90+7;

以上两个结果相同,都是'a',因为a的ascii码是97
------------------------------------------
ch='90'+'7'; 结果是g

'90'被截断成'0'
结果等于'0' + '7', 也就是48 + 55 = 103
103的ascii码是'g&