bool i = valid_triangle ( a, b, c);
if (i == true);
{
printf("triangle is true: \n");
}
if (i == false);
{
printf("triangle is false: \n");
}
Здесь много проблем. Во-первых, у вас есть точки с запятой после условий if, это завершает оператор if раньше, чем вы предполагали, и поэтому операторы printf не являются частью ваших операторов if.
Во-вторых, эти два варианта являются альтернативными, поэтому вы должны написать один if ... else ...
утверждение, а не два if ...
утверждения.
В-третьих, у вас есть очень распространенное недоразумение ie о том, что переменные bool
необходимо сравнивать с true
(или false
), но это не так , Булевы переменные являются истинными или ложными сами по себе, их не нужно сравнивать с истинными или ложными. Это не ошибка, это работает, но показывает отсутствие понимания.
В-четвертых, i
- действительно ужасное имя для этой переменной, как насчет valid
?
Соединив все это вместе, мы получим
bool valid = valid_triangle(a, b, c);
if (valid)
{
printf("triangle is valid: \n");
}
else
{
printf("triangle is invalid: \n");
}
И, честно говоря, я бы даже не использовал здесь переменную. Этот код также является правильным
if (valid_triangle(a, b, c))
{
printf("triangle is valid: \n");
}
else
{
printf("triangle is invalid: \n");
}
Ни одна из проблем не является той, на которую вы действительно жаловались (которая, кажется, не воспроизводима), но, надеюсь, это полезно.