Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


etc:users:kmu:quest

Вопрос 1

Вопрос по С++: в классе объявлена константа:

   static const unsigned int MAX = 5;

и переменная:

   int top;

значение top = -1, сравнение top >= (MAX-1), оказывается истинным, получается, что при таком сравнении top приводится к unsigned int (что стало для меня небольшим открытием), так собственно вопрос, а как происходит приведение типов в случае, когда в выражении участвуют unsigned типы

Discussion

jcmvbkbc, 2010/02/04 14:24, 2010/02/04 14:24

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)

Кринкин М Ю, 2010/02/04 16:47

Короче, если размер одинаковый, то приводим к unsigned, иначе к тму типу, который шире

You could leave a comment if you were logged in.
etc/users/kmu/quest.txt · Last modified: 2016/08/08 20:53 by kel