c - 溢出的变量的值是多少?

标签 c

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/

相关文章:

输入字符而不是 int 时的 C 无限循环

c - 虽然我的 INT0 初始化为数字输入,但它仍然给出 2.8V,这使得按钮并没有真正做出改变

c - gdb 在 Centos 上找不到调试信息

c - wait() & 在 parent 循环 linux

c - 减少 if 语句

c - 指针运算

c - 总线错误。无法访问内存

c - C/C++ 中#define 宏的正确顺序

c - 使用 LoadRunner/Performance Center 测试 Web 服务

c - 是否可以从 so(共享对象)文件中恢复所有代码?