4

私はこのコードに興味があります:

int a = 'ftyp';          // a == 1718909296
int b = *((int*)"ftyp"); // b == 1887007846

私の質問: なぜ a != b ?

4

1 に答える 1

8
int a = 'ftyp';          // a == 1718909296

a実装定義の値を持つ複数文字定数に設定します。の値はa標準で定義されていません。詳細については、C または C++ での一重引用符と二重引用符を参照してください。

int b = *((int*)"ftyp"); // b == 1887007846

厳密なエイリアシング違反による未定義の動作の原因です。

根拠のない期待a == b

于 2016-07-02T19:56:34.320 に答える