c中while()循环的不明确行为
由于while循环终止了对false表达式的执行,尽管下面给出了不同的输出。无法追踪c中while()循环的不明确行为,c,C,由于while循环终止了对false表达式的执行,尽管下面给出了不同的输出。无法追踪 #include <stdio.h> int main() { //code snippet 1 while(0){ ; } printf("C"); return 0; } 及 由于printf()函数返回打印的字符数,并且没有打印任何字符,因此它不应导致无限循环,因为0的逻辑值为false。printf(“%d”)的返回值不是0(实际上是
#include <stdio.h>
int main()
{
//code snippet 1
while(0){
;
}
printf("C");
return 0;
}
及
由于printf()函数返回打印的字符数,并且没有打印任何字符,因此它不应导致无限循环,因为0的逻辑值为false。printf(“%d”)的返回值不是0(实际上是未定义的行为)。
请参见它不会返回
0
。尝试运行printf(“%d”,printf(“%d”)代码>您可以参考printf的行为,如果没有变量名,则该行为取决于输出编译器。我在Windows上使用minGW谢谢,RishikeshRaje sshashank124,实际上它使用了一些垃圾值什么意思,没有打印字符?很明显,它一次又一次地打印字符0
!您认为哪个呼叫正在打印0
?打印c
的不是第二个。
c
#include <stdio.h>
int main()
{
//code snippet 2
while(printf("%d")){
;
}
printf("c");
return 0;
}
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000