首页 > 解决方案 > 为什么“unsigned int”+“unsigned int”会返回“unsigned int”?

问题描述

我相信当您将两个unsigned int值相加时,返回值的数据类型将是unsigned int.

但是两个unsigned int值相加可能会返回一个大于 的值unsigned int

那么为什么unsigned int+unsigned int返回一个unsigned int而不是其他一些更大的数据类型呢?

标签: c++types

解决方案


这将产生真正邪恶的后果:

真的希望 1 + 1 成为一种long类型吗?并(1 + 1) + (1 + 1)会成为一种long long类型?它会对类型系统造成严重破坏。

例如,也有可能 、shortintlonglong long具有相同的大小,并且unsigned版本也类似。

因此,隐式类型转换规则可能是最好的解决方案。

你总是可以用类似的东西来强迫这个问题

0UL + "unsigned int" + "unsigned int"

推荐阅读