为什么main()不返回任何值?

时间:2019-10-09 14:25:35

标签: c

/ 我正在尝试使用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;
}

//状态:已成功执行,但没有输出。

2 个答案:

答案 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语句显示该值。

您需要为程序添加更多内容,以提供更引人注目的输出。