Язык программирования C

Скачать в pdf «Язык программирования C»


■    Иначе, для обоих операндов выполняется расширение целого типа; затем, если один из операндов имеет тип unsigned long int, то и другой преобразуется в unsigned long int.


■    Иначе, если один из операндов имеет тип long int, а другой — unsigned int, то результат зависит от того, представляет ли long int все значения unsigned int; если это так, то операнд типа unsigned int приводится к long int; если нет, то оба операнда преобразуются в unsigned long int.


■    Иначе, если один из операндов имеет тип long int, то и другой приводится к long int.


■    Иначе, если один из операндов— unsigned int, то и другой приводится к unsigned int.


■    Иначе, оба операнда имеют тип int.


В эту часть языка внесены два изменения. Во-первых, арифметические операции с операндами типа float теперь могут выполняться с одинарной точностью, а не только с двойной; в первой редакции языка вся арифметика с плавающей точкой имела двойную точность. Во-вторых, более короткий тип без знака в комбинации с более длинным знаковым типом не распространяет свойство отсутствия знака на тип результата; в первой редакции типы без знака всегда доминировали. Новые правила немного сложнее, но до некоторой степени уменьшают вероятность неожиданных эффектов в комбинациях знаковых и беззнаковых величин. Однако неожиданный результат все же может получиться при сравнении беззнакового выражения со знаковым того же размера.

А.6.6. Связь указателей и целых чисел


К указателю можно прибавлять (и вычитать из него) выражение целочисленного типа; последнее в этом случае преобразуется так, как описано в разделе А.7.7 при рассмотрении операции сложения.


Можно вычитать два указателя на объекты одного типа, принадлежащие к одному массиву; результат приводится к целому числу так, как описано в разделе А.7.7 при рассмотрении операции вычитания.

Скачать в pdf «Язык программирования C»