т.к х не инициализирован -> неопределённое поведение
Ну и что? Переменная может принимать значения от 0 до 0xFFFFFFFF Без разницы, какое у неё будет значение - x || !x всегда должен быть 1
неправильно мыслишь
Не факт кстати) до первой записи она (скорее всего) замаплена на нулевую страницу же
Переменная 32-битная, она не может принимать другие значения
в математике да, но в с++ перед выполнением происходит этап "оптимизаций" от компилятора, с которыми в машинном коде и предстоит выполняться программе. в данном случае, такое неопределённое поведение и такой компилятор просто исключили оператор || и ! и заменили на простой xor с самим собой, который конечно не одно и тоже, но стандарт позволил
gcc себе такого не позволяет
давно C++ превратился в язык для символьных вычислений?
кстати, кто тебе сказал, что int - 32 бита?
Sizeof на годболте
А с каких пор тут можно отправлять стикеры?
ну, зато лишний повод избегать неопределённостей?
в си уже есть пример, когда & и * схлопываются на синтаксическом уровне: &*(int *)NULL — это ок, несмотря на то, что *(int *)NULL это уб. не надо такого еще
С хера ли *(int*)0 это уб?
Как бы он прав
C99 6.5.3.2.4 If an invalid value has been assigned to the pointer, the behavior of the unary * operator is undefined Among the invalid values for dereferencing a pointer by the unary * operator are a null pointer...
На. Удивляйся https://datasheets.raspberrypi.org/rp2040/rp2040-datasheet.pdf A 16kB read-only memory (ROM) is at address 0x00000000. The ROM contents are fixed at the time the silicon is manufactured 147-я страница
а это разве не специфичное поведение платформы?
Обсуждают сегодня