2012-02-28 8 views
-1

C++の問題異なる変数の変換中 はい、愚かな問題ですが、私はC++とIDKの初心者です。変数の変換中にC++の異なる基本タイプ

#include <iostream> 
using namespace std; 
int main() 
{ 
float a = 54; 
cout << a; 
double(a); 
cout << a; 
return 0; 
} 

と、このエラー:

私はこのコードを持っている

  • エラーをC2371: 'A':再定義;異なる基本的な種類のライン7
  • エラーC2088: '< <':それは書いた理由は、クラスのライン8

のための違法:異なる基本タイプ、私は倍増するフロートのみ変換しますか? 2番目のエラーはどういう意味ですか?何ですかクラスライン

私はこの質問もあります:異なる基本タイプの2つの変数を変換できますか?文字列にint? f.eを変換するのと同じです。浮動小数点にするか、または異なるか?

Here is print screen during debugging project in VC++ 2010

+0

[自分自身で良いC++の本を手に入れる](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) –

+0

無関係:Visual Studioの完全なエラーメッセージは、 「エラー」ウィンドウではなく、「出力」ウィンドウ。 –

+0

THX、それを知ってよかった – Cehppel

答えて

0

は、あなたはすでに宣言「」floatとして、コンパイラはあなたがdoubleとしてそれを再宣言しようとしていると考えてきました。限り、あなたの2番目の質問が行くよう

#include <iostream> 
using namespace std; 
int main() 
{ 
    float a = 54; 
    cout << a; 
    double b(a); 
    cout << b; 
    return 0; 
} 

:これを試してみてください

私は別の基本タイプと2つの変数に変換することができf.e. int to 文字列に? f.eを変換するのと同じです。浮動小数点をダブルまたは 異なる?

答えは(つまり、それらは、それらの意味を保つ持って)直接、暗黙的に、あるいはそれらを変換することができないということですが、あなたは確かにあなたのための変換を行うために、このようstd::stringstreamなどなどの施設を使用することができます。一方、floatからdoubleへの変換は、コンパイラがあなたのために行う暗黙の変換です。

+0

ガー、私はちょっと簡単な解決策を思い出しました。ユーザーが入力** int **型を記述したかどうかを確認する方法は? – Cehppel

+0

@mwingdahl:C++での変換に 'sprintf'を使うべきではないと思います。' std :: stringstream'または 'boost :: lexical_cast'を使用してください。 –

+0

@Cehppel:それは全く別の質問です。 。 –

関連する問題