在if语句中调用时,不会在函数中写出字符串。

时间:2011-11-07 19:15:53

标签: c++ string if-statement

以下代码编译没有任何错误,但是当我尝试做2 * 1(或任何其他不是1的数字)时,ans函数中的字符串“Inte ok”没有写在屏幕上程序刚退出 这是为什么?

 //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; 

}

祝你好运。

1 个答案:

答案 0 :(得分:12)

a =! 1不是您认为的那样。这是一项将!1(产生0)分配给a的作业,因此该条件永远不会成立。不等式运算符为!=,但您只需要else,没有其他条件。另外,要调用函数ans,您需要执行ans()

if (a == 1) {
    multi(a, b);
    // ...
} else {
    ans();
    // ...
}