Форум программистов, компьютерный форум CyberForum.ru

Помогите чайнику с инкрементом... - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Динамический массив символов http://www.cyberforum.ru/cpp-beginners/thread13873.html
Что я делаю не так? вот код: header.h #include<iostream> #include<string.h> class m{public: m();~m(); void set(char* _str); private:char *str;
C++ Вычислить сумму элементов диагоналей матрицы такой топик был на Паскале, кто иожет напишите пожалуйста на С++ Собственно говоря помощь заключается в решении задачи Задача:дана квадратная матрица.Нужно вычислить сумму элементов диагоналей(всех - для каждой отдельно),параллельных главной. Понимаю,что задача простая,однако с ней мучается полгруппы.Ума наверно нам не хватает!)) Заранее благодарен! Добавлено через 4 минуты 17 секунд и... http://www.cyberforum.ru/cpp-beginners/thread13861.html
C++ Подскажите On-line C++ компилятор
Вообщем ситуация: - работа далекая от программинга; - заадминеный комп; - по долгу службы компилятор иметь не положено, тем более паленный:). Какие в инете он-лайн компиляторы есть для С++, либо же компиляторы которые можно просто записать на винт и они будут работать без инсталяции, при этом не запрашивая при запуске админовских прав. Если что, выкидывайте все варианты какие есть, будут...
C++ Вопрос по работе с массивами
Уважаемые! Пишу программу на Си разбиения текста на страницы, возник вопрос как в двумерный массив после каждой десятой строки вставить строку состоящую из пробелов?
C++ Проблемы со встакой операторов ассемблера http://www.cyberforum.ru/cpp-beginners/thread13835.html
Вставил в программу следующий код : .......... asm{ rol al,cl; } ........... ошибки при компиляции: 1. missing ';' before '{' 2.'rol':undeclared identifier
C++ Задачка на массивы Привет,ребята!!! Подскажите пожалуйста,как решить одну задачку на С++. Запуталась,никак не могу решить...:scratch::help: Дана целочисленная квадратная матрица.Определить: 1. сумму элементов в тех строках,которые не содержат отрицательных элементов; 2. минимум среди сумм элементов диагоналей,параллельных главной диагонали матрицы. Большое спасибо. подробнее

Показать сообщение отдельно
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
14.10.2008, 17:16     Помогите чайнику с инкрементом...
Пергрузка операций тут не при чем. Приоритет тоже. Ты читаешь строку слева направо. Никто же не обещал, что операторы потоков буду делать также. Поясняю:
Код
. начинаем выполнение cout
00411A05  mov         eax,dword ptr [i]   грузим текущее значение i в EAX. теперь там 0.
00411A08  mov         dword ptr [ebp-0D0h],eax    .запомнил адрес? 
00411A0E  mov         ecx,dword ptr [i]     . следующие три операции - это инкремент
00411A11  add         ecx,1 
00411A14  mov         dword ptr [i],ecx     . теперь i равно единице
00411A17  mov         esi,esp 
00411A19  mov         edx,dword ptr [__imp_std::endl (41A344h)] 
00411A1F  push        edx      .помещаем символ перехода на новую строку.
00411A20  mov         edi,esp 
00411A22  mov         eax,dword ptr [ebp-0D0h]     .помнишь еще? здесь 0
00411A28  push        eax        .грузим теперь 0
00411A29  push        offset string ", (i++)= " (417868h)     .наша строка, где 0
. обрати внимание на этом шаге у нас уже есть
"(i++)= " 0 endl; 
00411A2E  mov         ebx,esp
00411A30  mov         ecx,dword ptr [i] 
00411A33  push        ecx      .а вот теперь уже грузим i. А он единица.
00411A34  push        offset string "i = " (417800h)     .строку..
00411A39  mov         edx,dword ptr [__imp_std::cout (41A348h)] 
00411A3F  push        edx       .поток cout
00411A40  call        std::operator<<<std::char_traits<char> > (411159h)   .собственно, вызов
Понятно теперь почему?

Добавлено через 5 минут 50 секунд
Если совсем у тебя плохо с ассемблером, то перевожу, как интерпретируется строка:
Код
cout<<"i = "<<i<<", (i++)= "<<i++<<endl;
Первым делом инкрементриую i, запоминаю его предыдущее значение. В конец помещаю переход на новую строку, за ним, я вывожу предыдущее значние i (0), потом в строку толкаю '(i++)= ', потом туда же толкаю уже текущее значение i, и затем строку 'i = '.
Вот и вся марихуана...

Добавлено через 5 минут 30 секунд
Цитата Сообщение от Ranofer Посмотреть сообщение
Но..
Программа
Код
#include <iostream>
#include <windows.h>
using namespace std;
int main(){
    int i=0;
    cout << "i = " << i << ", (i++)= " << i++ << endl;
    cout << "i = " << i << endl;
    system("pause");
    return 0;
}
Молодой человек, Вы гоните. Первая программа у вас аналогичная. Пробелы ничего не меняют.

Добавлено через 14 секунд
Смотри выше, я написал, почему.
 
Текущее время: 14:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru