Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2008, 18:06   #1
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию операции увеличения в с++

Объясните пожалуйста чем отличается эта операция увеличения:
current_count = count++;
от этой:
current_count = ++count;
JOFRIF вне форума Ответить с цитированием
Старый 26.04.2008, 18:40   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Первый, это сначала значение используется в выражении, а потом увеличивается.
Второй, когда значение сначала увеличивается, а затем используется в выражении. Вот пример (взят из книги Х.М. Дейтел и П.Дж. Дейтел "Как программировать на С++"):
Код:
#include <iostream>

using std::cout;
using std::endl;

int main()
{
	int c;
	
	//постфиксный инкремент
	c=5;

	cout<< c <<endl;
	cout<< c++ <<endl;
	cout<< c <<endl;

	
	//префиксный инкремент
	c=5;
	
	cout<< c <<endl;
	cout<< ++c <<endl;
	cout<< c <<endl;

	return 0;
}
Сравни результаты и все поймешь. Книгу можна найти вот здесь.
MaTBeu вне форума Ответить с цитированием
Старый 26.04.2008, 19:05   #3
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Цитата:
Первый, это сначала значение используется в выражении, а потом увеличивается.


как понять "сначала значение используется в выражении"?


Код:
#include <iostream>  
  
using std::cout;  
using std::endl;  
  
int main()  
{ 
    int c; 
     
    //постфиксный инкремент 
    c=5; 
 
    cout<< c <<endl;     // выводит 5
    cout<< c++ <<endl;  // ""  5
    cout<< c <<endl; // "" 6
 
     
    //префиксный инкремент 
    c=5; 
     
    cout<< c <<endl;       // выводит 5
    cout<< ++c <<endl;   // "" 6 
    cout<< c <<endl;   //"" 6
 
    return 0; 
}
JOFRIF вне форума Ответить с цитированием
Старый 26.04.2008, 19:12   #4
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Блин... Ну когда пишешь
Код:
cout<< c++ <<endl;
то выводит текущее значение, а потом увеличивает его.
Когда пишешь
Код:
cout<< ++c <<endl;
Значение сначала увеличивается, а потом выводится.

Короче, вот это
Код:
cout<< c++ <<endl;
всеравно что написать
Код:
cout<<c<<endl;
с=с+1;
А вот это
Код:
cout<< ++c <<endl;
всеравно, что написать
Код:
с=с+1;
cout<<c<<endl;
Так понятнее?

Последний раз редактировалось MaTBeu; 26.04.2008 в 19:15.
MaTBeu вне форума Ответить с цитированием
Старый 26.04.2008, 19:50   #5
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Код:
  
 cout<<c<<endl;  
 с=с+1;
с=с+1 //это формула.
Какая разница где будет формула, сверху или снизу все равно прога выполнит команду.

Вот например:

Код:
// Konverter Valut 
#include <iostream.h>
void main()              
{
	cout<<"\n";           //1 USD = 23.3696 RUB 
	float Kolvo_dollarov;
	double Rubley;
	cout<<"\t\tDollarov: ";
	cin>>Kolvo_dollarov;
	Rubley=Kolvo_dollarov*23.3696;
	cout<<"\t\tRubley: = "<<Rubley;
	cout<<"\n";
}
В данном случае формула Rubley=Kolvo_dollarov*23.3696;
Не важно где будет формула, она может идти как сразу после объявления переменных, так и в любом другом месте (после переменных).
Вообщем я не понимаю.
JOFRIF вне форума Ответить с цитированием
Старый 26.04.2008, 19:56   #6
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Во-первых
Код:
c=c+1;
тоже самое, что и
Код:
c++;
А причем тут формулы, я не понимаю.
Все дело в том, что команда в первом случае выполняется ДО изменения операнда, а во втором случае ПОСЛЕ изменения операнда. Тоесть результаты работы будут совершенно различны.
MaTBeu вне форума Ответить с цитированием
Старый 26.04.2008, 20:01   #7
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

А что такое "oперанд "?
JOFRIF вне форума Ответить с цитированием
Старый 26.04.2008, 20:13   #8
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Ой блиииин...
Операнд - это переменная (или константа), которая участвует в команде.
Вот строка
Код:
c++;
является операцией инкремента, а ее операндом является переменная "с".
MaTBeu вне форума Ответить с цитированием
Старый 26.04.2008, 20:25   #9
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Спасибо вам большое.
JOFRIF вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Битовые операции DrAlexx2121 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 14.06.2008 22:26
Операции с массивами Stelix Помощь студентам 3 26.03.2008 22:11
Операции с массивами Hakman Помощь студентам 10 19.02.2008 18:36
Операции над данными yulia БД в Delphi 24 21.05.2007 01:18
Битовые операции zetrix Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 15.12.2006 11:08