Jakie są zasady używane przez C++ do określenia typu wyrażeń arytmetycznych obejmujących dwa różne typy liczb całkowitych?Reguły konwersji liczb całkowitych C++
Generalnie łatwo jest wypracować wynik, jednak natknąłem się na przypadki z podpisanymi/unsigned intami, które są mylące.
Na przykład oba poniższe elementy są wyświetlane pod numerem unsigned int
w VS.
unsigned int us = 0;
int s = 1;
auto result0 = us - s; // unsigned int
auto result1 = s - us; // unsigned int
Czy to samo dotyczy innych kompilatorów? Czy istnieją jakieś szczególne zasady określania typu?
Czy przeczytałeś [dokumentację] (http://en.cppreference.com/w/cpp/language/auto)? – NathanOliver
Zasady są takie same, jak w przypadku odliczenia typu szablonu, z wyjątkiem przypadku 'auto x {wyrażenie};'/'auto x = {wyrażenie};'. – Michael
To prawie wydaje się bardziej jak pytanie o promocję typu, a następnie o automatyczną dedukcję. – NathanOliver