Я новичок в C++, но я нахожу это поведение auto
странным:
class A{};
int main() {
A a;
auto x = -(sizeof(a));
cout << x << endl;
return 0;
}
Переменная x в этом случае unsigned
но я использовал унарный минус-оператор при инициализации переменной. Как получилось, что рассматривается только возвращаемый тип sizeof
(std::size_t
), но не тот факт, что сохраненный номер будет отрицательным из-за используемого оператора?
Я знаю, что size_t
является неподписанным int.
Я пробовал это с GCC 8.1.0 и C++ 17.