C++ if 语句错误

C++ if statement error

本文关键字:错误 语句 if C++      更新时间:2023-10-16

如果满足 if 语句的要求,我正在尝试将bool leapyear分配给true/false

#include <iostream>
using namespace std;
int main()
{
int month;
int year;
bool leapyear;
cout << "Enter a month (1-12): ";
cin >> month;
cout << "Enter a year: ";
cin >> year;
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
cout << "31 daysn";
}
else if (month == 4 || month == 6 || month == 9 || month == 11) {
cout << "30 dayn";
}
if ((year % 100 == 0 && year % 400 == 0) || (year % 100 != 0 && year % 4 == 0)) {
bool leapyear = true;
cout << "This year is a leap year!n";
}
else {
bool leapyear = false;
cout << "This year is not a leap year!n";
}
if (leapyear == true && month == 2) {
cout << "29 daysn";
}
else if (leapyear == false && month == 2) {
cout << "28 daysn";
}
}

但是当我运行代码视觉对象时,向我显示错误

Uninitialized local variable 'leapyear' used

只需删除ifelse块中的两个bool,并为leapyear变量提供一个初始值。您正在尝试多次定义具有相同名称的变量,而不仅仅是更改其值,这可能是您在这里要做的。

初始化:

int month;
int year;
bool leapyear = false; // You have to initialize the value of your variable here.

if 和 else 语句:

if ((year % 100 == 0 && year % 400 == 0) || (year % 100 != 0 && year % 4 == 0)) {
leapyear = true;
cout << "This year is a leap year!n";
}
else {
leapyear = false;
cout << "This year is not a leap year!n";
}

您必须了解创建变量和设置其值之间的区别。

bool leapyear = false; // Create a leapyear variable with the initial value false
leapyear = true; // Modify the value of the leapyear variable with the value true

您的代码有三个不同的变量,都称为leapyear,每个变量都存在于代码的不同部分。

在程序的顶部,您声明了leapyear

int month;
int year;
bool leapyear; // This variable is not initialized.

稍后,你声明更多的变量2,也称为leapyear

if ((year % 100 == 0 && year % 400 == 0) || (year % 100 != 0 && year % 4 == 0)) {
// New Variable declared here!
// It has the same name, but is a different variable
bool leapyear = true;
cout << "This year is a leap year!n";
// The local variable ends here
// It goes "out-of-scope", and no longer exists.
}                           
else {
// New Variable declared here!
bool leapyear = false;
cout << "This year is not a leap year!n";
// The Variable goes "out-of-scope" here, and no longer exists.
}   

稍后,当您的代码执行此操作时:

// Using the original variable, which is STILL not initialized
if (leapyear == true && month == 2) {  
cout << "29 daysn";
}
else if (leapyear == false && month == 2) {
cout << "28 daysn";
}