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

如题所述

char x=119; char y=9; char z=x+y;
119+9=128,因为是有符号数,所以结果Z的值应该为-128。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-23
C++规定char类型的最小存储空间是8位。所以超过8位大小的赋值行为都是未定义的,讨论起来没有意义。如果按8位来讨论:char是指plain char,依赖编译器决定它是unsigned还是signed但作为8位的char来计算,char z = 128 应该是溢出了,对于溢出的处理也是未定义的。大部分编译器的做法是“截断”,去掉溢出的高位。这个结果是-128,所以z = -128。总结,z的结果是未定义的。本回答被网友采纳
第2个回答  2015-10-26
z= 0x80 ;-128
相似回答