-5

我在第 34 行收到一个错误,说有一个“在 'void' 之前的预期表达式”(或 int,如果我更改函数类型,我不确定它应该是哪个)。我不知道如何解决这个问题。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

// Declare Function Prototypes
void PlayingDice(void);
void GuessNumber(void);

int main (void)
{
    // Loop so games can be replayed
    do
    {

        // Introducing Games
        int game, UserGuessDice, UserGuessNumber, die1, die2, sum, number;
        printf("Do you want to (1) play dice, (2) guess the number, or (3) exit program?\n");
        scanf("%d", &game);

        printf("You have selected %d.\n", game);

        if (game==1)
            {
                // Calls Playing Dice Game
                printf("%d", void PlayingDice(void));
            }

        else if (game==2)
            {
                // Calls Guess Number Game
                printf("%d", void GuessNumber(void));
            }

        else
            {
                // In case user enters invalid option
                printf("That wasn't an option!\n");
            }
    }

    while (game != 3);

    // End Program
    printf("Good bye.\n");

return (0);
}
4

1 回答 1

3

这里有几个问题。这是其中之一:

printf("%d", void PlayingDice(void));

在这里,您将作为第二个参数传递给printfvalue void PlayingDice(void)。但是,这不是一个值。void PlayingDice(void)是一个函数原型,它说“有一些函数被调用PlayingDice,它什么也不接受,也不返回任何东西。” 这根本不是一个值。你可能打算做这样的事情:

printf("%d", PlayingDice());

这实际上调用PlayingDice并获取返回值。但是,这也是有问题的,因为函数返回void. 您可能想确定是否希望此函数返回任何内容。如果这样做,则返回 type int。如果没有,请printf完全删除。

同样,这条线是合法的,但几乎可以肯定不是你想要的:

// Returns function to main
return main();

这不会函数返回到main. 相反,它main再次调用,等待main返回一个值,然后返回main产生的值。如果要返回main,只需删除此语句即可。它什么也没做。

希望这可以帮助!

于 2013-10-27T22:26:25.273 回答