ホームページ  >  記事  >  バックエンド開発  >  C のキャストにおける (type)value と type(value) の間に違いがある場合、どのような違いがありますか?

C のキャストにおける (type)value と type(value) の間に違いがある場合、どのような違いがありますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-21 05:43:10185ブラウズ

What are the differences, if any, between (type)value and type(value) in C   casting?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。