Знак C расширяется или ноль расширяет константы? - PullRequest
5 голосов
/ 10 июля 2011

Знак С расширяет константы или ноль расширяет их?Например:

int a = 123 & 0x3

расширение нуля 0x3 или расширение знака?Кроме того, в целом, что является расширением нуля в C и что является расширением знака?

Ответы [ 2 ]

6 голосов
/ 10 июля 2011

Стандарт C не предписывает, использует ли реализация 2 дополнения, 1 дополнение или что-то еще. Таким образом, представление отрицательных значений также не обязательно.

Однако в вашем конкретном случае 0x3 является положительным значением, поэтому расширение знака и расширение нуля - это одно и то же!

0 голосов
/ 10 июля 2011

Что касается расширения знака, это зависит от того, являются ли значения знаковыми или беззнаковыми.

Однако в вашем примере старший бит не будет установлен, поэтому это не имеет значения. Результат будет расширен до нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...