C の (type)value と type(value) のニュアンスを理解する
C では、明示的な型キャストのために 2 つの異なる構文が存在します。 : (型)値と型(値)。この区別により、次のような疑問が生じます: これら 2 つの式に違いがあるとしたら、どのような違いがあるのでしょうか?
単純なキャストには違いはありません
C 標準によると (セクション 5.2) .3)、単純な型指定子の後にかっこで囲まれた単一の式が続く場合、結果の式は指定された型から指定された型の値を作成します。 expression.
(type)value と type(value) の等価性
単一の式の場合、(type)value は両方の定義の type(value) と同等です。そして意味。これは、単一の値を指定された型にキャストする場合、これら 2 つの式にまったく違いがないことを意味します。
複数の値の違い
ただし、微妙な違いが生じます。カンマ区切りの値のリストをキャストするとき。この場合、指定された型が適切に宣言されたコンストラクターを持つクラスである場合、 type(x1, x2, ...) は、指定された値を使用して型 T の一時変数 t を作成し、 t の値を代入することと同等です。
型名の制限
補足として、type(value) が指定されない特定の型名があります。という構文は使用できません。たとえば、(char )string は有効ですが、char (string) はコンパイルに失敗します。ただし、typedef を使用して型のエイリアスが設定されている場合は、type(value) 構文をエイリアス名とともに使用できます。
以上がC のキャストにおける (type)value と type(value) の間に違いがある場合、どのような違いがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。