我想知道'while'语句的执行顺序以及如何到达以下代码片段的输出:
SNIPPET 1:
int main()
{
int a;
a=10;
do
while(a++<10);
while(a++<=11);
printf("%d",a);
}
输出 14
SNIPPET 2:
int main()
{
int a;
a=10;
do
while(a++<10);
while(a++<=11);
while(a++<=12);
printf("%d",a);
}
输出 15
答案 0 :(得分:4)
摘录1:
do
while(a++<10);
while(a++<=11);
可以改写为:
do {
while(a++<10);
} while(a++<=11);
最初a
为10
。
a = 10
,条件(a++<10) = false
,现在a = 11
a = 11
,条件(a++<=11) = true
,现在a = 12
a = 12
,条件(a++<10) = false
,现在a = 13
a = 13
,条件(a++<=11) = false
,现在a = 14
因此打印14
。
小部件2可以重写为
do {
while(a++<10);
} while(a++<=11);
// a becomes 14 now
while(a++<=12);
此处的上半身操作部分类似于代码段1,因此{do} while循环后a
将为14
。
在此条件之后,(a++<=12)
将false
,a
将增加至15
。
因此打印15
。
注意:使用大括号并保持代码清洁&amp;容易理解:)
答案 1 :(得分:2)
attr (可选)执行 声明 ,(表达式);
如您所见,语句不是可选的,您无法编写do while(ex);
- 这是一个错误。带有空语句的最短形式是这样的:do ; while(ex);
。
知道这一点,您可以发现do while
循环中的语句实际上是单个while
,而不是空语句。
答案 2 :(得分:-1)
由于您不使用括号,因此您的代码不清楚各种执行/执行时间的执行情况。
比较以下片段:
#include <stdio.h>
int main()
{
int a;
a=10;
do { } while(a++<10);
while(a++<=11) {}
printf("%d",a);
}
/* Output: 13 */
和
#include <stdio.h>
int main()
{
int a;
a=10;
do { while(a++<10); } while(a++<=11);
printf("%d",a);
}
/* Output: 14 */
所以:如果有疑问,请使用括号。