添加两个整数,但一个声明为 "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;
}
它给我一个编译错误。我想知道这有什么问题。
error: no match for 'operator+' in 'sum + arr.std::vector<_Tp, _Alloc>::operator[] >(((std::vector::size_type)arr_i))'|
我在 gcc 编译器中使用代码块,是的,C++ 11 已启用。
在 C++11 中,当您使用
auto sum {0};
thensum
是 std::initializer_list<int>
类型,包含一个元素 0
。这是因为 {0}
是一个花括号初始化列表。
使用 = 0;
或 (0)
应该适用于您的代码,例如:
auto sum = 0;
auto sum(0);
编辑: 根据评论,这不是程序员 usually expected, hence it is bound to change in C++17 with the N3922 proposal, which is already implemented in newer versions of GCC and Clang, with even for -std=c++11
and -std=c++14
per the request of the C++ committee。
我试图找到数组中所有元素的总和,并使用 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;
}
它给我一个编译错误。我想知道这有什么问题。
error: no match for 'operator+' in 'sum + arr.std::vector<_Tp, _Alloc>::operator[] >(((std::vector::size_type)arr_i))'|
我在 gcc 编译器中使用代码块,是的,C++ 11 已启用。
在 C++11 中,当您使用
auto sum {0};
thensum
是 std::initializer_list<int>
类型,包含一个元素 0
。这是因为 {0}
是一个花括号初始化列表。
使用 = 0;
或 (0)
应该适用于您的代码,例如:
auto sum = 0;
auto sum(0);
编辑: 根据评论,这不是程序员 usually expected, hence it is bound to change in C++17 with the N3922 proposal, which is already implemented in newer versions of GCC and Clang, with even for -std=c++11
and -std=c++14
per the request of the C++ committee。