#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 является:C++ 11 тип (подписанный + без знака)?
unsigned
Я уверен, что это либо не определено или определяется реализацией поведение - но я не могу показаться, чтобы соединить точки со стандартом.
Можете ли вы сказать мне, где в стандарте это сказано?
Да, это стандартное поведение. unsigned types являются «большими», чем подписанные типы того же размера. – Mysticial
Почему вы говорите, что это неопределенное или определенная реализация, что вы ожидаете? – ChiefTwoPencils
При работе на 'signed' и' unsigned', 'unsigned' выигрывает. У меня были серьезные проблемы, возникшие из-за этого факта ... Урок, извлеченный из жизни. – 2013-03-09 19:15:15