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
    的情况。现在显示的代码甚至与您第一次发布的代码相差很远。这是什么?你完全改变了问题的内容,什么都没说。。。?