這段代碼編譯得很好,但是當我嘗試運行它時,它失敗了。C中的按位運算
int main(int argc, char** argv) {
int c = 4;
int b = 5;
int a = a & b;
printf(a);
return (EXIT_SUCCESS);
}
我在做什麼錯?
這段代碼編譯得很好,但是當我嘗試運行它時,它失敗了。C中的按位運算
int main(int argc, char** argv) {
int c = 4;
int b = 5;
int a = a & b;
printf(a);
return (EXIT_SUCCESS);
}
我在做什麼錯?
printf
的第一個參數是格式字符串,char*
。有關構造格式字符串的更多信息,請閱讀this。
printf(a);
應該是:
printf("%d", a);
否則a
將作爲字符串的開頭的地址進行處理,當它的間接引用導致未定義的行爲(有它會崩潰的好機會)。
此外,我假設上述代碼不是您正在討論的確切代碼,因爲它不會按原樣編譯。
printf
需要char *, ...
而不是int
。我覺得你的代碼應該是:
printf("%d", a);
而且,你的函數名,test
和func
,不匹配。但我不認爲這是問題:)
不知道你到底想做什麼,你的程序實際上會失敗(編譯和運行時)。
return (EXIT_SUCCESS);
會給編譯錯誤。printf(a);
是錯誤的,沒有格式說明符。實際上應該是printf("%d",a);
int func(int x)
。func
但最終調用test
你不定義'test'功能,或者你不叫'func'。 –
「它失敗」非常模糊。它在做什麼?你期望它做什麼? – abelenky
除了已經提到的所有其他的東西,如果'func()'應該檢查'x'是否是2的冪,那麼你需要檢查'x'的負值以便捕獲它是'INT_MIN'。 –