C++ 未使用的变量&;应在';之前使用主表达式';

C++ 未使用的变量&;应在';之前使用主表达式';,c++,c++11,C++,C++11,我看了其他答案,但没有真正起到作用,因为1)我不明白(特别是如果这不是我的问题),2)我注意到我的班级学习编程的方式与我在网上看到的方式有很大不同。例如,我们正在使用std。因此,我很抱歉重复这个问题 以下是我的编译器错误: main.cc:在函数“int sum_up(std::array)”中: main.cc:21:19:错误:在']'标记之前应该有主表达式 sum+=arr[i,size_t]; ^ main.cc:18:9:警告:未使用的变量'size'[-Wunused variab

我看了其他答案,但没有真正起到作用,因为1)我不明白(特别是如果这不是我的问题),2)我注意到我的班级学习编程的方式与我在网上看到的方式有很大不同。例如,我们正在使用std。因此,我很抱歉重复这个问题

以下是我的编译器错误: main.cc:在函数“int sum_up(std::array)”中:

main.cc:21:19:错误:在']'标记之前应该有主表达式
sum+=arr[i,size_t];
^
main.cc:18:9:警告:未使用的变量'size'[-Wunused variable]
尺寸=阵列尺寸()//在这个系统中,size\u t只是一个无符号int
^
main.cc:在函数“int sum_up(std::vector)”中:
main.cc:28:9:警告:未使用的变量'size'[-Wunused变量]
大小=向量大小();
^
这是我的密码: 它实际上是我们老师预先制作的;我们的重点是函数和如何总结C风格和C++风格数组/向量。我的代码和我朋友的完全一样,但由于某种原因,我的代码无法编译

谢谢你的帮助

#include <iostream>
#include <cstdlib>
#include <array>
#include <vector>

using namespace std;

const size_t ARR_SIZE = 5;

int sum_up(int arr[], size_t size) { //Function to sum up a C-style array
    int sum = 0;
    for (size_t i = 0; i < ARR_SIZE; i++)
        sum += arr[i];
    return sum; //Stub
}

int sum_up(array<int, ARR_SIZE> arr) {
    size_t size = arr.size(); //A size_t is just an unsigned in 
    //on       this system
    int sum = 0;
    for (size_t i = 0; i < ARR_SIZE; i++)
        sum += arr[i, size_t];

    return sum; //Stub 
}

int sum_up(vector<int> vec) {
      size_t size = vec.size();
      int sum = 0;
      for (size_t i = 0; i < ARR_SIZE; i++)
          sum += vec[i];

      return sum; //Stub
}

void die() {
     cout << "Invalid input.\n";
     exit(EXIT_FAILURE);
}

int main() {
    int c_arr[ARR_SIZE] = {}; //Size ARR_SIZE, initialized to zero
    array<int, ARR_SIZE> cpp_arr = {}; //Size ARR_SIZE, initialized to zero
    vector<int> vec_arr(ARR_SIZE);  //Size ARR_SIZE, initialized to zero

    cout << "Welcome to the Arrayitizer 2000(tm). Today we will be doing    arrays three different ways.\n";
    cout << "Please enter " << ARR_SIZE << " integers.\n";

    //Now let's read into three arrays
    for (size_t i = 0; i < ARR_SIZE; i++) {
        int x;
        cin >> x;
        if (!cin) die();
        c_arr[i] = x;
        cpp_arr[i] = x;
        vec_arr.at(i) = x;
    }

    //Let's print them out
    cout << "You entered (one column for each of the three arrays):\n";
    for (size_t i = 0; i < ARR_SIZE; i++) {
        cout << c_arr[i] << "\t" << cpp_arr[i] << "\t" << vec_arr.at(i) << endl;
    }

    cout << "Summming up the three arrays:\n";

    //Now lets sum them up and verify they all return the same value
    int sum_c =   sum_up(c_arr, ARR_SIZE);
    int sum_cpp = sum_up(cpp_arr);
    int sum_vec = sum_up(vec_arr);

    cout << "sum_c:   " << sum_c   << endl;
    cout << "sum_cpp: " << sum_cpp << endl;
    cout << "sum_vec: " << sum_vec << endl;

    if (sum_c == sum_cpp and sum_c == sum_vec) {
        cout << "Congrats, you added up all three arrays the same!\n";
    } else {
        cout << "Unfortunately, your code for summing up the three arrays returned different results.\n";
    }
}                
#包括
#包括
#包括
#包括
使用名称空间std;
常数大小=5;
int sum_up(int arr[],size_t size){//用于对C样式数组求和的函数
整数和=0;
对于(大小i=0;i想必,以下是一个打字错误:

arr[i,size_t]
//   ^^^^^^^
编译器实际上将您指向的正是这段代码,因此您可能已经发现了这段代码。或者,至少,将这部分代码与您朋友的版本进行比较(如果它编译的话,这部分代码不可能与您的版本“完全相同”)

警告只是:警告。他们警告你他们所说的,他们警告你:你声明但从未使用的变量。那么为什么要声明它们呢


最后,我不明白你为什么说你没有“使用std”-假设你没有引用
using namespace
语句(因为你正在使用它),我只能假设你认为你没有使用标准库。然而,你确实在使用!事实上,到处都是!向量、C++11数组、流…

编译器向你指出了明显的错误:

  • arr[i,size\u t]
    应为
    arr[i]

  • 第一个函数循环
    ARR\u SIZE
    次,而不是使用
    SIZE
    参数

  • 第二个函数循环
    ARR_SIZE
    次,而不是使用
    SIZE
    变量
  • 第三个函数也循环
    ARR_SIZE
    次,而不是使用
    SIZE
    计算为
    vec.SIZE()
这三个函数都可能产生正确的和,但这只是巧合

以下是更正的版本:

int sum_up(int arr[], size_t size) { //Function to sum up a C-style array
    int sum = 0;
    for (size_t i = 0; i < size; i++)
        sum += arr[i];
    return sum;
}

int sum_up(array<int, ARR_SIZE> arr) {
    int sum = 0;
    for (size_t i = 0, size = arr.size(); i < size; i++)
        sum += arr[i];
    return sum;
}

int sum_up(vector<int> vec) {
    int sum = 0;
    for (size_t i = 0, size = vec.size(); i < size; i++)
        sum += vec[i];
    return sum;
}
int sum_up(int arr[],size_t size){//函数对C样式数组求和
整数和=0;
对于(大小i=0;i<代码> >你可以修复你的缩进吗?不要标记C++问题。当然,正确的方法是<代码> int SUMYC C=STD::累加(STD::开始(CYARR),STD::结束(CARARR),0)
以及
cpp_arr
vec_arr
的明显变化。哦,对不起,我的意思是我们正在使用STD!而我发现的大多数程序都不是。我的bad@Alexis听起来你发现了很多可怕的程序。很遗憾,在C++世界里,这是很容易的,因为它已经存在了很长时间,而且通常教得很差。是的,我不明白这怎么会是一个拼写错误?他是这么说的,它应该是总和吗?关于声明变量,我不确定。这就是老师放在那里并说要保留的。那我怎么才能声明它们呢?我不应该删除它们。请和谢谢you@Alexis字体好吧,不管是不是打字错误,都是大错特错。你在别的地方是对的:
arr[i]
,大小
是如何进入的?它应该做什么?
int sum_up(int arr[], size_t size) { //Function to sum up a C-style array
    int sum = 0;
    for (size_t i = 0; i < size; i++)
        sum += arr[i];
    return sum;
}

int sum_up(array<int, ARR_SIZE> arr) {
    int sum = 0;
    for (size_t i = 0, size = arr.size(); i < size; i++)
        sum += arr[i];
    return sum;
}

int sum_up(vector<int> vec) {
    int sum = 0;
    for (size_t i = 0, size = vec.size(); i < size; i++)
        sum += vec[i];
    return sum;
}