Ключ к ответу на этот класс вопросов при проверке кода заключается в распознавании достаточного количества структуры языка, чтобы знать, какой вопрос задавать. Например, для оператора return
требуется выражение типа, совместимого с объявленным типом возврата для самой функции.
Зная, что ~0
должно быть выражением, это либо действительно забавный способ написать число, либо оператор, который вы не узнаете, примененный к константе ноль. Эта последняя гипотеза легко проверяется, и поиск в Google для «оператора языка Си» быстро приведет к десяткам таблиц операторов . Почти любой из из которых скажет вам, что оператор ~
является битно-не унарным оператором, который инвертирует каждый отдельный бит своего операнда. В данном конкретном случае это преобразует целое число со знаком 0
в целое число, представленное со всеми установленными битами.
На большинстве платформ встречается, что целое число имеет значение -1.