为什么打印了四次,不应该是三次吗,还是说这里用的不是调用,而是其他的知识
(1)问题分析
第一次打印:第2行代码调用min函数时打印a
第二次打印:第3行代码使用printf打印b
第三次打印:第4行代码调用min函数时打印a
第四次打印:第4行代码使用printf打印min函数等于a的返回值
(2)修改代码验证分析
由于b的值和a的值一样,因此从结果上不容易看出打印的是哪一个,修改代码使得b和a的值不一样,同时在打印结果的后面加上空格可以更明显地发现问题
#include <stdio.h>
int min()
{
int a=300;
printf("%d ",a);
return a;
}
int main()
{
int b=min()+1;
printf("%d ",b);
printf("%d ",min());
}
(3)修改后代码运行结果截图
int b =min(); // 这里打印第一次:因为min()函数里 printf(“%d”,a); 一次, b = return a;
printf("%d",b); // 这里打印第二次 b = 300.
printf("%d",min()); //这句先执行 min()里的 printf("%d",a); ,打印第三次 ; 然后printf("%d" ,min() == > return a) 打印第四次。
首先,赋值b是300,打印出去第一个300,因为调用了这个函数,第二次输出,接下来再调用了一次函数,函数内部输出一次,返回值输出一次,所以一共四次