C ++ If и if else сообщения об ошибках - PullRequest
1 голос
/ 11 мая 2011

Я делаю сборник математических функций. Я использовал операторы 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 ]

4 голосов
/ 11 мая 2011

Вам нужна точка с запятой после ваших строк, и вам не нужна точка в условиях 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 = "";}
4 голосов
/ 11 мая 2011

Не ставьте точки с запятой в скобках '()'. С другой стороны, вы должны заканчивать каждую инструкцию точкой с запятой (а вы не делали это в первых скобках '{}'). Должно быть:

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

Кстати, вам не нужно использовать квадратные скобки, если вы используете простую инструкцию после того, как, или иначе, это также может быть:

if (num1 == 0)
    error_0 = "You cannot divide by zero. Fail.";
else
    error_0 = "";
1 голос
/ 11 мая 2011
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 в "" бессмысленна и, возможно, немного неэффективна (в любом случае они пустые после построения по умолчанию), но обычно важнее иметь код, который четко выражает ваше представление о программе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...