【发布时间】:2015-10-10 15:33:04
【问题描述】:
我是一个新的 C 开发人员(我习惯于用 Java 编程),并尝试过 create,我认为这是一个简单的 bool 函数。虽然我遇到了一个我不明白如何解决的错误:
#include <stdio.h>
#include <stdlib.h>
typedef enum { false, true } bool;
int main() {
int currentNumber, round = 1;
printf("Numbers generated will be between 1 and 20. \n");
currentNumber = rand() % 20;
bool validNumber = false;
do {
if(currentNumber != 0) {
validNumber == true;
} else {
currentNumber = rand() % 20;
}
}while(validNumber == false);
printf("You're on round" + ("%d", round));
printf("You're current number is: " + ("%d", currentNumber));
printf("Higher or Lower (H/L)?");
char userInput [20];
scanf("%s", &userInput);
if((userInput[0] == 'h') || (userInput[0] == 'H')) {
completeRound(round, 'H', currentNumber);
} else if((userInput[0] == 'l') || (userInput[0] == 'L')) {
completeRound(round, 'L', currentNumber);
}
}
void completeRound(int round, char input, int currentNumber) {
int initialVal = currentNumber, newVal;
if(input == 'H') {
newVal = rand() % 20;
bool checkResult(initialVal, newVal, input);
} else {
newVal = rand() % 20;
bool checkResult(initialVal, newVal, input);
}
}
bool checkResult(int initialVal, int finalVal, char input);
bool checkResult(int initialVal, int finalVal, char input) {
if(input == 'H') {
if(initialVal <= finalVal) {
return true;
} else {
return false;
}
}
if(input == 'L') {
if(initialVal >= finalVal) {
return true;
}else {
return false;
}
}
printf("An error has occurred! Aborting game...");
return false;
}
错误如下:
\main.c|39|错误:'checkResult' 的类型冲突
起初,我认为由于某种原因,在 C 中您只能将某些数据类型作为参数传递给 bool 方法,尽管我在 Google 上找不到直接的答案。除此之外;我无法理解“冲突类型”是什么意思(这是我第一次调试 C 程序。
我曾经调用checkResult的函数如下:
【问题讨论】:
-
你对 checkResult 有其他定义吗?在 Java 中,您可以有一个 checkResult(arg1, arg2) 和一个 checkResult(arg1, arg2, arg3) 函数。在 C 中这是不允许的。
-
不,只有一个,有这些论点。
-
显示你对
checkResult的调用的代码,尤其是initialVal、newVal和input的声明。顺便说一句,您的checkResult函数无法编译,有错别字。 -
@MichaelWalz 我刚刚添加到用于调用
checkResult的函数中。 -
电话应该只是
value = checkResult(initialVal, newVal, temp)。使用bool checkResult(...),您实际上使用默认类型int声明了一个包含所有参数的原型。 (在 C 语言中,在其他函数中声明函数是合法的。更常见的是在文件头或文件开头声明它们。)