c++ - int和short处理有符号溢出的区别
问题描述
有符号溢出int
是未定义的行为:
int a = INT_MAX;
a += 1; // Undefined Behavior
的相同操作short
是实现定义的(如果short
小于int
):
short a = SHRT_MAX;
a += 1; // Implementation defined
它是实现定义的,因为a
首先被提升为int
(通常比 更宽的类型),并且在添加之后,如果值不能在 a 中表示,short
则结果将转换为实现定义的。short
short
我说得对吗?如果是,为什么有区别?两者都是未定义的行为或定义的实现不是合乎逻辑的吗?
解决方案
推荐阅读
- php - PHPSpreadsheet,绘图大小不正确
- woocommerce-bookings - 如何创建这样的表格?https://www.bark.com/en/ca/
- rust - 当我不在循环中声明变量时,为什么我的代码在 Rust 中失败
- javascript - 对象文字:变量的定义如何填充对象?(没有声明键)
- javascript - 多人井字游戏
- dns - dig AAAA 命令返回什么?
- java - 在 Java 中解析 DOM 时需要创建类吗?
- c - Printf 函数不适用于 char
- html - 我是 JSP 新手,我正在制作注册页面,但我的 Firefox 浏览器没有显示图像,我使用的是 Kubuntu OS
- c++ - 为什么使用字符串而不是自动修复此错误?