Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
10 / 10 / 5
Регистрация: 28.09.2015
Сообщений: 139
1

Нюансы работы с оператором ветвления if else: почему программа ведёт себя не так, как ожидается?

24.09.2016, 19:39. Просмотров 650. Ответов 6
Метки нет (Все метки)

Имеется код:
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
int a;
    char q;
 
    for (;;)
    {
        cout << "Введите число: ";
 
        cin >> a;
 
        cout << "Квадрат числа" << a << " = " << a * a << endl;
 
        for (;;)
        {
            cout << "Продолжить ввод? (Y / N)" << endl;
 
            cin >> q;
 
            if (q != 'N');
            else return 0;
            if (q != 'Y');
            else break;
        }
    }
    return 0;
}
Вопрос: почему нельзя заменить это

C++
1
2
3
4
if (q != 'N');
else return 0;
if (q != 'Y');
else break;
на это

C++
1
2
if (q = 'N') return 0;
if (q = 'Y') break;
Знаю, вопрос глупый, но всё же хочется разобраться почему так, а не иначе.
Во втором случае при любом значении q выкидывает из консоли...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2016, 19:39
Ответы с готовыми решениями:

Нюансы работы с оператором ветвления if else: почему программа ведёт себя не так, как ожидается?
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; void check_weekday(string day) { if...

Нюансы работы с массивами: почему программа ведёт себя не так, как ожидается?
// ConsoleApplication20.cpp: определяет точку входа для консольного приложения. // #include...

Непонятно почему ведёт себя так программа
Задачка: //На шахматной доске 8х8 расположены три фигуры: ферзь, ладья и конь. //Требуется...

Почему так себя ведёт программа? Функции: malloc(), realloc(), free()
Почему большинство значений в output 0 и несколько из значений не равно 0? /* *...

6
6816 / 5957 / 2708
Регистрация: 14.04.2014
Сообщений: 25,504
24.09.2016, 19:44 2
Равно должно быть двойное.
1
Модератор
Эксперт CЭксперт С++
5006 / 2188 / 330
Регистрация: 20.02.2013
Сообщений: 5,597
Записей в блоге: 24
Завершенные тесты: 1
24.09.2016, 19:47 3
Цитата Сообщение от Glitch Посмотреть сообщение
почему нельзя заменить
Glitch, потому что тут у Вас присваивание в условии:
C++
1
2
3
4
if (q = 'N') // Это присваивание, Карл! Тут всегда будет true.
    return 0;
if (q = 'Y') // та же песня
    break;
Возможно, Вы имели ввиду вот это:
C++
1
2
3
4
if (q == 'N') // А это - сравнение, Карл!
    return 0;
if (q == 'Y') // та же песня
    break;
2
10 / 10 / 5
Регистрация: 28.09.2015
Сообщений: 139
24.09.2016, 19:51  [ТС] 4
И правда глупо получилось...
gru74ik, спасибо, совсем из головы вылетело что в скобки берётся сравнение
0
Модератор
Эксперт CЭксперт С++
5006 / 2188 / 330
Регистрация: 20.02.2013
Сообщений: 5,597
Записей в блоге: 24
Завершенные тесты: 1
24.09.2016, 19:53 5
Цитата Сообщение от Glitch Посмотреть сообщение
глупо получилось
Нормально получилось. Для того люди и учатся, чтобы делать ошибки, обнаруживать их, получать опыт. Для того и форум, чтобы помогать тем, кто сам что-то делает и ищет ответы. Всё ОК. Стесняться Вам нечего.
0
4341 / 2007 / 255
Регистрация: 01.03.2013
Сообщений: 5,391
Записей в блоге: 22
24.09.2016, 21:00 6
Цитата Сообщение от gru74ik Посмотреть сообщение
Нормально получилось.
...
2
Миниатюры
Нюансы работы с оператором ветвления if else: почему программа ведёт себя не так, как ожидается?  
sourcerer
24.09.2016, 21:12     Нюансы работы с оператором ветвления if else: почему программа ведёт себя не так, как ожидается?
  #7

Не по теме:

_Ivana, :rofl:

0
24.09.2016, 21:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2016, 21:12
Привет! Вот еще темы с ответами:

Объяснить, почему программа для подсчёта скобок в тексте работает не так, как ожидается
я ввожу текст в блокноте с скобками, мне нужно подсчитать количество скобок в программе, но у меня...

Почему при вводе элементов массива, программа прекращает работу или работает не так, как ожидается?
При вводе элементов массива, программа прекращает работу или не правильно работает. Например если...

Почему цикл работает не так, как ожидается?
Двумя способами реализовал цикл, который увеличивает годовую зарплату на 10% при нажатии 'y' до тех...

Почему malloc работает не так, как ожидается?
int main() { int* p =malloc(sizeof(int)); p=5; printf(&quot;%s\n&quot;,strerror(errno)); ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.