Deb*_*day 1 c for-loop printf-debugging
我无法理解为什么以下代码输出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"))
1!printf("0")打印0,然后printf返回1,因为它只打印1个字符,否定返回0并且从不输入循环,因为条件从开始就是假的.所以既不2或Sachin打印.当然,这段代码不实用,几乎不可读.所以不要做这样的事情(例如,这puts("10");是一个很好的选择).
更多关于返回值printf(通常被忽略):
成功返回后,这些函数返回打印的字符数(不包括用于结束输出到字符串的空字节).
(来自https://linux.die.net/man/3/printf)