簡體   English   中英

嘗試顯示字符數組 C++ 時奇怪的 output

[英]Strange output when trying to display an array of characters C++

語境

我正在嘗試創建一個轉子結構,該結構以特定順序保存字符的 arrays。

代碼

轉子

struct Rotor
{
public:
    char assignedRotor[26];
    void setRotor(int rotor) {
        switch(rotor) {
            case(1):
                assignedRotor = rotor1;
                break;
            case(2):
                assignedRotor = rotor2;
                break;
            case(3):
                assignedRotor = rotor3;
                break;
        };
    }
private:
    char rotor1[26] = {'E', 'K', 'M', 'F', 'L', 'G', 'D', 'Q', 'V', 'Z', 'N', 'T', 'O', 'W', 'Y', 'H', 'X', 'U', 'S', 'P', 'A', 'I', 'B', 'R', 'C', 'J'};
    char rotor2[26] = {'A', 'J', 'D', 'K', 'S', 'I', 'R', 'U', 'X', 'B', 'L', 'H', 'W', 'T', 'M', 'C', 'Q', 'G', 'Z', 'N', 'P', 'Y', 'F', 'V', 'O', 'E'};
    char rotor3[26] = {'B', 'D', 'F', 'H', 'J', 'L', 'C', 'P', 'R', 'T', 'X', 'V', 'Z', 'N', 'Y', 'E', 'I', 'W', 'G', 'A', 'K', 'M', 'U', 'S', 'Q', 'O'};
};

顯示轉子

int main() {
    Rotor rotor;
    for(int i; i < 26; i++) cout << enig.rotor2.assignedRotor[i]
    return 0;
}

Output

輸出

我的“初始化”或“顯示”不正確嗎? 還是兩者兼而有之?

在 c++ 中,如果要聲明任何變量,則必須初始化其值,否則它將是垃圾值。 在您的情況下,您只是在循環中聲明int i並且變量i將指向一些垃圾值。 您可以通過在循環中初始化i = 0來修復它。

int main()
{
    Machine enig;

    for(int i = 0; i < 26; i++)
    {
        cout << enig.rotor1.assignedRotor[i] << endl;
    };

    return 0;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM