Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Witson
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 35
Записей в блоге: 2
1

Кто может объяснить a = a + b?

06.10.2015, 22:38. Просмотров 860. Ответов 16
Метки нет (Все метки)

Сейчас разбирал функцию for. Но суть не в этом. Меня застопорило такое уравнение: sum = sum + i. Я совершенно не могу понять его смысла и оно ломает мне мозг.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    int i;
    int sum = 0;
    for (i = 1; i >= 1000; i++)
    {
        sum = sum + i;
    }
    cout << "Сумма чисел от 1го до 1000 = " << sum << endl;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2015, 22:38
Ответы с готовыми решениями:

Кто может объяснить?
Кто может объяснить как это делать? Задание 1. В оперативной памяти вектор int...

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

Кто может объяснить строку кода
class Node { public: int value; Node *left; Node *right; ...

Кто может объяснить алгоритм программы? Как она работает?
Нужно позарез. Реально помогите кто что знает. Рисую алгоритмы нужно...

Кто может объяснить алгоритм прораммы.Как она работает?
Кто может объяснить алгоритм прораммы.Как она работает?по пунктам.сначала то,...

16
isobo531
43 / 43 / 28
Регистрация: 11.11.2014
Сообщений: 325
06.10.2015, 22:39 2
Суммирует.
0
Barrent
246 / 122 / 54
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
06.10.2015, 22:48 3
C++
1
sum = sum + i;
эквивалентно записи
C++
1
2
a = sum + i;
sum = a;
Сначала вычисляется сумма (создается безымянная переменная), далее из этой безымянной переменной результат переписывается в переменную sum.
1
Witson
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 35
Записей в блоге: 2
06.10.2015, 22:51  [ТС] 4
isobo531,
Это понятно. Но для меня это все равно что: 2 = 2 + 1.
Я бы понял коли это было бы как: c = a + b, допустим. Хоть и понимаю, что из смены этой переменной весь смысл теряется, скорее всего и оно принимает другое значение.
0
_Valera_
489 / 371 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
06.10.2015, 22:54 5
Цитата Сообщение от Witson Посмотреть сообщение
for (i = 1; i >= 1000; i++)
цикл работать не будет.

Цитата Сообщение от Witson Посмотреть сообщение
sum = sum + i;
берем некое число(sum) и прибавляем к нему i.

Добавлено через 1 минуту
Цитата Сообщение от Witson Посмотреть сообщение
Это понятно. Но для меня это все равно что: 2 = 2 + 1.
а вот тут типично непонимание разницы между операторами "=" и "=="
0
Witson
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 35
Записей в блоге: 2
06.10.2015, 22:55  [ТС] 6
Barrent,
То есть, чтобы таким образом можно было бесконечно повторять это уравнение? Т.е. рекурсия?

_Valera_,
А, это я шалил. Пытался изменить и посмотреть что будет. Хотя конечно понятно, что ничего бы не вышло. Забыл изменения убрать
0
_Valera_
489 / 371 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
06.10.2015, 22:55 7
Лучший ответ Сообщение было отмечено Witson как решение

Решение

"=" - записать в то что стоит слева от него то , что стоит справа.

"==" сравнить то что с лева и то что справа
1
rikimaru2013
C++ Game Dev
2472 / 1141 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
06.10.2015, 22:56 8
Лучший ответ Сообщение было отмечено Witson как решение

Решение

С++ как любой другой язык программирование трансформирует то, что вы написали в код который бы понял компьютер.

В данному случаи в одной строке
C++
1
sum = sum + i;
кроется несколько команд:
1) выполняться будет сперва правая часть оператора "=" потом левая. Тоесть сперва sum + i. Результатом этой операции будет число. Все вычисления компилятор записывает в временную переменую (для себя чтобы не забыть якобы).
2) теперь у него задача попроще - записать в переменную значение с временной переменной, то что эта переменная использовалась ранее в сумировании, он понятия не имеет. Ведь он записал (на листочек) в временную переменную только число. Поэтому он спокойно выполнит и второе действие.

Компьютер выполняет задания. У него нету души! ((((
2
_Valera_
489 / 371 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
06.10.2015, 22:56 9
Цитата Сообщение от _Valera_ Посмотреть сообщение
2 = 2 + 1.
это в математике сравнение, а в программирование присвоение! Разные вещи!!!!!!
1
ValeryS
Модератор
7262 / 5516 / 692
Регистрация: 14.02.2011
Сообщений: 18,672
06.10.2015, 22:58 10
Цитата Сообщение от Witson Посмотреть сообщение
Это понятно. Но для меня это все равно что: 2 = 2 + 1.
отвыкай
расшифровать можно как к переменной sum прибавить i и результат записать обратно в sum
видать еще такую запись не видел
C++
1
 sum += i;
хотя она при переводе более логичная,хотя это аналог, к sum прибавить i

Добавлено через 1 минуту
Цитата Сообщение от _Valera_ Посмотреть сообщение
это в математике сравнение, а в программирование присвоение!
и в математике это может быть присвоением x=2+5
3
Witson
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 35
Записей в блоге: 2
06.10.2015, 22:59  [ТС] 11
Всем спасибо! Легче стало. А то действительно никак не мог понять что к чему.
0
_Valera_
489 / 371 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
06.10.2015, 23:19 12
Цитата Сообщение от ValeryS Посмотреть сообщение
и в математике это может быть присвоением x=2+5
я б не стал это так называть, это скорей констатация факта, хотя не эксперт, спорить не буду.
0
UI-Maker
38 / 38 / 11
Регистрация: 05.09.2015
Сообщений: 262
06.10.2015, 23:49 13
В программировании нет уравнений. Только команды.
sum = sum + i // тут мы приказываем поместить в переменную sum значение выражения sum+i // то есть прибавляем i к sum
if (sum == sum + i) // тут мы сравниваем левую часть и правую, когда они не равны результат будет false, когда равны true.
Но никогда не утверждается что они должны быть равны. Это просто выражения, которые вычисляются.
0
_Ivana
3233 / 1861 / 234
Регистрация: 01.03.2013
Сообщений: 5,091
Записей в блоге: 5
07.10.2015, 01:33 14
Эххх... Вот так и умирают в людях программисты на Прологе и прочих декларативных языках... А какой был потенциал - человек интуитивно все объяснял как надо

ЗЫ если что, в Паскале пишут
Pascal
1
a := a + b;
и такая форма записи меньше сбивает с толку. Еще
Код
a <- a + b
хороша, и т.п. из этой серии.

Добавлено через 5 минут
Цитата Сообщение от UI-Maker Посмотреть сообщение
В программировании нет уравнений.
Цитата Сообщение от UI-Maker Посмотреть сообщение
Но никогда не утверждается что они должны быть равны.
Есть, и утверждается. И уравнения, и бинарные отношения, и все остальное.
0
UI-Maker
38 / 38 / 11
Регистрация: 05.09.2015
Сообщений: 262
07.10.2015, 04:39 15
Например?
0
_Ivana
3233 / 1861 / 234
Регистрация: 01.03.2013
Сообщений: 5,091
Записей в блоге: 5
07.10.2015, 05:08 16
Haskell
1
main = print $ let 2*2=5 in 2*2
Про Пролог даже не будем. Я понимаю, что это выходит за рамки этого раздела, но вы делали заявления масштаба "всего программирования".
0
1337trix
23 / 23 / 11
Регистрация: 04.12.2014
Сообщений: 362
Завершенные тесты: 1
07.10.2015, 05:16 17
Все просто, обычно используется sum++;
Вот допустим, у нас сумма = 0.
Вот и каждый ход делает операцию Sum+1; в итоге 0+1 = 1(следующий шаг =2, и еще след =3 и тд)
0
07.10.2015, 05:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2015, 05:16

Указатели и адреса: может кто-нибудь нормально по-человечески эту тему объяснить?
Добрый вечер. Читаю вот книгу по Липманну и ничего не понимаю из этих слов,...

Список: Каким образом одна структура связывается с другой? Может кто знающий объяснить?
Ребят, может кто подробно объяснить каким образом работают следующие функции?...

Кто нибуть мне дураку может объяснить причину segmenantiob fault в моём коде?
Вот есть функция: QVariantList DocumentManager::getNextsDesc(QString path)...


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

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

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