Почему эта неинициализированная логическая переменная всегда начинается с 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

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