3
下面是从C++总理第五:什么时候int值通常转换为无符号?
如果我们使用两个无符号和在算术表达式诠释值,int值通常被转换成无符号的。
我试图以下代码:
int i = -40;
unsigned u = 42;
unsigned i2 = i;
std::cout << i2 << std::endl; // 4294967256
std::cout << i + u << std::endl; // 2
对于i + u
,如果i
转换为unsigned
,应当4294967256
,然后i + u
不能等于2
。
是否int
如果我们在算术表达式中同时使用unsigned
和int
值,总是将值转换为unsigned
?
我为什么不能1 + u'不等于2? –
根据规则,表达式'i + u','i'被转换为'4294967256'。 – chenzhongpu
您的问题可能有点偏离。更明显的问题可能是*“为什么 - 如果这个规则真的被应用了,我还能得到答案'2'吗?”* –