结构数组(预期的表达式错误)C++

Array of Structs (expected expression error) C++

本文关键字:表达式 错误 C++ 数组 结构      更新时间:2023-10-16

我有以下代码。我正试图用一副卡片填充数组,无论我如何编写循环来填充数组,我都会遇到同样的错误"预期表达式错误"。

有人能看出我哪里错了吗。我认为这是一件非常简单的事情,我这个刚接触C++的人只是缺少了它。

谢谢!!

#include <iostream>
using namespace std;
struct playingCard{
    char suit; // heart (1), club (2), spade (3), diamond (4)
    int value; // 1 to 13 (ace is LOW)
};
void printArray(playingCard playingCardArray[], int size){
    for (int i = 0; i < size; i ++){
        cout << playingCardArray[i].suit << ":t" << playingCardArray[i].value << endl;
    }
}
int main()
{
    const int ARRAY_SIZE = 52;
    playingCard playingCardArray[ARRAY_SIZE];
    int i = 1;
    int suitLoop = 1;
    while (suitLoop == 1){
        for (int valueLoop = 1; valueLoop <= 13; valueLoop++){
            playingCardArray[i] = {suitLoop, valueLoop},
        }
     }
    printArray(playingCardArray, ARRAY_SIZE);
    return 0;
}

要解决编译问题,请更改内部for循环,如下所示:

for (int valueLoop = 1; valueLoop <= 13; valueLoop++){
    playingCardArray[i].suit = suitLoop;
    playingCardArray[i].value = valueLoop;
}

除了编译之外,您的代码还有Infinite循环,要解决此问题,您需要像这样更改main

int main()
{
    const int ARRAY_SIZE = 52;
    playingCard playingCardArray[ARRAY_SIZE];
    int i = 1;
    int suitLoop = 0;
    while (suitLoop < ARRAY_SIZE){
        for (int valueLoop = 1; valueLoop <= 13; valueLoop++){
            playingCardArray[suitLoop].suit = (suitLoop/13 + 1);
            playingCardArray[suitLoop++].value = valueLoop;
        }
     }
    printArray(playingCardArray, ARRAY_SIZE);
    return 0;
}

playingCardArray[i] = {suitLoop, valueLoop},末尾用分号替换逗号可以解决问题。