C++整数转换规则

Jem*_*ker 5 c++ type-conversion

C++使用什么规则来确定涉及两种不同整数类型的算术表达式的类型?

一般来说,很容易找出结果,但是我遇到了一些令人困惑的签名/无符号整数的情况.

例如,以下两者都出现unsigned int在VS中.

unsigned int us = 0;
int s = 1;

auto result0 = us - s; // unsigned int
auto result1 = s - us; // unsigned int
Run Code Online (Sandbox Code Playgroud)

这对其他编译器来说是一样的吗?是否有确定类型的具体规则?

Bat*_*eba 5

这一切都很明确.

1是一个签名的文字.实际上,如果您需要它unsigned,则需要使用十六进制或八进制表示法,适当的后缀(例如u)或强制转换.

如果遇到的算术运算,其具有signed int与一个unsigned int作为参数,然后将signed int转换到一个unsigned int类型.

  • "积分转换的所有细节都取决于目的地类型".绝对是**永远不会**的情况. (2认同)