c++ - 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
相等?大括号的用途是什么?程序的执行方式或性能方面有什么不同吗?我很难在网上找到这些问题的答案,所以我想在这里问。
解决方案
对于标量类型,所有这些语法:
T p = e;
T p(e);
T p{e};
T p = {e};
意味着p
用 的值初始化e
。T
(当是类类型时,这些不同的语法可以有不同的含义。)
但是,使用大括号语法,还有一个额外的约束,即转换不能变窄:
int p = 2.5; // ok
int q = {2.5}; // error
这个检查是在编译时完成的,所以它应该对运行时的性能没有影响。
推荐阅读
- c# - How do I add a C# solution file in JetBrains Rider?
- javascript - 格式化对象数组输出
- javascript - Backbone - 聆听 2 个模型的最佳方式是什么?
- git - Git 不断更改文件
- javascript - 如何使用带有锚标记的数组中随机选择的 URL 链接
- javascript - 反应:在 safari 上超过了最大更新深度
- javascript - 请求失败。输入字符串的格式不正确。更新列表 Sharepoint
- sql - 在创建表时使用外键检查另一个表的属性值
- xml - 带有 XSL 的 XML 从平面 xml 生成分层 xml
- docker - 绑定挂载目录时'rw'是什么意思