意味的にはどういうsizeof (int) * p
意味ですか? それは
1.sizeof( (int) *p )
または
2.( sizeof(int) ) * p
で、式がこのように評価されるのはどのルールですか?
質問する
1579 次
2 に答える
4
sizeof
は単項演算子で、 binary よりも優先順位が高い*
ため、式sizeof (int) * p
は として解析され(sizeof (int)) * p
ます。解析ツリーは次のとおりです。
*
/ \
sizeof p
|
(int)
編集
onezero のコメントから:
しかし、sizeof( (int) *p ) のように式を評価することはできませんか?
関連する構文は次のとおりです ( C2011 標準の投票ドラフトから)。
(6.5.3)単項式: 後置式 ++単項式 --単項式 単項 演算子 キャスト式 sizeof単項式 sizeof (型名) alignof (型名)
ご覧のとおり、は表現(int)
の一部として解釈され、ピリオドが使用されます。cast-expressionsizeof
の一部として解釈されません。この構文では、キャスト式を直接続けることはできません。それらの間には単項演算子(、、、、、、のいずれか)が必要です。 sizeof
&
*
+
-
~
!
于 2012-06-22T18:12:19.203 に答える
-1
それはpが何であるかに依存しませんか?
void main() {{ int p = 3; printf( "%d"、sizeof(int)* p); }
12を出力します。
void main() {{ char * p = "a"; printf( "%d"、sizeof((int)* p)); }
4を出力します。
于 2012-06-22T17:42:46.280 に答える