我在C++ 11有一个自定义的数据结构date
:嵌套的if-else不工作的自定义结构C++
struct date {
int day;
int month;
int year;
};
我想比较两个date
S和为它编写函数:
int compare_dates(date a, date b) {
int result = 0;
if (a.year < b.year) {
result = -1;
} else if (a.year == b.year) {
if (a.month < b.month) {
result = -1;
} else if (a.month == b.month) {
if (a.day < a.day) {
result = -1;
} else if (a.day > a.day) {
result = 1;
}
} else {
result = 1;
}
} else {
result = 1;
}
return result;
}
但此功能无法正常工作。我花了很多时间来调试它,发现下面的代码部分的一些问题:
} else if (a.month == b.month) {
if (a.day < a.day) {
result = -1;
} else if (a.day > a.day) {
result = 1;
}
} else {
result = 1;
}
有调试期间两个截图,first上} else if (a.month == b.month) {
和second当我点击调试器下一行。这发生在所有输入上。为什么debbuger每次都没有输入if (a.day < a.day) {
或result = 1;
?
你可能在其他地方有未定义的行为,这可能会导致各种奇怪的事情。错误不能由您向我们展示的部分复制。请发布完整的代码。请参阅http://stackoverflow.com/help/mcve –
感谢@ChristianHackl的评论,下次我将根据* mcve *标准添加代码。 –