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

Как исправить Warning?

30.01.2018, 03:03. Показов 21428. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Warning ругается на эту строчку:
C++
1
if(pasirinkimas = true)
И пишет: warning: suggest parentheses around assignment used as truth value [-Wparentheses]|
Что не так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
    #include <iostream>
    #include <string>
    #include <conio.h>
 
    #include <cstdlib> 
    using namespace std;
 
    int main()
    {
        system("mode con cols=120 lines=40");
 
   int pasirinkimas;
    cout << "Выберите товар. Введите число: \n 1 - лимон\n 2 - чай\n 3 - банан\n 4 - кофе\n 5 - ничего\n Ваш выбор: " ;
    cin >> pasirinkimas;
    switch(pasirinkimas)
    {
    case 1:
        cout << "лимон" << endl;
        break;
    case 2:
        cout << "чай" << endl;
        break;
    case 3:
        cout << "банан" << endl;
        break;
    case 4:
        cout << "кофе" << endl;
        break;
    case 5:
        cout << "ничего" << endl;
        break;
 
    default:
        cout << "Плохой выбор" << endl;
    }
 
if(pasirinkimas = true)
    {
        char testi;
        cout << "Продолжать работу программы? (t/n) ";
        cin >> testi;
        switch(testi)
        {
 
        case 't':
            cout << "К сожелению, у нас больше нет товаров." << endl;
            break;
        case 'n':
            cout << "Программа окончила работу" << endl;
            break;
        default:
            cout << "Плохой выбор" << endl;
        }
    }
getch();
return 0;
}
Добавлено через 1 минуту
Всё работает, но, мне просто этот варнинг не нравится и не знаю как правильнее написать, чтоб он не появлялся.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.01.2018, 03:03
Ответы с готовыми решениями:

Как исправить? warning C4244: 'initializing' : conversion from 'int' to 'float' [Код внутри]
В результате если ввести 3 5 6 9 11 (оно должно сложить 5+6+9 и разделить эту сумму на три) выдаёт ответ 6,00000, хотя по идее должно...

Как исправить: warning C4700: использована неинициализированная локальная переменная "a"?
Задача: Код:#include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; #define M 10 #define N 10 #define MAX 50

Как исправить три warning'a mysql_free_result()
Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in...

5
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
30.01.2018, 03:26
Цитата Сообщение от Terminator004 Посмотреть сообщение
warning: suggest parentheses around assignment used as truth value
Предупреждение: предполагается что скобки вокруг присвоения используются в качестве истинного значения.

C++
1
pasirinkimas = true
Это присвоение переменной, именно поэтому когда проверяешь что-то на равенство лучше пиши сначала константу а потом то с чем сравниваешь, тогда тебе явно выдаст ошибку что ты напартачил.

C++
1
if (true = pasirinkimas)
выдаст тебе другую ошибку которая исправляется заметой оператора присвоения на оператор сравнения = на ==.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12922 / 6789 / 1818
Регистрация: 18.10.2014
Сообщений: 17,177
30.01.2018, 03:28
Цитата Сообщение от Terminator004 Посмотреть сообщение
Что не так?
Вы действительно хотите безусловно присвоить переменной pasirinkimas значение true? Если да, то тогда для того, чтобы убрать warning, надо будет поставить дополнительные скобки в if:

C++
1
if((pasirinkimas = true))
Но тогда мне не понятно, зачем вам вообще понадобился этот if, если он всегда заведомо true.

Если же вы хотели сравнить pasirinkimas с true, то оператор сравнения в С++ - это ==, а не =. В этот случае, однако, не ясно, какой смысл вы вкладываете в это сравнение. У вас pasirinkimas - это 1, 2, 3 и т.д. С чего бы это вдруг вам сравнивать его с true?
0
3 / 2 / 1
Регистрация: 14.09.2016
Сообщений: 501
30.01.2018, 03:51  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Вы действительно хотите безусловно присвоить переменной pasirinkimas значение true,
А что, подругому не будет работать вот это:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char testi;
        cout << "Продолжать работу программы? (t/n) ";
        cin >> testi;
        switch(testi)
        {
 
        case 't':
            cout << "К сожелению, у нас больше нет товаров." << endl;
            break;
        case 'n':
            cout << "Программа окончила работу" << endl;
            break;
        default:
            cout << "Плохой выбор" << endl;
        }
Так я тут и проверю, если человек выбрал что-то из этого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 switch(pasirinkimas)
    {
    case 1:
        cout << "лимон" << endl;
        break;
    case 2:
        cout << "чай" << endl;
        break;
    case 3:
        cout << "банан" << endl;
        break;
    case 4:
        cout << "кофе" << endl;
        break;
    case 5:
        cout << "ничего" << endl;
        break;
 
    default:
        cout << "Плохой выбор" << endl;
    }
Так тогда, должно задать вот эти вопросы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 char testi;
        cout << "Продолжать работу программы? (t/n) ";
        cin >> testi;
        switch(testi)
        {
 
        case 't':
            cout << "К сожелению, у нас больше нет товаров." << endl;
            break;
        case 'n':
            cout << "Программа окончила работу" << endl;
            break;
        default:
            cout << "Плохой выбор" << endl;
        }
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12922 / 6789 / 1818
Регистрация: 18.10.2014
Сообщений: 17,177
30.01.2018, 04:32
Цитата Сообщение от Terminator004 Посмотреть сообщение
Так я тут и проверю, если человек выбрал что-то из этого:
Я в упор не вижу никакой связи между if(pasirinkimas = true) и проверкой "если человек выбрал что-то из этого". При чем здесь true вообще?

Условие этого if - всегда заведомо истинно. Как он может что-то "проверять"?
0
 Аватар для Bargos
12 / 12 / 3
Регистрация: 15.11.2017
Сообщений: 37
30.01.2018, 06:38
Вместо

C++
1
if(pasirinkimas = true)
Попробуйте хотя бы это:

C++
1
if (pasirinkimas >= 1 && pasirinkimas <= 5)
Тот факт, что переменная в switch имеет значение, не совпадающее ни с одним из блоков case, не является для программы поводом для выведения ошибки. Это не аварийная ситуация.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.01.2018, 06:38
Помогаю со студенческими работами здесь

КАК исправить Warning при компиляции проекта
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;ncurses.h&gt; #include &lt;time.h&gt; #include &lt;unistd.h&gt; #include...

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean Как исправить?
&lt;?php include (&quot;bd.php&quot;); if (isset($_GET)){$group=$_GET;} echo $group; $res=mysql_query (&quot;SELECT *...

как исправить ошибку Warning: The magic method __toString() must have public visibility and cannot be static
&lt;?php error_reporting(E_ALL &amp; ~E_NOTICE); class employee { public function __construct($surname, $name,...

Как исправить Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\localhost\www\mysite\index.php on line 4
Как исправить Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\localhost\www\mysite\index.php on...

Как исправить Warning: Local variable "x" does not seem to be initialized
как исправить эту ошибку unit1.pas(50,10) Warning: Local variable &quot;x&quot; does not seem to be initialized unit Unit1; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru