C 为什么不是';t main()是否返回任何值?
/我试图使用cb函数中的右移返回布尔值10的第一位/C 为什么不是';t main()是否返回任何值?,c,C,/我试图使用cb函数中的右移返回布尔值10的第一位/ #包括 boolcb(intn,inti){/`被调用函数` 返回((N>>i)&1)==1; } int main(void){/`main函数` cb(10,1); 返回0; } //状态:已成功执行,但没有输出 下面是您的程序: #include<stdbool.h> //`called function` bool cb(int N,int i) { return ((N >> i) &
#包括
boolcb(intn,inti){/`被调用函数`
返回((N>>i)&1)==1;
}
int main(void){/`main函数`
cb(10,1);
返回0;
}
//状态:已成功执行,但没有输出 下面是您的程序:
#include<stdbool.h>
//`called function`
bool cb(int N,int i)
{
return ((N >> i) & 1) ==1;
}
//`main function`
int main(void)
{
cb(10,1);
return 0;
}
#包括
//`调用函数`
布尔cb(内部N,内部i)
{
返回((N>>i)&1)==1;
}
//`主要功能`
内部主(空)
{
cb(10,1);
返回0;
}
您的程序正在执行-这意味着main()函数正在成功返回(值为0)。您还可以调用cb(10,1)代码>调用上述函数声明(并返回布尔值:True/False)。但是您不存储该函数调用的值,也不使用printf()
或cout
语句显示该值
您需要为您的程序添加更多内容,以提供更显著的输出。main
不会神奇地返回另一个函数的结果,您还需要从main
返回值
int main(void)
{
return cb(10, 1);
}
或者,您可以使用以下值从函数中退出程序:
bool cb(int N,int i){ //`called function`
exit(((N>>i)&1)==1 ? EXIT_FAILURE : EXIT_SUCCESS);
}
并在控制台中检查返回:
./yourprogram
echo $?
但请注意,这被认为是一种不好的做法,我们通常只在出现问题时返回EXIT\u FAILURE
,相反,您可以打印结果:
int main(void)
{
printf("%d\n", cb(10, 1));
return 0;
}
最后,您可以使用调试器
将代码更改为
Line 6 int res = cb(10, 1);
Line 7 return 0;
然后启动调试器
gdb yourprogram
breakpoint 7 (after the line you want to inspect)
run
print res
您在哪里检查是否返回了某些内容?没有输出,因为您没有调用任何导致输出的函数。除此之外,您不需要对cb(10,1)返回的值执行任何操作代码>。要在控制台上输出某些内容,您必须对程序说。你知道返回值和函数是如何工作的吗?但是cb函数有一个返回语句。你知道c中返回的含义吗?我已经存储了答案,然后使用printf语句,它起作用了。但返回cb(10,1);给出了运行时错误。
gdb yourprogram
breakpoint 7 (after the line you want to inspect)
run
print res