【问题标题】:C++ If and if else error messagesC++ If 和 if else 错误消息
【发布时间】:2011-05-11 00:31:21
【问题描述】:

我正在收集数学函数。我使用 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 行)之前的预期主表达式
  • else 没有前一个 if(仅用于最后一个 else)

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

【问题讨论】:

    标签: c++ message if-statement


    【解决方案1】:

    字符串后面需要一个分号,if 条件中不需要一个分号。 另外,运营商是&lt;=,而不是=&lt;。

    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 = "";}
    

    【讨论】:

    • 啊,非常感谢,工作就像一个魅力。我的例子对我来说可能有点太旧或太混乱了:P。顺便说一句,我有点新......当一个问题得到回答时,我们需要删除它,还是让其他人找到答案?
    • @TwoRoses:你把问题留了。如果您认为某个答案完全解决了您的问题,请在其左侧标记复选标记。这有助于回答其他人将来可能遇到的类似问题。
    【解决方案2】:

    不要将分号放在'()'括号中。另一方面,您必须以分号结束每条指令(并且您没有在第一个'{}'括号中这样做)。应该是:

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

    顺便说一句,如果在 if 或 else 之后使用简单指令,则不必使用括号,也可以:

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

    【讨论】:

      【解决方案3】:
      string error_i;
      if (num1=<0;) {error_i = "Sorry, can't do imaginary numbers."}
      else {error_i = "";} 
      
      • 您想要的比较运算符是&lt;=(认为小于或等于)而不是=&lt;
      • 带括号的表达式不需要分号,但语句需要
        • 这里if (expression) { [first-statement-when-true; [second...;]] } else { [first-statement-when-false; [second...;]] }

      这足以让它工作,但std::strings 默认构造函数本身就是“”,所以你根本不需要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 &lt;= 0)的真值选择它们之间或之后的值,然后将其赋值为error_i的初始值。有些人会认为这很糟糕,因为将std::string 设置为"" 是没有意义的,而且可能效率略低(无论如何在默认构造之后它们都是空的),但是拥有清楚地表达您对程序的想法的代码通常更重要。

      【讨论】:

        猜你喜欢
        • 2023-03-07
        • 2016-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多