NEKO! 2024-01-23 10:49 采纳率: 66.7%
浏览 11
已结题

C++ 关于三元表达式以及static_cast使用的疑问

定义一个结构体 NumScope 以及一个枚举 Type

struct NumScope
{
    double max = 0.0;
    double min = 0.0;
    bool isMaxSet = false;
    bool isMinSet = false;
};

enum Type
{
    INT, DOUBLE
}

实例化并赋值

NumScope ns;
ns.isMaxSet = true;
ns.isMinSet = true;
ns.max = 10.0;
ns.min = 5.0;

Type t = Type::INT;

测试语句

std::cout << std::to_string(t == Type::INT ? static_cast<int>(ns.max) : ns.max)) << std::endl;

测试结果

img

疑问

为什么没有输出10? 是 t == Type::INT 有问题还是 static_cast<int>(ns.max) 没有执行?

  • 写回答

3条回答 默认 最新

  • micthis 2024-01-23 10:57
    关注

    你三元运算符:右边的ns.max是double类型,结果当然是double类型转换成字符串的结果。
    你这样写就是10了:
    std::cout << std::to_string(t == Type::INT ? static_cast<int>(ns.max) : 1) << std::endl;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月31日
  • 已采纳回答 1月23日
  • 修改了问题 1月23日
  • 创建了问题 1月23日