C 为什么不是';t main()是否返回任何值?

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) &

/我试图使用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) & 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