![](/img/trans.png)
[英]Why I am getting this Compilation r error: control reaches end of non-void function [-Werror=return-type]
[英]I am getting a warning saying I have reached end of non-void function
我有一個函數可以確定一年是否是閏年,並且我收到警告,但我不確定警告在哪里。 如果是閏年則返回 1,否則返回 0。
int isLeapYear(int yyyy) {
if (yyyy % 4 == 0) {
if (yyyy % 100 = 0) {
if (yyyy % 400 == 0) {
return 1;
}
else {
return 0;
}
}
else {
return 1;
}
}
}
其他人指出了您的錯誤並提供了其他編碼方法。 讓我提供另一個。 這是一種早期返回方法,可以使代碼更扁平、更短且更易於理解:
bool is_leap(int y) {
if (y % 400 == 0) return true;
if (y % 100 == 0) return false;
return y % 4 == 0;
}
如果yyyy % 4 == 0
計算結果為 false, if (yyyy % 4 == 0) { ... }
主體被跳過,則您什么都不返回。 添加一個return 0;
到最后。
這是一個不同的實現:
#include <stdbool.h>
bool isLeapYear(int const year) {
if (year % 4) return false;
if (year % 100) return true;
return !(year % 400);
}
根據您編寫此函數的方式,可以退出而不return
任何內容。
int isLeapYear(int yyyy) {
if (yyyy % 4 == 0) {
...
}
<--- Nothing Is Returned Here
}
你應該做這樣的事情:
bool isLeapYear(int yyyy)
{
bool leapYear = false;
if (yyyy % 4 == 0) {
// If Leap Year Set leapYear To true
}
return leapYear;
}
這樣做的好處是,只有一個退出點可以設置默認return
值並且更易於閱讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.