假设程序员忘记初始化他的一个自动变量,并且他使用了它的值,从而调用了未定义的行为.
... int i = 0,j; ... printf("value of 'j': %d\n",j); ... ... char buf[256]; fputs("Enter query:",stdout); fgets(buf,sizeof(buf),stdin); ... //process input ... perform other tasks
程序员注意到屏幕上出现了乱码,并意识到他的程序是错误的,但它并没有崩溃,反正还在继续.
假设在此之后,程序提示用户输入并期望处理它,显示结果并执行所有独立于未初始化变量的其他任务,鼓励程序员停止使用该程序,修复错误,重新编译和运行?该计划的其余部分是否会不一致?
解决方法
一旦达到具有未定义行为的语句,则整个程序的行为是未定义的.
矛盾的是,之前运行的语句的行为也是未定义的.