#include <iostream>
#include <typeinfo>
using namespace std;
int main()
{
int s = 2;
unsigned int u = 3;
auto k = s + u;
if (typeid(k) == typeid(s))
cout << "signed" << endl;
else if (typeid(k) == typeid(u))
cout << "unsigned" << endl;
else
cout << "error" << endl;
}
GCC 的这个程序的输出是:
unsigned
我很确定这是未定义或实现定义的行为 - 但我似乎无法将这些点与标准联系起来。
你能告诉我它在标准中的哪个地方这么说吗?