char c = 250;
c + = 8;
上面的操作我不明白如何发生溢出,执行后c的值是多少?
最佳答案
char c = 250;
c + = 8;
当 char
为 8 位无符号时,c
的值首先为 250,然后为 250 + 8 --> 258。然后 258 被分配给 c
并转换为 2 个由于将超出范围的值分配给 unsigned char
的转换规则。
当 char
为 8 位有符号时,c
由于转换首先将具有一个实现定义的值> 将超出范围的 int
常量 250 转换为 char
,也许是 -6
。由于加上 8,所以为 2。
根据溢出的C定义,不会发生溢出,只是涉及缩小的转换。
关于c - 溢出的变量的值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62498760/