C++ 如果和如果其他错误消息

C++ If and if else error messages

本文关键字:如果 消息 错误 C++ 其他      更新时间:2023-10-16

我正在制作数学函数的集合。我使用 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 = "";}

。这在代码中给了我以下错误消息::块编译。

  • 预期")"在 ";" 标记之前(if 行)
  • "标记(if 行)之前的预期主表达式
  • 否则没有前一个 if (只是为了最后一个 else)

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

字符串后需要一个分号,在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 = "";}

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

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 = "";
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)的真实值选择它们之间或之后的值,然后将其指定为error_i的初始值。 有些人会认为这很糟糕,因为将std::string设置为 "" 是没有意义的,而且可能效率低下(无论如何,它们在默认构造后是空的),但拥有清楚地表达您对程序的想法的代码通常更重要。

相关文章: