为何C语言程序无输出?我尝试用右移获取10的第1位布尔值
你的C程序问题解析
嘿,先澄清一个关键误解:你的main()函数是有返回值的!最后一行的return 0;就是返回给操作系统的执行状态码,0代表程序正常运行结束。你真正的问题应该是程序没有控制台输出,以及调用cb(10,1)后看不到计算结果~
为什么没有输出?
你确实调用了cb(10,1)函数,它也正确计算出了结果(10的二进制是1010,右移1位后是101,和1按位与得到1,所以函数返回true),但C语言不会自动把函数的返回值打印出来——你必须显式调用输出函数,比如printf,才能把结果展示在控制台。
怎么修改才能看到结果?
只需要添加输出逻辑就行,记得要包含stdio.h头文件(因为printf在这个头文件里声明):
#include<stdbool.h> #include<stdio.h> // 必须包含这个才能使用printf bool cb(int N,int i){ // 被调用函数 return ((N>>i)&1)==1; } int main(void) { // 主函数 bool result = cb(10,1); // 方式1:用数字打印(true对应1,false对应0) printf("10的第1位布尔值是:%d\n", result); // 方式2:用更直观的文字打印 // printf("10的第1位布尔值是:%s\n", result ? "true" : "false"); return 0; }
关于main返回值的补充
你的main()已经正确返回了0,这个值是给操作系统看的,不会直接显示在控制台。如果想验证它的返回值,可以:
- 在Windows命令行里,执行完程序后输入
echo %errorlevel%,会看到输出0 - 在Linux/macOS终端里,执行完程序后输入
echo $?,同样能看到返回的0
内容的提问来源于stack exchange,提问作者riya
相关产品推荐
相关产品推荐

