LX2002 发表于 2020-8-24 16:42:57

函数返回值的疑问

代码1
#include <stdio.h>
void add(int a, int b) {
       a + b;
}
int main(void) {
        int a = 5, b = 3;
        add(a, b);
        return 0;
}

代码2

#include <stdio.h>
void add(int a, int b) {
       a + b;
}
int main(void) {
        int a = 5, b = 3;
        printf("%d\n",add(a, b));
        return 0;
}
为什么代码1可以通过编译,代码2不能(不允许使用void类型)

sunrise085 发表于 2020-8-24 16:49:33

因为你的第二段代码吧add函数的调用放在了一个需要int类型数据的位置
printf("%d\n",xxx);
因为printf的输出内容中有格式化字符%d,因此 xxx 这里需要是一个int类型的数据,这是printf函数的规则。
但是你这里却给了一个无返回值的函数调用,所以就出错了
需要给一个返回int类型的函数调用
#include <stdio.h>
int add(int a, int b) {
         return a + b;//函数返回一个int类型的数据
}
int main(void) {
      int a = 5, b = 3;
      printf("%d\n",add(a, b));//这里将add函数调用后的返回值输出
      return 0;
}
页: [1]
查看完整版本: 函数返回值的疑问