首页 > 解决方案 > C++ 对大括号之间求和变量的赋值

问题描述

我目前正在为我的 C++ 课程的作业实施一个课程,但有一件事我没有完全掌握。作为一个例子,我将使用整数来使这个问题更笼统。假设我们有以下代码:

#include <iostream>

int main{     
    int p = { 1 + 2 + 3 };
    int q = 1 + 2 + 3;
    std::cout << p << " - " << q << std::endl;
    return 0;
}

p为什么两者的值q相等?大括号的用途是什么?程序的执行方式或性能方面有什么不同吗?我很难在网上找到这些问题的答案,所以我想在这里问。

标签: c++c++11c++14

解决方案


对于标量类型,所有这些语法:

T p = e;
T p(e);
T p{e};
T p = {e};

意味着p用 的值初始化eT(当是类类型时,这些不同的语法可以有不同的含义。)

但是,使用大括号语法,还有一个额外的约束,即转换不能变窄

int p = 2.5;  // ok
int q = {2.5};  // error

这个检查是在编译时完成的,所以它应该对运行时的性能没有影响。


推荐阅读