Это пример, иллюстрирующий мой вопрос, который включает в себя гораздо более сложный код, который я не могу опубликовать здесь.
#include <stdio.h>
int main()
{
int a = 0;
for (int i = 0; i < 3; i++)
{
printf("Hello\n");
a = a + 1000000000;
}
}
Эта программа содержит поведение undefined на моей платформе, потому что a
будет переполняться в третьем цикле.
Имеет ли значение целая программа поведение undefined или только после фактического переполнения ? Может ли компилятор скомпрометировать, что переполнение a
будет, чтобы оно могло объявить весь цикл undefined и не пытаться запускать printfs, даже если все они происходят до переполнения?
(Tagged C и С++, хотя и разные, потому что меня будут интересовать ответы для обоих языков, если они разные.)