c - 错误: Void value not ignored as it ought to be in C programming

标签 c pointers

我正在编写一个有两个函数的 C 程序。一个函数是通常的主函数,另一个是指针void函数。当我尝试在基于 Linux 的系统中编译我的程序时,出现以下错误:

host1@matrix:~/cprog/practice> gcc -o function1 function1.c
prog1.c: In function ‘main’:
prog1.c:16:14: error: void value not ignored as it ought to be

这是我的代码:

#include <stdio.h>
void function_1(int *num1, int *num2);

int main(void) {

    int numerator;
    int denominator;
    int finalAnswer;

    printf("Numerator: ");
    scanf("%d", &numerator);

    printf("Denominator: ");
    scanf("%d", &denominator);

    finalAnswer = function_1(&numerator, &denominator);
    printf("%d / %d = %d \n", numerator,denominator,&finalAnswer);

    return 0;
}

void function_1(int *num1, int *num2) {

    int total;

    total = *num1 / *num2;

    return;
}

最佳答案

正如您的 previous question 中提到的,void 函数不返回任何内容,因此您不能将其返回值分配给任何内容。这就是您收到错误的原因。

如果您希望函数返回一个值,但返回类型为 void,请按如下方式定义:

void function_1(int num1, int num2, int *total) 
{
    *total = num1 / num2;
}

并这样调用它:

function_1(numerator, denominator, &finalAnswer);

此外,您的最终 printf 应该是这样的:

printf("%d / %d = %d \n", numerator,denominator,finalAnswer);

关于c - 错误: Void value not ignored as it ought to be in C programming,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33262343/

相关文章:

c# - C/C++/C# 在监视器上设置窗口位置

C - 在 dev C 中使变量为空?

c++ - 在数组中获取和存储内存地址的问题

c - 不兼容的 C 指针

c - 内置函数malloc中的不兼容声明和c中赋值错误中的不兼容类型

c - 如何在cygwin环境下使用mingw-w64工具链编译ffmpeg

c - 指向 char[] 的双指针

pointers - Go:将数组的指针传递给 gob 而不进行复制?

C - 基本指针问题

c++ - 与不使用 if 的测试相比,if 语句的效率如何? (C++)