c - 使用嵌套的 printf 语句给出奇怪的输出

标签 c printf

我最近遇到了这段代码,但我无法理解它是如何工作的

#include<stdio.h>
int main(){
    printf("Line 1\n",
    printf("Line 2\n",
    printf("Line 3\n",
    printf("Line 4\n",
    0))));
return 0;
}

它给出了以下输出:

Line 4
Line 3
Line 2
Line 1

最佳答案

printf用于打印格式化的行。例如,要打印一个整数,您可以调用:

printf( "%d", 1 );

您所做的是以嵌套 print 的返回值作为参数调用它,这意味着它首先需要评估嵌套调用。您的调用类似于:

int temp;
temp = printf("Line 4\n", 0);
temp = printf("Line 3\n", temp);
temp = printf("Line 2\n", temp);
temp = printf("Line 1\n", temp);

另外,请注意,由于格式字符串中没有格式说明符,因此第二个参数没有任何意义,如果您的编译器足够好,它甚至会警告您。

关于c - 使用嵌套的 printf 语句给出奇怪的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21838521/

相关文章:

c - 警告 :0 flag ignored with precision and '%x' gnu_printf format

java - Java 的 printf() 方法对于连接和打印字符串是否有效?

无法交换节点的值

c - 如何在 C 中声明一个函数用作函数指针?

c - 数组赋值给C中的指针

c - 以某些数字打印数字

c - 如何在函数中使用链接列表

VS2013中的C99 stdint.h错误

c - 在C中打印二叉树

java - 如何从 printf 转换为打印?