Intereting Posts
Вредоносная проверка исходного файла? Как написать приложение Windows без использования WinMain? Как получить int из stdio в C? Как использовать файл заголовка в c Можно добавить другой элемент в существующий тип enums? Как определить, нажата ли клавиша удаления на клавиатуре? Как я могу объяснить пробелы, изменяя каждое слово в предложении? memcmp, но нужно сравнить блок с фиксированным значением почему этот цикл работает бесконечно в c? Конец файла возникает при чтении char 0x1A как c компилятор обрабатывает возвращаемое значение struct от функции, в ASM печать члена возвращенной структуры Как мне заставить SWIG автоматически обертывать эмулированный «этот» указатель на C-структуру? Скобки нужны для того, чтобы получить адрес элемента struct от указателя на структуру, как в «& (s-> var)« vs »& s-> var»? Gtk Ckipboard: вставка файлов из источника с пользовательской схемой URI

двойное отрицание в C: гарантировано ли оно вернуть 0/1?

Является ли !!(x) гарантированным стандартом для возврата 0/1?

Обратите внимание, что я не спрашиваю о c ++, где определяется тип bool.

Да, на C99, см. §6.5.3.3 / 4:

Результат оператора логического отрицания! равен 0 , если значение его операнда сравнивается не равным 0, 1, если значение его операнда сравнивается с равным 0. Результат имеет тип int . Выражение! E эквивалентно (0 == E).

Итак, !x и !!y может давать только 0 или 1, как int s.

Для других операторов на C99 см. Также «Истинный» результат из>, <,!, &&, || или == определено?

Это комментарий, но он слишком длинный. (Пожалуйста, не голосуйте на этом основании.)

Я нашел очень странный документ, ища стандарт, чтобы ответить на ваш вопрос: Новый стандарт C: экономический и культурный комментарий. И они говорят, что наука недофинансирована. ( Вот полный, 2083 стр. 10.5MB PDF. Первая ссылка – это только раздел о двойном отрицании.)

Это говорит об двойном отрицании: «Двойной негатив очень часто интерпретируется как положительное утверждение на английском языке (например,« Не известно, что двойные отрицания встречаются в источнике С »). Те же семантики, которые применяются в C. Однако на некоторых языках (например, на испанском языке) двойной негатив интерпретируется как более негативное высказывание (это использование происходит в случайной английской речи, например, «вы еще ничего не видели», но это редко и нахмурился на социальном уровне 1 ).

Я считаю, что автор был бы счастлив, зная, что это бесполезно для ответа на ваш реальный вопрос (ответ на который да.)