无法获得布尔返回false C++ 我正在为我的C++课程制作一个程序,用不同的函数验证日期,但大部分是布尔值。我的问题是,它不会给出虚假的,当它是。我尝试使用else命令,而不是将返回值保留为false;没有其他的,但它似乎没有改变什么。下面是代码: int main() { char Data[80]; int Month,Day,Year; int *pMonth,*pDay,*pYear; pMonth = &Month; pDay = &Day ; pYear = &Year ; cout << "\n\t\tGive me date : "; cin >> Data; trial(); PauseScreen(28,20,3); return 0; } void SetCursorPosition(int X, int Y) { COORD XY = { Y,X }; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),XY); } void SetTextColor(int Color) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), Color); } void ClearScreen() { system("cls"); } void PauseScreen(int x, int y, int color) { SetCursorPosition(x,y); SetTextColor(color); system("pause"); } int InputValues(char *A, int *pM, int *pD, int *pY) { char Buffer[10]; Buffer[0] = A[0]; Buffer[1] = A[1]; Buffer[2] = '\0'; *pM = atoi(Buffer); Buffer[0] = A[3]; Buffer[1] = A[4]; Buffer[2] = '\0'; *pD = atoi(Buffer); Buffer[0] = A[6]; Buffer[1] = A[7]; Buffer[2] = A[8]; Buffer[3] = A[9]; Buffer[4] = '\0'; *pY = atoi(Buffer); return strlen(A); } bool ValidateMonth(int A) { if ( A > 0 && A < 13 ) { return true; } return false; } bool ValidateDay(int day,int month) { if ( month == 1 || month == 3 || month == 5 || month == 7 || month == 9|| month == 10|| month == 12 && (day > 0 && day < 32) ) { return true; } return false; } bool ValidateDayTwo(int day,int month) { if ( month == 4 || month == 6 || month == 8 || month == 11 && (day > 0 && day < 31) ) { return true; } return false; } void trial() { if(ValidateDay && ValidateDayTwo && ValidateMonth) { SetCursorPosition(10,10); cout << "Date is Valid"; } else { SetCursorPosition(10,10); cout << "You done messed up BALAKI"; } }

无法获得布尔返回false C++ 我正在为我的C++课程制作一个程序,用不同的函数验证日期,但大部分是布尔值。我的问题是,它不会给出虚假的,当它是。我尝试使用else命令,而不是将返回值保留为false;没有其他的,但它似乎没有改变什么。下面是代码: int main() { char Data[80]; int Month,Day,Year; int *pMonth,*pDay,*pYear; pMonth = &Month; pDay = &Day ; pYear = &Year ; cout << "\n\t\tGive me date : "; cin >> Data; trial(); PauseScreen(28,20,3); return 0; } void SetCursorPosition(int X, int Y) { COORD XY = { Y,X }; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),XY); } void SetTextColor(int Color) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), Color); } void ClearScreen() { system("cls"); } void PauseScreen(int x, int y, int color) { SetCursorPosition(x,y); SetTextColor(color); system("pause"); } int InputValues(char *A, int *pM, int *pD, int *pY) { char Buffer[10]; Buffer[0] = A[0]; Buffer[1] = A[1]; Buffer[2] = '\0'; *pM = atoi(Buffer); Buffer[0] = A[3]; Buffer[1] = A[4]; Buffer[2] = '\0'; *pD = atoi(Buffer); Buffer[0] = A[6]; Buffer[1] = A[7]; Buffer[2] = A[8]; Buffer[3] = A[9]; Buffer[4] = '\0'; *pY = atoi(Buffer); return strlen(A); } bool ValidateMonth(int A) { if ( A > 0 && A < 13 ) { return true; } return false; } bool ValidateDay(int day,int month) { if ( month == 1 || month == 3 || month == 5 || month == 7 || month == 9|| month == 10|| month == 12 && (day > 0 && day < 32) ) { return true; } return false; } bool ValidateDayTwo(int day,int month) { if ( month == 4 || month == 6 || month == 8 || month == 11 && (day > 0 && day < 31) ) { return true; } return false; } void trial() { if(ValidateDay && ValidateDayTwo && ValidateMonth) { SetCursorPosition(10,10); cout << "Date is Valid"; } else { SetCursorPosition(10,10); cout << "You done messed up BALAKI"; } },c++,C++,您没有正确调用函数实际上根本没有调用它们-没有参数: if(ValidateDay(?) && ValidateDayTwo(?) && ValidateMonth(?)) 例如,ValidateDayTwo函数接受两个参数 函数的返回类型是bool这一事实并没有改变任何事情,这与您认为的没有什么关系。函数名是指向函数本身的指针,您没有得到预期的false,因为该指针不是NULL。您没有正确调用函数,实际上根本没有调用它们-没有参数: if(ValidateDa

您没有正确调用函数实际上根本没有调用它们-没有参数:

if(ValidateDay(?) && ValidateDayTwo(?) && ValidateMonth(?))
例如,ValidateDayTwo函数接受两个参数


函数的返回类型是bool这一事实并没有改变任何事情,这与您认为的没有什么关系。函数名是指向函数本身的指针,您没有得到预期的false,因为该指针不是NULL。

您没有正确调用函数,实际上根本没有调用它们-没有参数:

if(ValidateDay(?) && ValidateDayTwo(?) && ValidateMonth(?))
例如,ValidateDayTwo函数接受两个参数


函数的返回类型是bool这一事实并没有改变任何事情,这与您认为的没有什么关系。函数名是指向函数本身的指针,您没有得到预期的false,因为该指针不是空的。

您实际上没有在if语句中调用函数。ValidDay,ValidDayTwo,ValidMonth

相反,您需要通过传入参数来调用函数

if(ValidateDay(somearg1) && ValidateDayTwo(somearg2) && ValidateMonth(somearg2))

实际上,您并没有在if语句中调用函数。ValidDay,ValidDayTwo,ValidMonth

相反,您需要通过传入参数来调用函数

if(ValidateDay(somearg1) && ValidateDayTwo(somearg2) && ValidateMonth(somearg2))
无需说明条件是否为真,返回真;否则,返回false。您只需返回评估条件的结果:

bool ValidateMonth(int A)
{
    return A > 0 && A < 13;
}
无需说明条件是否为真,返回真;否则,返回false。您只需返回评估条件的结果:

bool ValidateMonth(int A)
{
    return A > 0 && A < 13;
}

如果ValidateDay&&ValidateDayTwo&&validatedMonth{…},则需要将一些参数传递给调用。如果条件返回true;否则返回false;。为什么不只是返回条件;?如果ValidateDay&&ValidateDayTwo&&validatedMonth{…},则需要将一些参数传递给调用。如果条件返回true;否则返回false;。为什么不只是返回条件;?