На языке C что означает" return ~0"?
Я имею дело с некоторым кодом C, который включает
return ~0;
что это значит? Это практически невозможно для google...
7 ответов
~ является побитовым не / дополнением, он же изменяет все 0 на 1 и наоборот. ~0-это значение со всеми битами, равными 1.
ключ к ответу на этот класс вопросов при проверке кода заключается в том, чтобы распознать достаточно структуры языка, чтобы знать, какой вопрос задать. Например,return
оператор требует выражения типа, совместимого с объявленным типом возврата для самой функции.
зная, что ~0
должно быть выражение, это либо действительно забавный способ написать число, либо это оператор, который вы не узнаете, примененный к постоянному нулю. Последнее гипотеза легко проверяется, и поиск в гугле "оператора языка C" быстро приведет к десятки таблиц операторов. Почти ни один из которых скажу вам, что ~
оператор является побитовым, а не унарным оператором, который инвертирует каждый отдельный бит своего операнда. В этом конкретном случае преобразуется целое число со знаком 0
к целому числу, представленному со всеми его битами.
на большинстве платформ вы столкнетесь, что целое число имеет значение -1.
на ~
(tilde) оператор выполняет побитовое дополнение к его одному целочисленному операнду.
дополнение числа означает изменение всех 0
bits to 1
и 1
s до 0
s
в любом случае, для поисковых запросов со специальными символами, такими как ваш "return ~0;" вы можете использовать http://symbolhound.com/
Это довольно полезно для программиста.
здесь есть две независимые части: return
и ~0
.
return
является оператором return. Читайте об этом в своей любимой книге с.
~0
- выражение, состоящее из побитового оператора дополнения ~
применяется к целочисленной константе 0
. Все биты в нулевом значении типа int
инвертируются (становятся 1) и результирующие int
значение (со всеми битами, установленными на 1) - это то, что ~0
выражение. На двухкомпонентной машине a знаковое интегральное значение с таким битовым шаблоном (111...1
) будет представлять -1
.
Тильда делает побитовый комплимент числа 0, которое возвращает значение со всеми битами, установленными в 1, с любым размером возвращаемого значения (так что вы получите 0xFF для символа и т. д.)