私はこのコードに興味があります:
int a = 'ftyp'; // a == 1718909296
int b = *((int*)"ftyp"); // b == 1887007846
私の質問: なぜ a != b ?
私はこのコードに興味があります:
int a = 'ftyp'; // a == 1718909296
int b = *((int*)"ftyp"); // b == 1887007846
私の質問: なぜ a != b ?
int a = 'ftyp'; // a == 1718909296
a
実装定義の値を持つ複数文字定数に設定します。の値はa
標準で定義されていません。詳細については、C または C++ での一重引用符と二重引用符を参照してください。
int b = *((int*)"ftyp"); // b == 1887007846
厳密なエイリアシング違反による未定義の動作の原因です。
根拠のない期待a == b
。