意味的にはどういう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 に答える