我正在写一本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。
不是这样的吗?
如果我在C中工作,我会使用类型铸造:
double test = 0.0;
test = (double)3/2;
printf("test = %f", test);我从阅读中得到的印象是,如果我在C++中这样做,它将完成同样的任务:
double test {1.2};
test = 3 / 2;发布于 2021-03-08 07:47:55
C ++中有不同的初始化格式。
int x = 10; //复制初始化(不太喜欢)
int y = 10; //值初始化/直接初始化(可在旧的和新的C++中使用)
int z {10}; // Uniform初始化/ Brace初始化/列表初始化(随现代C++一起提供)
使用均匀初始化的优点
https://stackoverflow.com/questions/66413184
复制相似问题