任何人都知道为什么以及如何工作?将打印什么
Anyone know why and how this works? What will be printed
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) break;
return 0;
}
谁能解释一下这是如何工作的?
为什么它打印 32?
当我移除制动器时,它是无限循环并打印 12?
printf("3")
在 for 循环初始化时被调用。
printf("2")
被调用以查看循环迭代是否应该终止。
printf() returns 它打印的字符数,在这两种情况下都是 1,因此循环决定执行。
循环体就是break
,所以循环在那个点终止,程序结束。
首先,printf ("3")
被执行,所以它打印3
。然后执行printf("2")
,打印2
。因为 printf()
的 return 值是它打印的字符数,在本例中是 1
,并且因为 1
是一个非零值,所以循环继续body。 body中的第一条语句是break
,意思是退出循环。所以循环终止。所以屏幕上的结果是 32
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) break;
return 0;
}
谁能解释一下这是如何工作的? 为什么它打印 32? 当我移除制动器时,它是无限循环并打印 12?
printf("3")
在 for 循环初始化时被调用。
printf("2")
被调用以查看循环迭代是否应该终止。
printf() returns 它打印的字符数,在这两种情况下都是 1,因此循环决定执行。
循环体就是break
,所以循环在那个点终止,程序结束。
首先,printf ("3")
被执行,所以它打印3
。然后执行printf("2")
,打印2
。因为 printf()
的 return 值是它打印的字符数,在本例中是 1
,并且因为 1
是一个非零值,所以循环继续body。 body中的第一条语句是break
,意思是退出循环。所以循环终止。所以屏幕上的结果是 32