2013-02-17 160 views
0

为什么以下行C++和 - (无符号整型)

auto k = -10u; 

返回K = 4294967286?不应该它typecast - 10未签名为有符号整数?

+2

为什么会产生一元的* *'-'改变其操作数的类型?应用于某种数字类型的所有其他运算符都返回相同类型。 – 2013-02-17 15:55:22

+1

@BasileStarynkevitch,为什么不呢? – RiaD 2013-02-17 16:06:40

+0

因为大多数C++运算符会给出与其操作数相同类型的结果。你为什么要为一元'-'做例外?不是C++已经太复杂了? – 2013-02-17 16:07:42

回答

8

不应该。

- (无符号类型)是无符号类型。

任何操作适用于同一类型的内置整数有结果