C ++ If和if else错误消息

时间:2011-05-11 00:31:21

标签: c++ message if-statement

我正在制作数学函数的集合。我使用if语句来创建错误消息并减少用户错误。我不认为我做得对。

string error_0;
string error_i;

if (num1 == 0;) {error_0 = "You cannot divide by zero. Fail."}
    else {error_0 = "";}

if (num1=<0;) {error_i = "Sorry, can't do imaginary numbers."} //for sqroot function
    else {error_i = "";}

if (num2=<0;) {error_i = "Sorry, can't do imaginary numbers."}
    else {error_i = "";}

...这给了我在code :: blocks编译中的以下错误消息。

  • 期望“)”之前“;”令牌(if行)
  • 在“)”标记之前的预期主要表达式(if行)
  • 没有先前的if(仅为最后的其他)

我是C ++的新手,从示例中我看起来一切都是正确的。帮助将不胜感激。感谢。

3 个答案:

答案 0 :(得分:4)

不要将分号放在'()'括号中。另一方面,您必须用分号结束每条指令(并且您没有在第一个'{}'括号中执行此操作)。它应该是:

if (num1 == 0) {error_0 = "You cannot divide by zero. Fail.";}
else {error_0 = "";}
顺便说一下,如果你在if之后使用简单的指令就不必使用括号,也可以这样:

if (num1 == 0)
    error_0 = "You cannot divide by zero. Fail.";
else
    error_0 = "";

答案 1 :(得分:4)

您需要在字符串后面加分号,而在if条件下不需要分号。 此外,运营商为<=,而非=<

string error_0;
string error_i;

if (num1 == 0) {error_0 = "You cannot divide by zero. Fail.";}
    else {error_0 = "";}

if (num1 <= 0) {error_i = "Sorry, can't do imaginary numbers.";} //for sqroot function
    else {error_i = "";}

if (num2 <= 0) {error_i = "Sorry, can't do imaginary numbers.";}
    else {error_i = "";}

答案 2 :(得分:1)

string error_i;
if (num1=<0;) {error_i = "Sorry, can't do imaginary numbers."}
else {error_i = "";} 
  • 您想要的比较运算符是<=(小于或等于)而不是=<
  • 带括号的表达式不需要分号,但语句可以
    • 此处if (expression) { [first-statement-when-true; [second...;]] } else { [first-statement-when-false; [second...;]] }

这足以让它工作,但std::string默认构造函数本身就是“”,所以你根本不需要else { error_i = ""; }代码......

string error_i;

if (n <= 0)
    error_i = "Sorry, can't do imaginary numbers.";

或者,你可以捕捉原作的这种或那种感觉,并立即给error_i一个有意义的值,如:

string error_i = n <= 0 ? "Sorry, can't..." : "";

在上方,?:根据先前表达式(n <= 0)的真值选择它们之间或之后的值,然后将其指定为{{的初始值1}}。有些人会认为这很糟糕,因为将error_i设置为std::string是毫无意义的,可能效率稍低(无论如何它们在默认构造后都是空的),但是使用明确表达您对该程序的思考的代码是通常更重要。