C 为什么以下程序有效?为什么它输出;世界你好;?

C 为什么以下程序有效?为什么它输出;世界你好;?,c,C,以下程序的输出是什么 #include<stdio.h> void main() { printf("hello",printf("world")); } #包括 void main() { printf(“你好”,printf(“世界”); } 打印world的printf函数以C的形式首先运行,直到对其所有参数求值后才能执行第一个printf(因为它对主参数之前提供的额外参数求值)这意味着它在打印'hello'之前等待打印'world',打印world的函数首先运行,

以下程序的输出是什么

#include<stdio.h>

void main()
{
    printf("hello",printf("world"));
}
#包括
void main()
{
printf(“你好”,printf(“世界”);
}

打印
world
printf
函数以
C
的形式首先运行,直到对其所有参数求值后才能执行第一个
printf
(因为它对主参数之前提供的额外参数求值)这意味着它在打印
'hello'
之前等待打印
'world'
打印
world
的函数首先运行,因为
C
无法执行第一个
printf
,直到对其所有参数求值(因为它对主参数之前提供的额外参数进行求值)这意味着它在打印文档中的“hello”

之前等待打印
'world'

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

程序的输出为:

worldhello
第一个printf的参数是:
printf(“世界”)

由于参数是一个函数,因此该函数将被称为生成字:

word
然后首先
printf
将打印
hello

worldhello
试试这个:

#include<stdio.h>

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

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

来自以下文档:

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

程序的输出为:

worldhello
第一个printf的参数是:
printf(“世界”)

由于参数是一个函数,因此该函数将被称为生成字:

word
然后首先
printf
将打印
hello

worldhello
试试这个:

#include<stdio.h>

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

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

实际上,我认为它是有效的。如果参数超过格式要求,则对无关参数进行求值并ignored@Kevin它实际上是有效的,我删除了我的评论,说它是有效的不..@EugeneSh。我也:)参考一下,有很多理由可以看出为什么
void main()
是可疑的。事实上,我认为它是有效的。如果存在的参数多于格式所需的参数,则对无关的参数进行求值并ignored@Kevin它实际上是有效的,我删除了我的评论,说它不是..@EugeneSh。我也是:)参考一下,
void main()
有很多可疑的原因。