lvalue-to-r-valueへの変換とint x = x;
cの未定義の動作は、未定義自体に未定義の行動を構成するかどうかの問題が議論のトピックであるかどうかの問題です。標準(3.3.2)は、例の例のように、変数を初期化することで、予期しない結果につながる可能性があると宣言しています。右側のXが、不定値の単位化された自動変数であると仮定します。標準(4.1)によると、このような値でlvalue-to-rvalueからの変換を実行すると、未定義の動作が生じます。たとえば、標準は、組み込みの割り当て演算子が適切なオペランドのLValue-to-valueへの変換を伴うことを指摘しています。他の条項はまた、LValue-to-rvalueへの変換が一般的に明示的に指定されている場合を除き、一般的に予想されることを示しています。意図された仕様は、値が必要な場合はどこでもPRValuesを期待することであることを示唆しています。 Behavior。参照参照の初期化でのLValue-to-valueから値への変換を防止するが、オブジェクトの初期化でそれを許可するなどの一貫性のない動作は、lvalue-r-valueへの変換がコピーイナイト化に期待されるという見解に信用を追加します。 lvalue-to-rvalue変換。これは、提示された証拠に基づいて、int x = x;。これは、右側のxの無知の性質により、未定義の動作につながります。標準の矛盾と明確化の必要性は、価値カテゴリの詳細な仕様の重要性を強調しています。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3