|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- int fun(int a, int b, int c){
- return 0;
- }
- int main(){
- return fun(printf("a"),printf("b"),printf("c"));
- }
复制代码
请问最后的输出结果和原因是什么
首先,这个程序包含了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语言中是未指定的。
|
|