以下では、MY_INT2宣言とMY_INT3宣言の違いは何ですか? 私はいくつかのコードでかなり定着している問題を抱えているので、テストケースにバグを生成するコードを減らすことは難しいでしょう。これら2つの定義の違いは何ですか
#define MY_INT1 5
#define MY_INT2 31
#define MY_INT3 (int) pow(2, MY_INT1)-1
私は
int mul(int a, int b) {
return a*b;
}
int someFunction(int in) {
//nice
return floor(in/MY_INT2);
}
int someFunction2(int in) {
//silly
return floor(in/mul(1,MY_INT3));
}
int someFunction3(int in) {
//cast does not solve the issue
return floor(in/(int)MY_INT3);
}
エラーは何ですか?あなたは実際に何が起こっているかは言わなかった... –
マクロの素晴らしい世界へようこそ。余分なカッコがほとんど必須です。 –
また、 'pow'は浮動小数点*関数であることがわかりますか? 2の累乗を整数として使用する場合は、*ビットシフト*(例えば、 '1 << 5'など)を使用します。 –