首页 > 解决方案 > 有人可以解释while循环中给出的条件吗

问题描述

我想知道在下面给出的代码中循环检查的条件是什么 这里是代码

#include<stdio.h>
int main(){
    while (!printf("hello owrld"));
    return 0;
}

标签: cloopswhile-loop

解决方案


它正在检查printf()返回的内容(打印的字符数,或表示错误的负值)是否为零。


引自N1570 7.21.6.1 fprintf 函数:

fprintf 函数返回传输的字符数,如果发生输出或编码错误,则返回负值。

引自 N1570 7.21.6.3 printf 函数:

printf 函数等效于 fprintf,其参数 stdout 置于 printf 的参数之前。

引用 N1570 6.5.3.3 一元算术运算符:

逻辑否定运算符的结果!如果其操作数的值比较不等于 0,则为 0,如果其操作数的值比较等于 0,则为 1。结果的类型为 int。表达式 !E 等价于 (0==E)。


推荐阅读