gpt4 book ai didi

c - 以 printf 作为参数的 for 循环

转载 作者:太空宇宙 更新时间:2023-11-04 00:16:04 25 4
gpt4 key购买 nike

我不明白为什么下面的代码输出10。我的理解是 !printf("0") 表示 !0,即 TRUE。那么为什么代码不打印 "Sachin"

#include <stdio.h>

int main() {
for (printf("1"); !printf("0"); printf("2"))
printf("Sachin");
return 0;
}

输出

10

最佳答案

让我们分析一下这个有副作用的循环语句:

for(printf("1"); !printf("0"); printf("2"))
  • 第一条语句执行,总是(初始化条件),yieiding 1
  • 然后测试条件:!printf("0")打印0,然后由于printf返回1,因为它只打印1字符,否定返回 0 并且永远不会进入循环,因为条件从一开始就是假的。因此 2Sachin 都不会被打印出来。

当然,这段代码不实用,几乎不可读。所以永远不要做这样的事情(例如,puts("10"); 是一个很好的选择)。

更多关于 printf 的返回值(经常被忽略):

Upon successful return, these functions return the number of characters printed (excluding the null byte used to end output to strings).

(来自 https://linux.die.net/man/3/printf)

关于c - 以 printf 作为参数的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52271159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com