私はコードしようとしているプログラムに問題があります。これは単なるWindowsコンソールプログラムです。私はC++の新機能です。それは私の4番目のプログラムです。文字列リテラルと比較すると、不特定の動作が発生しますか?
私の問題は、プログラムを実行してもエラーはありませんが、以下で強調する行では "文字列リテラルとの比較結果が不特定の動作である"との警告がたくさんあることです。
数字を追加する代わりにプログラムを実行すると、入力する内容に関係なくランダムな巨大な数値が返されます。
#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;
}
すべてのヘルプは高く評価されています。ここでは
はコードです。おそらく私が間違っていた大きなものがあります。 if文の名前は現在すべてプレースホルダであり、if文を追加すると、それが動作する必要のある裸の6で動作するようになります。
'if(items == 0)'は意味をなさない。あなたは 'items'を動的に割り当てるのではなく、スタック変数です。その比較は決して真実ではありません。 – Praetorian