c中while()循环的不明确行为

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(实际上是

由于while循环终止了对false表达式的执行,尽管下面给出了不同的输出。无法追踪

#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