C/C 中的无限循环检测
在 C/C 中,通常使用以下三种构造之一创建无限循环:
- for(;;) {}
- while(1) {} / while(true) {}
- do {} while(1) / do {} while(true)
这些形式的选择主要取决于偏好问题,客观上没有一个是优越的。
语法和语法上的差异行为
-
for(;;) {}: 标准 C 语法,可以追溯到 Kernighan 和 Ritchie 的开创性工作。它被认为是历史性的,但仍然被广泛接受。
-
while(1) {}:在行为上相当于 for(;;) {} 并被广泛使用。现代编译器会针对恒定条件发出编译器警告,这可能是一个缺点。
-
while(true) {}: while(1) {} 的更具可读性的替代方案,但依赖于bool 类型,可能需要包含头文件。
现代编译器行为
现代编译器通常将所有三种形式视为相同,从而产生相同的机器代码。他们认识到这些循环旨在是无限的,并且不执行显式条件检查,从而相应地优化代码。
个人偏好
选择使用哪种形式最终是个人的,并受到以下因素的影响:
-
可读性:一些程序员更喜欢 while(true) {},因为其明显的清晰度。
-
编译器警告: while(1) {} 和 while(true) {} 可能会因条件恒定而触发警告消息.
-
历史遗产: for(;;) {} 由于与早期发展的关联而仍然很受欢迎C.
最终,无限循环的最佳形式是符合程序员的偏好和风格,同时尊重可能存在的任何代码约定或指南的形式。
以上是C/C 中的无限循环:哪种形式最好?的详细内容。更多信息请关注PHP中文网其他相关文章!