Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
1

++N

02.09.2009, 21:44. Показов 4053. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
в чем отличие
++а от а++?
1
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
02.09.2009, 21:48 2
сравни
это
C++
1
2
3
int a=0;
a++;
cout << a;
C++
1
2
3
int a=0;
++a;
cout << a;

и сравни
это
C++
1
2
int a=0;
cout << a++;
C++
1
2
int a=0;
cout << ++a;


Отличие в том, что ++a выполняетс сразу, а a++ после выполнения некой инструкции.
2
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
02.09.2009, 21:51  [ТС] 3
Monte-Cristo, то есть ничем
0
308 / 161 / 11
Регистрация: 07.06.2009
Сообщений: 538
02.09.2009, 22:07 4
++a увеличивает значение и возвращает увеличенное значение
a++ возвращает текущее, а потом увеличивает

или наооборот, поэксперементируй
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
02.09.2009, 22:09  [ТС] 5
exe-dealer, я попробовал код Monte-Cristo, в том и другом месте результт 1...ничем не отличается
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
02.09.2009, 22:16 6
Цитата Сообщение от МедведЪ Посмотреть сообщение
то есть ничем
Вот так нагляднее:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
/* префиксный и постфиксный оператор ++ */
int main(){
    int a = 0;
    int b = 0;
    
    if ( a++ > 0 )
        printf("a больше нуля\n");
    else
        printf("a равно нулю\n");
    
    if ( ++b > 0 )
        printf("b больше нуля\n");
    else
        printf("b равно нулю\n");
        
    return(0);
}
2
308 / 161 / 11
Регистрация: 07.06.2009
Сообщений: 538
02.09.2009, 22:16 7
exe-dealer, я попробовал код Monte-Cristo, в том и другом месте результт 1...ничем не отличается
не может быть, попробуй второй пример
в первом будет всегда 1
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
02.09.2009, 22:20  [ТС] 8
exe-dealer, попробывал....в книге ничего не было сказано...только
a++ это означает a=a+1
ничего больше............
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
02.09.2009, 23:04 9
Я где-то слышал, что(кажется что-то связано с STL) ++a работает несколько быстрее чем a++. Вроде при инструкции a++ используется еще временная переменная
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
02.09.2009, 23:18 10
Цитата Сообщение от МедведЪ Посмотреть сообщение
в чем отличие
++а от а++?
давно не прикалывались?
0
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
02.09.2009, 23:22 11
МедведЪ,
Цитата Сообщение от МедведЪ Посмотреть сообщение
в чем отличие
++а от а++?
Для полного представления - еще вот так попробуй!
C++
1
2
3
int a = -1;
 
        cout << a++ << a << a++ << a++ << ++a << endl;
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
02.09.2009, 23:27 12
K&R. 2.8. Операторы инкремента и декремента.
1
0 / 0 / 0
Регистрация: 01.09.2009
Сообщений: 9
03.09.2009, 00:01 13
это называется вроде так :
a++ - постинкремент;
++а - прединкремент;

З.Ы : на многих собеседованиях дают такие задачки и просят сказать ответ ->
a = 1;
b = 10;

a+++b = c

чему равно с ??
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
03.09.2009, 00:16 14
вот
код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
int main()
{
    int a=0;
    int b=0;
 
    cout << "++a = " << ++a << "\t|\ta = " << a << endl;
    cout << "b++ = " << b++ << "\t|\tb = " << b << endl;
 
    system("pause");
    return 0;
}

а вот
результат
++a = 1 | a = 1
b++ = 0 | b = 1
Press any key to continue . . .


МедведЪ, видишь разницу?
1
0 / 0 / 0
Регистрация: 01.09.2009
Сообщений: 9
03.09.2009, 00:43 15
Добавлено через 6 минут
вот этим я и люблю плюсы ...
0
paladin
286 / 187 / 7
Регистрация: 25.02.2009
Сообщений: 589
03.09.2009, 07:36 16
Цитата Сообщение от pr1nc3 Посмотреть сообщение
З.Ы : на многих собеседованиях дают такие задачки и просят сказать ответ ->
a = 1;
b = 10;
c = a+++b;
чему равно с ??
Компилятор выдал 11. Как и ожидалось. Но для обычной человеческой логики это равносильно "казнить нельзя помиловать", и использование подобных конструкций без скобок мало кем одобряется.
0
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
03.09.2009, 09:40 17
мое мнение компиляор это может трактовать как
a++ + b; либо
a + ++b; если этот случай нигде не оговорен
0
2096 / 1261 / 171
Регистрация: 01.02.2009
Сообщений: 2,842
03.09.2009, 10:27 18
Автоматом компилятор делает так: a++ + b;
Если нужно так a + ++b, то пробелы придется ручками ставить.
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
03.09.2009, 15:23  [ТС] 19
Цитата Сообщение от novi4ok Посмотреть сообщение
давно не прикалывались?
не флуди ты тут.
0
0 / 0 / 0
Регистрация: 01.09.2009
Сообщений: 9
03.09.2009, 18:29 20
Цитата Сообщение от Yurii_74 Посмотреть сообщение
Компилятор выдал 11. Как и ожидалось. Но для обычной человеческой логики это равносильно "казнить нельзя помиловать", и использование подобных конструкций без скобок мало кем одобряется.
в этом то и весь сок, что все зависит от версии компилятора ....
а такой вопрос с подковыркой очень даже популярен )) хоть это и быдло-код)
0
03.09.2009, 18:29
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru