Хрестоматия по программированию на Си в Unix




Приложения. Хрестоматия по программированию на Си в Unix


9. Приложения.

Таблица приоритетов операций языка C++

Операции, расположенные выше, имеют больший приоритет.

Операторы Ассоциативность
1. () [] -> :: . Left to right
2. ! ~ + - ++ -- & * (typecast) sizeof new delete Right to left
3. .* ->* Left to right
4. * / % Left to right
5. + - Left to right
6. << >> Left to right
7. < <= > >= Left to right
8. == != Left to right
9. & Left to right
10. ^ Left to right
11. | Left to right
12. && Left to right
13. Left to right
14. ?: (условное выражение) Right to left
15. = *= /= %= += -= &= ^= |= <<= >>= Right to left
16. , Left to right

Здесь "*" и "&" в строке 2 - это адресные операции; в строке 2 "+" и "-" - унарные; "&" в строке 9 - это побитное "и"; "(typecast)" - приведение типа; "new" и "delete" операторы управления памятью в C++.

Ассоциативность Left to right (слева направо) означает группировку операторов таким образом:

A1 @ A2 @ A3 это ((A1 @ A2) @ A3)

Ассоциативность Rigth to left (справа налево) это

A1 @ A2 @ A3 это (A1 @ (A2 @ A3))

Правила преобразований типов.

В выражениях.

  • Если операнд имеет тип не int и не double, то сначала приводится:

    signed char --> int расширением знакового бита (7) unsigned char --> int дополнением нулями слева short --> int расширением знакового бита (15) unsigned short --> unsigned int дополнением нулями слева enum --> int порядковый номер в перечислимом типе float --> double дробная часть дополняется нулями

  • Если любой операнд имеет тип double, то и другой операнд приводится к типу double. Результат: типа double. Запишем все дальнейшие преобразования в виде схемы:

    если есть то другой результат операнд типа приводится к типу имеет тип if(double) -->double double else if(unsigned long) -->unsigned long unsigned long else if(long) -->long long else if(unsigned int) -->unsigned int unsigned int else оба операнда имеют тип int int




  • Содержание    Вперед