次のコードはエラーなしでコンパイルしますが、2 * 1(または1以外の数字)を実行しようとすると、ans関数の文字列 "Inte ok"がプログラムの画面に表示されません終了する。 なぜですか?if文で呼び出されたときに文字列が関数で書き出されません。
//Test för att se om jag förstår funktioner
#include <iostream>
#include <string>
using namespace std;
//Deklarerar variblar som jag ska använda
int a,b,x;
string s, ab;
//Skriver ut funktionen för att multiplicera
int multi(int a, int b)
{
x = a * b;
return x;
}
string ans()
{
using std::string;
string s = "Inte ok";
ab = s;
return ab;
}
//Samlar in värde från användaren, skickar den till funtktionen "multi" som multiplicerar den, sedan skickar den tillbaks den till main via return. Main visar sedan
//resultatet för användaren
int main(void)
{
using std::cout;
using std::cin;
using std::string;
cout << "Ange ett nummber som du vill multiplicera: \n\n";
cin >> a;
cout << "\n";
cout << "Ange det andra nu: \n";
cin >> b;
cout << "\n";
if(a == 1)
{
multi(a,b);
cout << "Svaret är: " << x << "\n";
}
else if (a =! 1)
{
ans;
cout << "\n" << ab;
}
return 0;
}
なぜあなたはそれを返すよりも、グローバル変数(AB)に代入されますか?一般的には、どちらか一方を選ぶでしょう。 –
副題として: '-Wall'でコンパイルすると、コンパイラは' else if(a =!1 ) '。メモリが私に役立つなら、gccは*割り当ての周りに括弧を入れてみましょう*(あなたが割り当てを意図していないので...)。 – bitmask