Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
0 / 0 / 0
Регистрация: 03.11.2020
Сообщений: 3

Ошибка C3447 второй операнд в условном операторе ?: имеет тип "void", но третий операнд не является выражением throw и не имеет тип "void"

03.11.2020, 14:26. Показов 5521. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, подскажите что нужно сделать. Только начинают изучать язык и на глаза попалась на вид простая задача. Но вылезает ошибка при запуске отладки:ошибка E0042 несовместимые типы операндов ("void" и "bool") и
Ошибка C3447 второй операнд в условном операторе ?: имеет тип "void", но третий операнд не является выражением throw и не имеет тип "void". Не могли бы мне подсказать как нужно изменить код, чтобы ошибка не вылетала и все работало нормально. Вот он кстати:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
int main() {
    //Параметры уравнения:
    double a, b;
    //Логическая переменная для записи проверяемых условий:
    bool state;
    //Ввод параметров уравнения:
    cout << "a = ";
    cin >> a;
    cout << "b = ";
    cin >> b;
    cout << "x is: ";
    //Проверка условий и поиск решения:
    state = (a != 0);
    state ? (cout << b / a << endl, exit(0)) : state = (a == 0) && (b == 0);
    cout << (state ? "any number!" : "no result!") << endl;
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.11.2020, 14:26
Ответы с готовыми решениями:

В текстовом файле c именем FN1 дана домашняя работа третьеклассника в формате: <операнд><знак><операнд>=<ответ> В качест
В текстовом файле c именем FN1 дана домашняя работа третьеклассника в формате: &lt;операнд&gt;&lt;знак&gt;&lt;операнд&gt;=&lt;ответ&gt; В...

Ошибка cannot convert from type void*(classname::) () to type void*(*)(void*)
Подскажите пожалуйста как избавиться от ошибки? Есть ещё какой-либо способ, кроме как объявить thread_func как static? Можно конечно...

Void menu(void); что это ? почему не void menu();
void menu(void); что это ? почему не void menu(); void naprimer(void); и это идет в классе это вообще правильно так писать ?

23
 Аватар для Механоид
1 / 1 / 0
Регистрация: 23.03.2025
Сообщений: 13
28.03.2025, 21:39
Студворк — интернет-сервис помощи студентам
SmallEvil, в последнем варианте решений два
1. b/a и any number(exit после b/a удалён);
2. no result .
Цитата Сообщение от SmallEvil Посмотреть сообщение
А вообще, решение рукожопное, и это из книги
Таки да...
С другой стороны для того чтобы беглость в инструментах языка появилась и для начального навыка анализа кода сойдёт
P.S. в авторском варианте мы "any number" увидели только в случае a=b=0, что тоже противоречит логике(это про деление на ноль) )))
Если совсем по честному, то я уже перекрутил дюже))))
0
Заблокирован
29.03.2025, 00:43
Цитата Сообщение от Механоид Посмотреть сообщение
1. b/a и any number(exit после b/a удалён);
Так не бывает.

Уравнение то хоть ax+b=0?
Нуссс..
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
int main(){
   double a,b;
   std::cin >> a >> b;
   if (a == 0)
      std::cout << (b == 0) ? "any number" : "no roots";
   else
      std::cout << b / a;
   std::cout << std::endl;
}
Оно или нет?

Добавлено через 2 часа 23 минуты
Цитата Сообщение от Механоид Посмотреть сообщение
мы "any number" увидели только в случае a=b=0, что тоже противоречит логике
Почему же?
ax+b=0
ax = -b
a = 0, b = 0
0*x = -0 - x может быть любым числом, всё верно.
0
 Аватар для Механоид
1 / 1 / 0
Регистрация: 23.03.2025
Сообщений: 13
29.03.2025, 07:57
Цитата Сообщение от SmallEvil Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
int main(){
   double a,b;
   std::cin >> a >> b;
   if (a == 0)
      std::cout << (b == 0) ? "any number" : "no roots";
   else
      std::cout << b / a;
   std::cout << std::endl;
}
Рационально написанный код для задачи.
Я ошибся при разборе логики авторского кода. Я думал что "any number" должна печататься после решения b/a, т.е. программа просит ввести следующие числа. На самом деле если числа не равны нулю программа выводит результат и завершает работу,в случае a=0, b!=0 "no roots", в случае a=b=0 просит ввести другие числа, потому как в этом случае задача решения не может иметь по причине деления ноль на ноль((((( Спасибо))))
Цитата Сообщение от SmallEvil Посмотреть сообщение
cin >> a >> b;
за этот лайфхак отдельное спасибо)))
0
Заблокирован
29.03.2025, 10:06
Цитата Сообщение от Механоид Посмотреть сообщение
за этот лайфхак отдельное спасибо)))
Это не лайфхак. Это обычное поведение подобных операторов.
Например конкатенация строки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
 
int main(){
   using std::string;
   using namespace std::string_literals;
   string protocol = "https";
   string some_domen = "super-server.com";
   string uri, page = "777";
   
   uri += protocol += "://"s += some_domen += '/' += page;
}
Приравнивания a = b = c = 0;

А работает за счет след. концепции, результатом оператора является тот же объект.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
struct A{
   int c = 0;
   A& operator()(){
      ++c;
      return *this;
   }
};
 
int main(){
   std::cout << A() ()()()()().c; // A() - создание объекта, дальше выховы оператора ()
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.03.2025, 10:06
Помогаю со студенческими работами здесь

binary "оператор": не найден оператор, принимающий правый операнд типа "тип" (или приемлемое преобразование отсутствует)
Выдаёт ошибку С2679: бинарный &quot;-&quot; не найден оператор, принимающий правый операнд типа &quot;std::chrono::steady_clock::time_point&quot;(или...

С++.Операторы в С++: условные операторы, операторы break и continue
Выяснить, пересекаются ли параболы у=аx2+bx+с и у=dx2+ex + f. При положительном ответе найти точки пересечения.

Дважды вычислить значение выражения, используя функции возвращающие void и не void
Хай!Помогите решить Дважды вычислить значение выражения, используя функции возвращающие void и не void....

дважды вычислить значение выражения, используя функции возвращающие void и не void. Компилятор 6 ошибок показывает
#include &lt;iostream.h&gt; #include &lt;math.h&gt; void proc (int n, int m, int k, float &amp;rez) { float chislitel= pow(n-m,2); float...

Ошибка в коде. не найден оператор, принимающий правый операнд типа 'int'
Доброго времени суток. Не понимат что за ошибка: error C2679: бинарный '&gt;': не найден оператор, принимающий правый операнд типа 'int' (или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru