gpt4 book ai didi

c - 警告 : control reaches end of non-void function [-Wreturn-type]

转载 作者:行者123 更新时间:2023-11-30 16:56:46 31 4
gpt4 key购买 nike

我有一段代码:

int check(int d, char arr[9][9], int rep_arr[45][3]) {

int p = findProb(d, arr, rep_arr, 0) ;

if (isIdeal(d, arr) == 1) {

print_array(d,arr) ;

return 1 ;

}

else if(isIdeal(d,arr) == 0 && p == 0){

printf("Fail\n") ;

return 0 ;

}

else if (isIdeal(d, arr) == 0 && p != 0) {

#do something recursively..
}

其中 isIdeal(d, arr) 只能等于 01 并且 p 可以是等于 0 或另一个整数。但是,编译器给了我标题中给出的错误。

后来我在那段代码的末尾添加了return 0

现在它可以工作了,但没有以函数方式工作,因为函数返回的内容非常重要。

另一个重要的事情是,当我添加 else block 以避免该网站上另一个主题 see more at link 指示的失败时,它从未进入那个 else block 。但是,无论我是否添加 else block ,它总是 return 0 ,这样所有的可能性就结束了加上一个 return 行。怎么办?

最佳答案

如果您确定可能的值,那么您可以将整个函数替换为:

int foo(int case1, int case2) {
if (case1 == 1) {
return val;
}
return case2 == 0 ? val2 : val3;
}

同时消除警告。

如果您担心 case1 可能不是 10,那么只需更改为:

int foo(int case1, int case2) {
assert(case1 == 0 || case1 == 1);

if (case1 == 1) {
return val;
}
return case2 == 0 ? val2 : val3;
}

关于c - 警告 : control reaches end of non-void function [-Wreturn-type],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39816537/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com