-1

编码

#include <iostream>
#include <vector>

int main () { std::vector<int> N = {3e6, 4e6}; }

给出错误

error: narrowing conversion of ‘3.0e+6’ from ‘double’ to ‘int’ inside { } [-Wnarrowing]|||.

然而

#include <iostream>
#include <vector>

int main () {
   std::vector<int> N = {3*10^6, 4*10^6};
   for (int n: N ){ std::cout << n << std::endl; }
}

印刷

24
46.

如何正确将此向量定义为整数向量?

如果在写这个问题时发现设置

int n1 = 3e6, n2 = 4e6;
vector<int> N = {n1, n2};

确实有效,但有更好的方法吗?在 n1 和 n2 的声明中,类型仍然从 double 转换为 int。

4

1 回答 1

3

如果您坚持使用该表示法,则可以执行显式强制转换以关闭编译器,但这不是一个好主意:

#include <iostream>
#include <vector>

int main () { std::vector<int> N = {int(3e6), int(4e6)}; }
于 2017-06-07T17:38:33.967 回答