C/C++面试题: char x=119; char y=9; char z=x+y; 则z= ?

发布网友

我来回答

1个回答

热心网友

C++规定char类型的最小存储空间是8位。所以超过8位大小的赋值行为都是未定义的,讨论起来没有意义。如果按8位来讨论:
char是指plain
char,依赖编译器决定它是unsigned还是signed
但作为8位的char来计算,char
z
=
128
应该是溢出了
对于溢出的处理也是未定义的。大部分编译器的做法是“截断”,去掉溢出的高位。这个结果是-128,所以z
=
-128。总结,z的结果是未定义的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com