鱼C论坛

 找回密码
 立即注册
查看: 1454|回复: 7

[已解决]函数参数的执行顺序

[复制链接]
发表于 2023-3-22 20:25:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int fun(int a, int b, int c){
     return 0;
}
int main(){
return fun(printf("a"),printf("b"),printf("c"));
}
请问最后的输出结果和原因是什么
最佳答案
2023-3-22 20:29:29
首先,这个程序包含了stdio.h头文件,它用于实现标准输入/输出功能。然后,程序定义了一个名为fun的函数,接受三个整型参数a、b和c,但函数仅返回0。在main函数中,程序调用了fun函数,参数是三个printf函数调用,分别输出字符 "a"、"b"和 "c"。

请注意,程序中有一个小错误,return 0;这一行的分号应该是英文分号,而不是中文分号。我将在下面的解释中假设这个错误已经被更正。

现在我们来看输出结果。C语言中,函数参数的求值顺序是未指定的,因此printf("a")、printf("b")和printf("c")三者之间的执行顺序是不确定的。但是,无论执行顺序如何,它们都会被依次执行。每个printf函数调用都会输出相应的字符,并返回写入的字符数。

在这个例子中,每个printf函数调用都会输出一个字符并返回1,因为它们各自只输出了一个字符。因此,fun函数的实际参数值将是三个1。然后,fun函数仅返回0,所以main函数也返回0。但是,我们关心的是输出结果,而不是main函数的返回值。

总之,这个程序的输出结果将是 "a"、"b"和 "c" 三个字符,但它们的顺序是不确定的,因为函数参数求值顺序在C语言中是未指定的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-22 20:29:29 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +20 鱼币

首先,这个程序包含了stdio.h头文件,它用于实现标准输入/输出功能。然后,程序定义了一个名为fun的函数,接受三个整型参数a、b和c,但函数仅返回0。在main函数中,程序调用了fun函数,参数是三个printf函数调用,分别输出字符 "a"、"b"和 "c"。

请注意,程序中有一个小错误,return 0;这一行的分号应该是英文分号,而不是中文分号。我将在下面的解释中假设这个错误已经被更正。

现在我们来看输出结果。C语言中,函数参数的求值顺序是未指定的,因此printf("a")、printf("b")和printf("c")三者之间的执行顺序是不确定的。但是,无论执行顺序如何,它们都会被依次执行。每个printf函数调用都会输出相应的字符,并返回写入的字符数。

在这个例子中,每个printf函数调用都会输出一个字符并返回1,因为它们各自只输出了一个字符。因此,fun函数的实际参数值将是三个1。然后,fun函数仅返回0,所以main函数也返回0。但是,我们关心的是输出结果,而不是main函数的返回值。

总之,这个程序的输出结果将是 "a"、"b"和 "c" 三个字符,但它们的顺序是不确定的,因为函数参数求值顺序在C语言中是未指定的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-3-22 20:30:35 | 显示全部楼层

回帖奖励 +20 鱼币

该程序有一个函数fun和一个main函数,其中fun函数的参数是三个整数,返回值是一个整数0。main函数中调用了fun函数,并将三个printf函数的返回值依次传入fun函数中。由于printf函数会返回输出的字符数,因此fun函数的参数实际上是三个整数,分别是输出字符'a'、输出字符'b'、输出字符'c'的字符数。最终main函数的返回值就是fun函数的返回值0。因此程序输出0。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-22 20:31:03 | 显示全部楼层
@一点沙 白嫖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-22 20:49:52 | 显示全部楼层

回帖奖励 +20 鱼币

不会,顶帖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-22 21:20:08 | 显示全部楼层
歌者文明清理员 发表于 2023-3-22 20:30
该程序有一个函数fun和一个main函数,其中fun函数的参数是三个整数,返回值是一个整数0。main函数中调用了f ...

wc
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-22 21:20:49 | 显示全部楼层

都结束了白嫖个等
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-22 21:23:30 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 17:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表