Ein Vergleich mit einem String-Literal führt zu einem nicht festgelegten Verhalten.

Ich habe ein Problem mit dem Programm, das ich programmieren möchte. Es ist nur ein Windows-Konsolenprogramm und ich bin sehr neu in C ++. Es ist nur mein 4. Programm.

Das Problem, das ich habe, ist, dass ich beim Ausführen meines Programms keine Fehler habe, sondern viele Warnungen, die in den Zeilen, die ich unten hervorheben werde, besagen, dass der Vergleich mit Zeichenfolgenliteral zu einem nicht festgelegten Verhalten führt.

Wenn das Programm ausgeführt wird, anstatt die gewünschten Zahlen hinzuzufügen, erhalte ich nur eine zufällige riesige Zahl, unabhängig davon, was ich für meine Eingaben eingebe.

Hier ist der Code:

#include <iostream>

using namespace std;

int main()
{
     int hold;
     int i;
     int n;
     i = 6;
     int result;
     int * price;
     char items[100][100];

     if (items == 0)
        cout << "No items can be stored";
    else
    {
        for (n=0; n<i; n++)
        {
            cout << "Item#" << n << ": ";
            cin >> items[n];
        }
        cout <<  "\nYou Entered: \n";
        for (n=0; n<i; n++)
            cout << items[n] << ", ";

    }
    for (n=0; n<i; n++)
    {
        if (items[n] == "ab"){
        price[n] = 2650;
        }

        else if (items[n] == "ae"){
        price[n] = 1925;
        }

        else if (items[n] == "ie"){
        price[n] = 3850;
        }

        else if (items[n] == "bt"){
        price[n] = 3000;
        }

        else if (items[n] == "pd"){
        price[n] = 2850;
        }

        else if (items[n] == "ga"){
        price[n] = 2600;
        }

    }

    for (n=0; n<i; n++)
    {
    result = result + price[n];
    }

    cout << "\nTotal gold for this build: " << result;
    cin >> hold;
    return 0;
}

Jede Hilfe wird geschätzt. Es gibt wahrscheinlich etwas Großes, das ich falsch gemacht habe. Die Namen in den if-Anweisungen sind derzeit alle Platzhalter, und ich werde noch viel mehr if-Anweisungen hinzufügen, wenn ich sie mit der Bare 6 zum Laufen bringen kann.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage