我遇到了以下问题:
以下for循环运行多少次 -
for(;0;)
printf("hello");
Run Code Online (Sandbox Code Playgroud)
我执行了它,它运行了一次.我无法理解如何?
这甚至不会执行一次.我猜你有一个糟糕的编译器?
好.我想你正在使用Turbo C ;-)
编辑:
从C99标准:
6.8.5.3 for语句1声明
for ( clause-1 ; expression-2 ; expression-3 )
语句的行为如下:表达式expression-2是在每次执行循环体之前计算的控制表达式.在每次执行循环体之后,表达式-3被评估为void表达式.如果clause-1是一个声明,它声明的任何变量的范围是声明的剩余部分和整个循环,包括其他两个表达式; 它是在控制表达式的第一次评估之前按执行顺序到达的.如果子句-1是表达式,则在第一次评估控制表达式之前将其计算为void表达式.
它清楚地表明在执行循环之前首先评估条件.任何符合标准的编译器都不应该执行循环for(;0;) {}一次.
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |