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

Обьяснение для чайника

08.10.2020, 16:23. Показов 1225. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана программа

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
int main(){
    int i,y,x=y=i=0, z=x;
    bool b=false;
    if (x=y) b=true;
    if (!b) i+=x++; else i+=++y;
    cout << ++x << y++ << --i;
    return 0;
}
Объясните пожалуйста по шагам, почему она выводит 20-1 (разницу между х++ и ++х понимаю)
Не понимаю по какой ветви идёт программа, и почему.
И не понимаю какую роль даёт переменная z

Спасибо за ваш ответ!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.10.2020, 16:23
Ответы с готовыми решениями:

Книга для чайника
Решил изучить язык программирования С++ я самый настоящий чайник в программирования и выбрал вот это книгу: Дейтел Х., Дейтел П. - Как...

кнопки с++ для чайника:)
Сталкнулся с такой проблемкой.... нужно выполнить задание... Написати програму, яка циклічно запрошує ввести символ та виводить його код....

Atoi для чайника
Условие задания под спойлером. Данные берутся из input.txt, записываются в output.txt Дана необходимая сумма M, стартовая сумма M0...

4
 Аватар для ram876
759 / 456 / 213
Регистрация: 19.12.2016
Сообщений: 1,815
08.10.2020, 16:55
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main()
{
    int i, y, z, x = y = z = i = 0;//Все значения равно 0
    bool b = false;//b равно ложь
    if (x == y) //Тут у вас было x = y. это присвоение значения переменной х переменной у, но обычно в if  должно быть сравнение
    b = true; //  строка выполнится если х и у равны и b станет истинно
    if (!b) //если b истинно, то !b ложь
    i += x++; //выполнится, если b ложь. сначала i = x, i = 0, потом x += 1;
    else //если условие if (!b) не выполнилось,
    i += ++y;// то выполнится это, сначала у += 1, потом i = y
    cout << ++x << y++ << --i;//вывод без пробелов. x увеличивается на 1 и выводится(х = 1), а переменная у выводится и увеличивается на 1(у = 2), 
    //i уменьшается на 1(i = 0). Программа идет по строкам 1 - 8, 11-15
    return 0;
}
Добавлено через 1 минуту
И z тут не нужен.
0
151 / 103 / 49
Регистрация: 21.11.2019
Сообщений: 285
08.10.2020, 17:03
Лучший ответ Сообщение было отмечено AleKzaNya как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
int main(){
int i,y,x=y=i=0, z=x; //x=0 y=0 i=0 z=0
bool b=false;
if (x=y) b=true; //  не выполняется т.к. присваивание, b все еще false
if (!b) i+=x++; else i+=++y; //i=0+0=0 x=1
cout << ++x << y++ << --i; // (++1)<<(0++)<<(--0)
return 0;
}
0
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 15
08.10.2020, 17:15  [ТС]
Спасибо за ваши ответы
!
Хочу уточнить:
1. получается, что !b это тоже самое что и b=false?
2. if (x=y) b=true; //  не выполняется т.к. присваивание, b все еще false // после этой строки, какая бы не была до этого х, присваивание все равно происходит и х становится равно у?


Я немного ошибся в коде, но возможно это все меняет. Должно было быть z=x++

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
int main(){
    int i,y,x=y=i=0, z=x++;
    bool b=false;
    if (x=y) b=true;
    if (!b) i+=x++; else i+=++y;
    cout << ++x << y++ << --i;
    return 0;
}
0
151 / 103 / 49
Регистрация: 21.11.2019
Сообщений: 285
08.10.2020, 17:35
AleKzaNya,
1. нет, не то же самое ! - это инверсия значения без присваивания
2. Да
Если z все равно нигде не используется, то не важно какое ей значение присвоено, но x станет равен 1, и это тоже не повлияет на результат, так как потом идет if (x=y) присваивание игрику, который равен 0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.10.2020, 17:35
Помогаю со студенческими работами здесь

Задачи для чайника
Всем привет! Недавно начал изучать язык программирования C++, у меня есть Visual Studio 2012, начал уже программировать - знаю уже...

QT для чайника
Хочу выучить QT, можете дать примеры программ (на уровень чайник в QT)

OLE для чайника
Добрый день! Нужна помощь с работой с данными Excel. Работаю в Visual Studio C++. Нужно забирать данные из файла Excel в программу,...

Использование модификатора ref для ссылок на объекты (для чайника)
Всем привет! Изучаю c# по учебнику Шилдта, также разбираю примеры из него. Из примера ниже мне непонятно. Зачем здесь использовать...

ДК для чайника
Мой друг попросил меня помочь ему подобрать ДК 5.1, но не по отдельности, а как говориться в &quot;одной коробке&quot;. Его интересует...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru