Каковы правила, используемые C++ для определения типа арифметического выражения с двумя разными целыми типами?Целочисленные правила преобразования C++
В общем, легко решить результат, однако я столкнулся с случаями со знаком/unsigned ints, которые запутывают.
Например, оба приведенные ниже представлены как unsigned int
в VS.
unsigned int us = 0;
int s = 1;
auto result0 = us - s; // unsigned int
auto result1 = s - us; // unsigned int
Это то же самое для других компиляторов? Существуют ли какие-либо конкретные правила для определения типа?
Вы прочитали [документацию] (http://en.cppreference.com/w/cpp/language/auto)? – NathanOliver
Правила те же, что и для вывода типа шаблона, за исключением случая 'auto x {expr};'/'auto x = {expr};'. – Michael
Это почти похоже на вопрос о продвижении по типу, а затем автоматическом выводе. – NathanOliver