質問するログイン新規登録

回答編集履歴

1

test

2015/04/15 00:34

投稿

naga3
naga3

スコア1293

answer CHANGED
@@ -1,2 +1,2 @@
1
1
  キャスト演算子は右結合ですので、`((DWORD)((BYTE)(g)))`と`(DWORD)(BYTE)g`で動きは変わりません。
2
- ただ`g`が式、例えば`1+2`だったとき、右のマクロでは`(DWORD)(BYTE)1+2`と展開され`((DWORD)(BYTE)1)+2`となりますので、意図通りでないキャストがされる可能性があります。左のマクロでは`((DWORD)((BYTE)(1 + 2)))`なので`(DWORD)(BYTE)3`となり、意図通りのキャストとなります。
2
+ ただ`g`が式、例えば`1+2`だったとき、右のマクロでは`(DWORD)(BYTE)1+2`と展開され`((DWORD)(BYTE)1)+2`となりますので、意図通りでないキャストがされる可能性があります。左のマクロでは`((DWORD)((BYTE)(1+2)))`なので`(DWORD)(BYTE)3`となり、意図通りのキャストとなります。