• сишечка Я написал && вместо &. Смотрю в это место, и не вижу разницы.
    У меня включены чуть ли не все возможные ворнинги, но почему-то конпелятор всё равно не поругался, что я применяю && к числам, а не булям.
    ♡ recommended by @juick
  • Разве були в сях не тупо 1 и 0?
  • @lurker, Уже 26 лет как \_Bool это настоящий отдельный тип.
  • The logical-AND operator produces the value 1 if both operands have nonzero values
    Непонятно, с какого хрена в сишечке должна быть запрещена совершенно легитимная операция.
  • @vt, запрещена — нет, но предупредить-то можно было бы.
  • @Strephil, Предупредить, что это операция сравнивает числа, когда ты передал числа? Интересно. Как раз наоборот бы лучше предупреждал.
  • @Strephil, А вот битовую арифметику, из-за которой ты опять наделал багов, надо бы запретить!
  • @vt, Ну или да, ввести для нее особые операторы, а не те же самые закорючки, и предупреждать, что эти закорючки устарели и пишите нормальные операторы
  • во я позавчера удивлялась, когда поставила == вместо = и оно даже не матюгнулось, скомпилировалось, запустилось, а лампочка мигает не правильно, до чего я доискала ошибку.
  • @Anonymous, The <stdbool.h> header shall define the following macros:

    bool
    Expands to _Bool.
    true
    Expands to the integer constant 1.
    false
    Expands to the integer constant 0.

    Тьі походу пьітаешься меня наебать
  • @lurker, Ага:

    If _Bool is declared with a value greater than 1, it stores the number as 1

    все таки есть разница
  • @lurker, Для логического сравнения — нет разницы, разница есть в битовой арифметике, которую он ошибочно использовал и успешно прострелил себе ногу
  • @vt, Ну то есть вместо битовой арифметики использовал логическое сравнение
  • @lurker, 1. В стандарте 23 года true и false это теперь настоящие константы, а не макросы.
    2. Начиная с 2017 года в glibc это описано вот так:


    #if defined __STDC_VERSION__ && __STDC_VERSION__ > 201710L
    #define true ((_Bool)+1u)
    #define false ((_Bool)+0u)
    #else
    #define true 1
    #define false 0
    #endif

    То есть не просто "integer constant", а целочисленная константа типа "\_Bool".
  • для решения таких проблем в средах разработки и других инструментах используют синтаксические анализаторы
  • @syncro, анализатор уже есть внутри конпелятора, зачем мне ещё один?
  • @Strephil, ну канпелятор полагает, что ты профи и знаешь, что делаешь, а анализатор наоборот
  • @syncro, Красноглазый дурачок не может себе признаться, что у него продукт говно, он ласково называет это "знает что делаешь"
  • @Strephil, Сторонние производители могут сделать анализ лучше, конкуренция