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)
这对其他编译器来说是一样的吗?是否有确定类型的具体规则?
这一切都很明确.
1是一个签名的文字.实际上,如果您需要它unsigned,则需要使用十六进制或八进制表示法,适当的后缀(例如u)或强制转换.
如果遇到的算术运算,其具有signed int与一个unsigned int作为参数,然后将signed int被转换到一个unsigned int类型.