c++ - 为什么“unsigned int”+“unsigned int”会返回“unsigned int”?
问题描述
我相信当您将两个unsigned int
值相加时,返回值的数据类型将是unsigned int
.
但是两个unsigned int
值相加可能会返回一个大于 的值unsigned int
。
那么为什么unsigned int
+unsigned int
返回一个unsigned int
而不是其他一些更大的数据类型呢?
解决方案
这将产生真正邪恶的后果:
您真的希望 1 + 1 成为一种long
类型吗?并(1 + 1) + (1 + 1)
会成为一种long long
类型?它会对类型系统造成严重破坏。
例如,也有可能 、short
、int
和long
都long long
具有相同的大小,并且unsigned
版本也类似。
因此,隐式类型转换规则可能是最好的解决方案。
你总是可以用类似的东西来强迫这个问题
0UL + "unsigned int" + "unsigned int"
推荐阅读
- vue.js - 如何修改子Vue组件中的值
- angular - 嵌套数组上的AngularTS递归过滤器
- c - 对于几乎相同的代码,C 的行为不同
- python - 如何从 python panda 数据框中删除不需要的数据?
- asp.net - 从加入的注册模型中选择事件数据时检索所有与会者数据
- tensorflow - 防止混合来自不同 TFRecords 文件的训练示例
- swift - 实例化子类在 Swift Playground 中有效,但使用类本身却不行
- angular - 命令行界面安装中间的问题
- javascript - 如何让网络用户能够使用代码控制我的代码?
- python - django 在查询集上添加来自反向一对多关系的列