2017-10-09 14 views
0

私はC++の初心者です。C++の絞り込みエラー

#include<iostream> 
int main() 
{ 
    bool a = 2; 
    bool e { 4 }; //error 
    std::cout << a << e; 
    std::cin.get(); 

} 

私は'initializing': truncation from 'int' to 'bool'としてエラーが発生します。 aはなぜ機能し、eでないのですか?

+2

その他の点については、なぜ整数でブール値を初期化していますか? –

+1

何をしようとしていますか? '4'をブール変数に設定しようとしていますか? – user3437460

+0

'bool'を0以外の値(' True')に初期化しようとしています – ccdq23

答えて

1

narrowing conversionは、コンパイル時にわかっている場合、出力先タイプが特定のソース値を適切に表すことができないため、一部の値を切り捨てるか、または係数を取る必要のある組み込みタイプ間の変換(大まかに言うと、値がコンパイル時にわからない場合は、ソース値の可能性があります。

boolは本当に唯一0または1、それらの数値を表すことができないので、だから、boolに既知の値2または4からの変換は、縮小変換です。

C++ 11以来、プログラムでは、{中にある任意の値に絞り込み変換を要求しています。}は、集約の初期化またはリストの初期化に使用されています。

bool a = 2;のように、ソースが中括弧で囲まれていない場合でも、縮小変換が許可されます。

関連する問題