2012-10-02 4 views
7

次のキャストです:T(x)はキャストと見なされますか?

int foo = (int) somefloat; 

はしかし、これはキャストを考えられていますか?

int foo = int(somefloat); 

もっと重要なことは、2つの間に違いがある場合、結果として得られるコンパイルされたコードは異なるのでしょうか?

+2

違いはありません。 – chris

答えて

5

第2の例は、しばしばファンクションスタイルキャストと呼ばれ、C++に追加されましたが、セマンティクス/オブジェクトコードの点で2つの違いはありません。あなたは両方を使用することができ++

What exactly is or was the purpose of C++ function-style casts?

+0

クール。これはありがとう! – MarkP

2

結果の違いはありません、しかし、唯一の最初の例は、CでCで使用することができます:ここでは、スタイルのキャストが追加された機能の理由の良い説明だ

+0

2番目はまだCスタイルのキャストと見なされますか? – MarkP

+0

@ MarkP秒はC++ですが、Cではエラーで終了します。 – Zaffy

+0

@ MarkPはい、これはまだCスタイルのキャストであり、すべての欠点があります。 – xaizek

1

はい、これもキャストです。 C++はこのスタイルのキャストを可能にし、Cは(type)expressionフォーマットキャストのみを持ちます。彼らは同等です。

関連する問題