C中的按位运算

时间:2011-12-03 06:48:10

标签: c

这段代码编译得很好,但是当我尝试运行它时,它失败了。

int main(int argc, char** argv) {
    int c = 4;
    int b = 5;
    int a = a & b;
    printf(a);

    return (EXIT_SUCCESS);
}

我做错了什么?

3 个答案:

答案 0 :(得分:4)

printf的第一个参数是格式字符串,char*。有关构造格式字符串的更多信息,请阅读this

printf(a);

应该是:

printf("%d", a);

否则a将被视为字符串开头的地址,并在取消引用时导致未定义的行为(它很可能会崩溃)。

另外,我假设上面的代码不是您正在讨论的确切代码,因为它不会按原样编译。

答案 1 :(得分:3)

不知道你想要做什么,你的程序实际上会失败(编译和运行时)。

  1. 没有包含头文件,因此return (EXIT_SUCCESS);会产生编译错误。
  2. printf(a);错误,没有格式说明符。应该是printf("%d",a);
  3. int func( int x )没有前瞻性声明。
  4. 最后,您似乎想要致电func,但最终致电test

答案 2 :(得分:2)

printf需要char *, ...,而非int。我认为你的代码应该是:

printf("%d", a);

此外,您的函数名称testfunc不匹配。但我不认为这是问题:)