/ 我正在尝试使用cb函数中的右移来返回布尔值10的第一位。 /
#include<stdbool.h>
bool cb(int N,int i){ //`called function`
return ((N>>i)&1)==1;
}
int main(void) { //`main function`
cb(10,1);
return 0;
}
//状态:已成功执行,但没有输出。
答案 0 :(得分:1)
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_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
答案 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;
}
您的程序正在执行-这意味着main()函数已成功返回(值为0)。您还可以调用cb(10,1);
,它会在上面调用您的函数声明(并返回一个布尔值:True / False)。但是,您不会存储该函数调用的值,也不会使用printf()
或cout
语句显示该值。
您需要为程序添加更多内容,以提供更引人注目的输出。