回答編集履歴

1

test

2015/04/15 00:34

投稿

naga3
naga3

スコア1293

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