我在fedora 19 64bits下使用gcc 4.8.3
unsigned u1=10, u2=42;
unsigned short us1=10, us2=42;
int main() {
cout << "u1-u2="<<u1-u2<<", us1-us2="<<us1-us2<<endl;
}
Run Code Online (Sandbox Code Playgroud)
结果:u1-u2 = 4294967264,us1-us2 = -32
<<运算符似乎将第二个操作的结果解释为带符号的 short,而它将第一个操作的结果解释为unsigned int