这段代码编译得很好,但是当我尝试运行它时,它失败了。
int main(int argc, char** argv) {
int c = 4;
int b = 5;
int a = a & b;
printf(a);
return (EXIT_SUCCESS);
}
我做错了什么?
答案 0 :(得分:4)
printf
的第一个参数是格式字符串,char*
。有关构造格式字符串的更多信息,请阅读this。
printf(a);
应该是:
printf("%d", a);
否则a
将被视为字符串开头的地址,并在取消引用时导致未定义的行为(它很可能会崩溃)。
另外,我假设上面的代码不是您正在讨论的确切代码,因为它不会按原样编译。
答案 1 :(得分:3)
不知道你想要做什么,你的程序实际上会失败(编译和运行时)。
return (EXIT_SUCCESS);
会产生编译错误。printf(a);
错误,没有格式说明符。应该是printf("%d",a);
int func( int x )
没有前瞻性声明。func
,但最终致电test
答案 2 :(得分:2)
printf
需要char *, ...
,而非int
。我认为你的代码应该是:
printf("%d", a);
此外,您的函数名称test
和func
不匹配。但我不认为这是问题:)