printf 和 return 有什么区别?

计算两个给定整数值的总和。如果两个值相同,则返回其总和的三倍。

int main() {
    printf("%d\n", test(1, 2));
    printf("%d", test(2, 2));
}

int test(int x, int y) {
    int sum;

    if (x == y) {
        sum = (x + y) * 3;
        printf("sum = %d\n", sum);
    } else  {
        sum = (x + y);
        printf("sum = %d", sum);
    }
}

当我运行这段代码时,我得到了错误的输出,但是当我使用return语句而不是 时printf,我得到了正确的输入。为什么?

回答

由于test不返回值(没有return语句),因此尝试引用返回值会导致未定义的行为。如果您进行一些小的修改,可能更容易理解程序中发生的事情:

#include <stdio.h>
int
test(int x, int y)
{
int sum = x + y;
if( x==y ){
sum *= 3;
}
printf("sum = %d XXX ", sum);
return sum;
}
int
main(void)
{
printf("** %d **\n", test(1, 2));
printf("** %d **\n", test(2, 2));
return 0;
}

上面程序的输出是:

sum = 3 XXX ** 3 **
sum = 12 XXX ** 12 **

在可以调用in之前调用in的testin 参数列表。该内部函数执行并打印。该函数返回一个值,该值作为参数传递给打印的in main 。printfmainprintfmainprintftestsum = ... XXX printf** ... **


以上是printf 和 return 有什么区别?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>