永发信息网

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

答案:3  悬赏:50  手机版
解决时间 2021-11-24 08:04
  • 提问者网友:呐年旧曙光
  • 2021-11-24 00:51
C/C++面试题: char x=119; char y=9; char z=x+y; 则z= ?
最佳答案
  • 五星知识达人网友:詩光轨車
  • 2021-11-24 01:23
C++规定char类型的最小存储空间是8位。所以超过8位大小的赋值行为都是未定义的,讨论起来没有意义。如果按8位来讨论:
char是指plain char,依赖编译器决定它是unsigned还是signed
但作为8位的char来计算,char z = 128 应该是溢出了
对于溢出的处理也是未定义的。大部分编译器的做法是“截断”,去掉溢出的高位。这个结果是-128,所以z = -128。总结,z的结果是未定义的
全部回答
  • 1楼网友:低音帝王
  • 2021-11-24 02:20
按它考你的本意,z应该等于-1
因为119+9=128
有符号是-1
无符号是128

这是8位计算机时候的算法
但是现在普遍计算机都是32位的,所以一律有应该等于128
因为32位计算机的-1是65535
  • 2楼网友:青尢
  • 2021-11-24 01:28
119+9=128,即128所对应的字符 š
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯