添加两个整数,但一个声明为"int",另一个声明为"auto"?
Adding the two integers but one declared as an "int" and other as "auto"?
我试图找到数组中所有元素的和,并使用auto
将我的初始累加器变量sum
声明为0
。
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n;
auto sum {0};
cin >> n;
vector<int> arr(n);
for(int arr_i = 0;arr_i < n;arr_i++){
cin >> arr[arr_i];
sum=sum+arr[arr_i];
}
cout<<sum;
return 0;
}
它给了我一个编译错误。我想知道这是怎么回事。
错误:"sum+arr.std::vector<"中的"operator+"不匹配_Tp,_Alloc>::operator[]>(((std::vector::size_type)arr_i))'|
我在gcc编译器中使用代码块,是的,C++11已经启用。
在C++11中,当您使用时
auto sum {0};
则sum
是类型std::initializer_list<int>
并且包含一个元素0
。这是因为{0}
是一个有支撑的初始化列表。
使用= 0;
或(0)
应该可以正常工作于您的代码,例如:
auto sum = 0;
auto sum(0);
编辑:根据评论,这不是程序员通常所期望的,因此N3922提案在C++17中必然会发生变化,该提案已经在GCC和Clang的新版本中实现,甚至根据C++委员会的要求,-std=c++11
和-std=c++14
也会实现。
相关文章:
- 没有显式声明的int[]中的foreach
- 在 C++ 中声明 int 与<<
- 为什么在某些编译器中可以声明像int myarr[noconstant]这样的数组;而不是在其他编译器中?
- 'int a'声明隐藏参数
- 声明的 int 具有随机起始值
- 格式为`int Typedef my_int;`的Typedef声明
- 如何声明一个必须在C++中同时存储int和char值的2D数组
- 当我们声明 cin 为 int 并从 cin 中获取输入并在 cout 中打印 cin 时会发生什么?
- 错误:"int pow(double,int)"与上一个声明int pov(double a,int
- 在变量名后声明带有 () 的非内部类型与不使用变量名的行为不同。即 std::map<int,char>x(); - 这是怎么回事?
- 涡轮增压 这个声明“int fun-name(static int)”在C++中是否有效,为什么
- 在 c++ 中声明 int 对象
- 为什么或何时用指针声明int
- 这个声明"int(*ptr[3])();"是什么意思?
- 为什么在使用#define声明int的vector的vector时没有抛出错误
- 此类声明 int(a) 的 GCC 文档
- 为什么 p2 不是声明 int* p1, p2; 中的指针类型
- 在Xcode下的C++中声明int的数组
- 双指针二维数组声明int** seq=new int* [n];
- 声明 int 数组