etc:users:kmu:quest
Вопрос 1
Вопрос по С++: в классе объявлена константа:
static const unsigned int MAX = 5;
и переменная:
int top;
значение top = -1, сравнение top >= (MAX-1), оказывается истинным, получается, что при таком сравнении top приводится к unsigned int (что стало для меня небольшим открытием), так собственно вопрос, а как происходит приведение типов в случае, когда в выражении участвуют unsigned типы
etc/users/kmu/quest.txt · Last modified: 2016/08/08 20:53 by kel
Discussion
iso14882-C++98, пункт 5:9 описывает обычные арифметические преобразования:
если хотя бы один unsigned long, второй приводится к unsigned long;
иначе, если один – long, а другой – unsigned int, то если long шире чем int, int приводится к long, иначе – оба приводятся к unsigned long;
иначе, если один – long (а другой – int), то int приводится к long;
иначе, если один – unsigned (а другой – int), int приводится к unsigned;
иначе int (а любые другие более узкие типы приводятся к int/unsigned посредством integral promotions, пункт 4.5)
Короче, если размер одинаковый, то приводим к unsigned, иначе к тму типу, который шире