gpt4 book ai didi

c - C 中的(空)无限循环是否未定义行为?

转载 作者:太空狗 更新时间:2023-10-29 16:49:01 25 4
gpt4 key购买 nike

for (;;); 这样的无限循环是 C 中的未定义行为吗? (它是 is for C++ ,但我不知道 C。)

最佳答案

不,for (;;) 语句的行为在 C 中有明确的定义。

N1570 ,这与官方 2011 ISO C 标准基本相同,在第 6.8.5 节第 6 段中说:

An iteration statement whose controlling expression is not a constant expression, that performs no input/output operations, does not access volatile objects, and performs no synchronization or atomic operations in its body, controlling expression, or (in the case of a for statement) its expression-3, may be assumed by the implementation to terminate.

有两个脚注:

An omitted controlling expression is replaced by a nonzero constant, which is a constant expression.

This is intended to allow compiler transformations such as removal of empty loops even when termination cannot be proven.

第一个脚注明确表示 for (;;) 被视为具有常量控制表达式。

规则的要点是在编译器无法证明循环终止时允许优化。但是,如果控制表达式是常量,编译器可以简单地证明循环是否终止,因此不需要额外的权限。

关于c - C 中的(空)无限循环是否未定义行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15595493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com