#include<stdio.h>
int func(int x){
printf("Print\n");
return x;
}
void main(){
printf("The value of x is %d",func(50)); /* Print is printed first then the value of x */
return 0;
}
该计划的输出是:
Print
The value of x is 50
所以我的问题是为什么功能打印Print
之后打印The value of x is 50
。自从在语句之后调用函数之前,为什么The value of x is
没有打印。
答案 0 :(得分:4)
让我们分析一下您的计划流程。
main()
。
printf()
。
2.1在评估printf()
的参数时,遇到func(50)
函数调用
2.2 func(50)
函数开始执行。它打印Print
并返回x
[50]
最后,printf()
中的main()
看起来像printf("The value of x is %d",50);
[50是函数调用的返回值func(50)
]
发生第二次打印,打印The value of x is 50
所以,你的输出屏幕看起来像
Print
The value of x is 50
注意:正如评论中已提到的,请使用int main()
代替void main()
。否则,return 0
毫无意义。
答案 1 :(得分:1)
func(50)
是函数printf()
的参数,因此参数首先执行,而%d
的第一个参数中的printf()
需要一个需要打印的值,并且由第二个agrument。
因此,函数调用func(50)
首先从函数Print
打印func()
,然后printf
中的main()
执行。
printf("The value of x is %d",func(50));
func(50) - &gt;打印Print
并返回50
所以现在main()中的printf()看起来像:
printf("The value of x is %d",50);
最终打印
Print
The value of x is 50