На языке C, что означает "return-0"?

Я имею дело с некоторым C-кодом, который включает

return ~0;

Что это значит? Это очень невозможно для google для...

Ответ 1

~ является побитовым не/дополнением, иначе он меняет все 0 на 1 и наоборот. ~ 0 - это значение со всеми битами, установленными в 1.

Ответ 2

Ключ к ответу на этот класс вопросов при проверке кода заключается в том, чтобы распознать структуру языка, чтобы узнать, какой вопрос задавать. Например, инструкция return требует выражения типа, совместимого с объявленным типом возвращаемого значения для самой функции.

Зная, что ~0 должно быть выражением, это либо очень забавный способ записать число, либо это оператор, который вы не распознаете, применяемый к постоянному нулю. Эта последняя гипотеза легко проверяется, а поиск в googling для "оператора языка C" быстро приведет к десяткам таблиц операторов. Почти любой из них сообщит вам, что оператор ~ является поразрядным, а не унарным оператором, который инвертирует каждый отдельный бит его операнда. В этом конкретном случае, который преобразует целое число со знаком 0 в целое число, представленное со всеми его битами.

На большинстве платформ вы столкнетесь, что целое число имеет значение -1. ​​

Ответ 3

Оператор ~ (тильда) выполняет побитовое дополнение в своем единственном целочисленном операнде.

Дополнение номера означает изменение всех битов 0 до 1 и всех 1 до 0 s

Ответ 4

Во всяком случае, для поисковых запросов со специальными символами, такими как ваш "return ~ 0;" вы можете использовать http://symbolhound.com/

Это очень полезно для программиста.

Ответ 5

Здесь есть две независимые части: return и ~0.

return - оператор возврата. Читайте об этом в своей любимой книге C.

~0 - выражение, состоящее из оператора побитового дополнения ~, применяемого к целочисленной константе 0. Все биты в нулевом значении типа int инвертируются (становятся 1), а результирующее значение int (со всеми битами, установленными в 1) - это то, что оценивает выражение ~0. На двухкомпонентной машине подписанное целочисленное значение с таким битовым рисунком (111...1) будет представлять -1.

Ответ 6

Не равен нулю или True.

Ответ 7

Тильда выполняет побитный комплимент числа 0, возвращающее значение со всеми битами, установленными в 1, с любым размером возвращаемого значения (так что вы получите 0xFF для char и т.д.)