为什么以下程序有效,为什么输出" worldhello"?

时间:2018-03-07 20:43:36

标签: c

以下程序的输出是什么?

#include<stdio.h>

void main()
{
    printf("hello",printf("world"));
}

2 个答案:

答案 0 :(得分:2)

printf函数打印world首先作为C运行,直到所有参数都被评估后才能执行第一个printf(因为它评估之前提供的额外参数)主要的一个)意味着它在打印'world'之前等待'hello'打印。

答案 1 :(得分:2)

来自printf的文档:

  

如果参数少于格式所需的参数,则行为为   未定义。如果格式需要的参数多于,则   无关的参数是评估并被忽略。

该计划的输出是:

worldhello

第一个printf的论点是:    printf("world")

由于参数是一个函数,因此该函数将被调用生成单词:

word

然后,printf首先打印hello。这些印刷品将一起给你:

worldhello

试试这个:

#include<stdio.h>

int main(void)
{
    printf(" hello! %d",printf("world"));
    return 0;
}

输出:

world hello! 5 

如果printf成功,则返回写入的字符总数。失败时,返回负数。