[英]Understanding “universal and uniform Initialization” in C++
我正在通过一本 C++ 书自学。 我正在阅读的这本书讲述了通过类型转换缩小范围。 它解释了如何将 double 缩小为 int,并说“如果您认为转换可能会导致错误的值,您应该怎么做?使用 {} 初始化程序来避免意外。” 然后它给出了一个非常有限的示例代码,它几乎没有上下文:
double x{ 2.7 }; // OK
int y(x); //error:double -> int might narrow
我尝试运行一些代码,以便了解它是如何工作的,但结果不是我所期望的:
double test {1.2};
cout << "First Line test = " << test << '\n';
test = 3 / 2;
cout << "Test = " << test << '\n';
从我读到的内容来看,如果我使用{}
而不是=
版本初始化double test
,我会觉得我会阻止变量test
稍后被缩小为int
。
这不是它的工作原理吗?
我已经阅读了这里和这里提到的关于integer 部门的内容,但对我来说仍然不清楚。
如果我在 C 工作,我会使用类型转换:
double test = 0.0;
test = (double)3/2;
printf("test = %f", test);
我的阅读印象是,如果我在 C++ 中执行此操作,它会完成相同的操作:
double test {1.2};
test = 3 / 2;
C++中有不同的初始化格式。
int x = 10;
// 复制初始化(不太喜欢)
int y = 10;
// 值初始化/直接初始化(在新旧 C++ 中都可用)
int z {10};
//统一初始化/大括号初始化/列表初始化(现代C++附带)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.