#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
나는이 정의되지 않았거나 구현 정의 행동 중 하나입니다 확신합니다 -하지만 난 표준과 점을 연결 수없는 것.
표준에서 이것이 무엇이라고 말 할 수 있습니까?
예,이 표준 동작입니다. 부호없는 유형은 동일한 크기의 서명 된 유형보다 "크다". – Mysticial
왜 정의되지 않았거나 구현이 정의되었는지, 어떻게 될 것으로 예상됩니까? – ChiefTwoPencils
'signed'와 'unsigned'로 동작 할 때,'unsigned'가 우선합니다. 나는이 사실에서 한 번 심각한 문제를 일으켰습니다 ... 수업은 인생에 대해 배웠습니다. –