C while循环只在if语句为true时运行?

SSp*_*oke 4 c loops if-statement while-loop

我正在看一些C代码,我找到了这一行.

if (temp==NULL)
    while (1) ;
Run Code Online (Sandbox Code Playgroud)

根据我的理解,当你进入一个无限循环时,除非你打破,否则没有出局,这是如何工作的?如果if语句不为NULL,它是否会中断,如果是这样,是什么让它一遍又一遍地检查if语句?

有关更多信息,请查找realboy源代码,该文件为gboy_lcd.c

第304行
https://github.com/guilleiguaran/realboy/blob/ed30dee751c3f78964e71930a8f87d2074362b9b/gboy_lcd.c

对于linux来说,它是一个非常稳定和优秀的gameboy模拟器

pm1*_*100 6

基本上有人正在停止该计划.如果temp为NULL,则程序将在while语句中进入无限循环.我希望在代码中看到一条评论,说明他为什么要这样做.

这在嵌入式/微代码(即运行电视机,冰箱,烟雾探测器......的代码)中非常常见,因为无法停止/崩溃/警报.你唯一能做的就是循环.在开发过程中,您可以使用调试器进入代码以查看发生的情况

PS - 为什么是downvotes-这是一个很好的问题


Alm*_*lmo 5

如果temp是,此代码启动while循环NULL.

while循环一遍又一遍地计算表达式(1),并且每次都不执行任何操作,直到1!= 1,这将永远不会发生.

用Allman支撑书写的更清楚地表明:

if (temp == NULL)
{
    while(1)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

正如评论中指出的那样,这个版本表明它if不属于while.