Почему эта неинициализированная логическая переменная всегда начинается с 0?Linux

Ответить
Anonymous
 Почему эта неинициализированная логическая переменная всегда начинается с 0?

Сообщение Anonymous »

Прежде всего, я знаю, что это UB и технически может случиться что угодно. Но что касается этого фрагмента кода, скомпилированного с -O0 для целевого x86_64-linux-gnu, почему он никогда не печатает «правдиво»?

Код: Выделить всё

#include 
#include 

int test(void)
{
bool value;
if (value)
{
printf("truthy");
}
printf("Value: %d", value);
}

int main(void)
{
double buffer[80000];
buffer[10] = 0;
test();
}
Godbolt
Я ожидаю, что значение будет в основном случайным, чего мне не хватает?
РЕДАКТИРОВАТЬ: Я говорю здесь о C, но если есть какие-либо различия с C++, меня они тоже интересуют.

Подробнее здесь: https://stackoverflow.com/questions/791 ... start-at-0
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»