C ++缩小错误

时间:2017-10-09 23:11:29

标签: 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

1 个答案:

答案 0 :(得分:1)

(粗略地说)narrowing conversion是内置类型之间的转换,可能需要截断或取一些值的模数,因为目标类型不能适当地表示给定的源值,如果已知的话如果在编译时未知该值,则编译时间或一些可能的源值。

因此,从已知值24bool的转换是一种缩小转化,因为bool无法真正代表这些数字,只有{{} 1}}或0

自从C ++ 11以来,程序要求对用于聚合初始化或列表初始化的1花括号{中的任何值进行缩小转换是非法的。

当源不是大括号时,仍然允许缩小转换,例如}