C语言中的位运算
这段代码编译得很好,但当我尝试运行它时,它失败了C语言中的位运算,c,C,这段代码编译得很好,但当我尝试运行它时,它失败了 int main(int argc, char** argv) { int c = 4; int b = 5; int a = a & b; printf(a); return (EXIT_SUCCESS); } 我做错了什么?printf采用char*,…,而不是int。我认为你的代码应该是: printf("%d", a); printf("%d", a); 此外,函数名,test和fu
int main(int argc, char** argv) {
int c = 4;
int b = 5;
int a = a & b;
printf(a);
return (EXIT_SUCCESS);
}
我做错了什么?
printf
采用char*,…
,而不是int
。我认为你的代码应该是:
printf("%d", a);
printf("%d", a);
此外,函数名,
test
和func
也不匹配。但我不认为这是问题所在:)printf的第一个参数是格式字符串,一个char*
。有关构造格式字符串的详细信息,请阅读
printf(a);
应该是:
printf("%d", a);
printf("%d", a);
否则,a
将被视为字符串开头的地址,并在取消引用时导致未定义的行为(很可能会崩溃)
另外,我假设上面的代码不是您所说的确切代码,因为它不会按原样编译。不知道您到底想做什么,您的程序实际上会失败(编译和运行时)
返回(退出\u成功)代码>将给出编译错误
printf(a)代码>错误,没有格式说明符。实际上应该是printf(“%d”,a)代码>
int func(int x)
没有正向声明func
,但最终调用了test
您没有定义
test
函数,或者您没有调用func
“它失败了”是非常模糊的。它在干什么?你希望它做什么?除了前面提到的所有其他东西,如果func()
应该检查x
是否是2的幂,然后,您需要检查x
的负值,以便捕获INT\u MIN
的情况。现在显示的代码甚至与您第一次发布的代码相差很远。这是什么?你完全改变了问题的内容,什么都没说。。。?