• 52.【bool类型输入任何非0数值不为1的版本原因】


    【visual studio 2022版】

    7636f96bfa814c21ab8dd354bbad607c.png

     【即bool类型不赋初值】

    #include

    using namespace std;

    int main()

    {

     bool x;

     cout << "请您手动输入bool的值为:" << endl;

     cin >> x;

     cout << "结果为:" << x << endl;

     return 0;

    }

    8d2288350b434e548a22cad22be920e0.png

    ==================== 5348bb843f134634ae71ce5d81b66b8c.png

    【即bool赋初值】

    #include

    using namespace std;

    int main()

    {

     bool x=false;

     cout << "请您手动输入bool的值为:" << endl;

     cin >> x;

     cout << "结果为:" <

     return 0;

    }

    e9f220893ee8462394a7306751fd8b4d.png

     ==========================

    【visual studio 2015版】

    1f5dfe7ca3dc4bcdbdd624628e7419e5.png

    【即bool类型不赋初值】 

    #include

    using namespace std;

    int main()

    {

     bool x;

     cout << "请您手动输入bool的值为:" << endl;

     cin >> x;

     cout << "结果为:" << x << endl;

     return 0;

    }

    7043353b14da46abbdac0148f54d9efe.png

     ====================

    b3204962c9fd4ace9affba983445bd0f.png 

    【当bool赋初值的时候(会变false)】

    #include

    using namespace std;

    int main()

    {

     bool x=false;

     cout << "请您手动输入bool的值为:" << endl;

     cin >> x;

     cout << "结果为:" <

     return 0;

    }

    d0a2e5951d714ccc8fc492c0f5af619d.png

     

    为什么会变成这样?

    因为当bool类型变量通过cin赋值时,如果输入”非0非1“,变量值不改变。也就是bool类型变量通过cin进行赋值只能键入0或者1,其他无效。

    怎么更改呢?

    一般通过设置中间量判断,再对bool变量进行间接赋值。无论对x有没有定义,通过int类型变量a来强制赋值bool类型变量x,有效解决上边出现的问题。

    ====================

    【强制赋值】

    #include
    using namespace std;
    int main()
    {
        bool x=false;
        cout << "请您手动输入bool的值为:" << endl;
        int a;
        cin >> a;
        x = a;
        cout << "结果为:" <     return 0;

    }

    256a9d5008b5423b9b3e1f2a3caa8fda.png

     

     

  • 相关阅读:
    2023年软件测试常见面试题
    用MATLAB求解微分方程
    08-高性能表结构及索引设计最佳实践-05
    SpringBoot打造企业级进销存 第二讲 (一)
    成功解决:文档根元素 “mapper“ 必须匹配 DOCTYPE 根 “null“
    .NET与C#未来大流行是必然趋势
    Leetcode85. 最大矩形
    MySQL计算时间差
    ASR6500S系列LoRa SIP模块集成了RF前端和LoRa无线电收发器SX1262系列
    Redis教程
  • 原文地址:https://blog.csdn.net/qq_69683957/article/details/126114068