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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
#1

++N - C++

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

в чем отличие
++а от а++?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
02.09.2009, 21:48     ++N #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++ после выполнения некой инструкции.
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
02.09.2009, 21:51  [ТС]     ++N #3
Monte-Cristo, то есть ничем
exe-dealer
301 / 154 / 4
Регистрация: 07.06.2009
Сообщений: 538
02.09.2009, 22:07     ++N #4
++a увеличивает значение и возвращает увеличенное значение
a++ возвращает текущее, а потом увеличивает

или наооборот, поэксперементируй
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
02.09.2009, 22:09  [ТС]     ++N #5
exe-dealer, я попробовал код Monte-Cristo, в том и другом месте результт 1...ничем не отличается
easybudda
Эксперт С++
9454 / 5467 / 926
Регистрация: 25.07.2009
Сообщений: 10,493
02.09.2009, 22:16     ++N #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);
}
exe-dealer
301 / 154 / 4
Регистрация: 07.06.2009
Сообщений: 538
02.09.2009, 22:16     ++N #7
exe-dealer, я попробовал код Monte-Cristo, в том и другом месте результт 1...ничем не отличается
не может быть, попробуй второй пример
в первом будет всегда 1
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
02.09.2009, 22:20  [ТС]     ++N #8
exe-dealer, попробывал....в книге ничего не было сказано...только
a++ это означает a=a+1
ничего больше............
M128K145
Эксперт С++
8282 / 3501 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
02.09.2009, 23:04     ++N #9
Я где-то слышал, что(кажется что-то связано с STL) ++a работает несколько быстрее чем a++. Вроде при инструкции a++ используется еще временная переменная
novi4ok
550 / 503 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
02.09.2009, 23:18     ++N #10
Цитата Сообщение от МедведЪ Посмотреть сообщение
в чем отличие
++а от а++?
давно не прикалывались?
mirso
524 / 342 / 17
Регистрация: 05.04.2009
Сообщений: 709
02.09.2009, 23:22     ++N #11
МедведЪ,
Цитата Сообщение от МедведЪ Посмотреть сообщение
в чем отличие
++а от а++?
Для полного представления - еще вот так попробуй!
C++
1
2
3
int a = -1;
 
        cout << a++ << a << a++ << a++ << ++a << endl;
Gravity
558 / 552 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
02.09.2009, 23:27     ++N #12
K&R. 2.8. Операторы инкремента и декремента.
pr1nc3
0 / 0 / 0
Регистрация: 01.09.2009
Сообщений: 9
03.09.2009, 00:01     ++N #13
это называется вроде так :
a++ - постинкремент;
++а - прединкремент;

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

a+++b = c

чему равно с ??
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
03.09.2009, 00:16     ++N #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 . . .


МедведЪ, видишь разницу?
pr1nc3
0 / 0 / 0
Регистрация: 01.09.2009
Сообщений: 9
03.09.2009, 00:43     ++N #15
Добавлено через 6 минут
вот этим я и люблю плюсы ...
Yurii_74
paladin
279 / 179 / 3
Регистрация: 25.02.2009
Сообщений: 592
03.09.2009, 07:36     ++N #16
Цитата Сообщение от pr1nc3 Посмотреть сообщение
З.Ы : на многих собеседованиях дают такие задачки и просят сказать ответ ->
a = 1;
b = 10;
c = a+++b;
чему равно с ??
Компилятор выдал 11. Как и ожидалось. Но для обычной человеческой логики это равносильно "казнить нельзя помиловать", и использование подобных конструкций без скобок мало кем одобряется.
Mozart
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
03.09.2009, 09:40     ++N #17
мое мнение компиляор это может трактовать как
a++ + b; либо
a + ++b; если этот случай нигде не оговорен
kirill29
2051 / 1214 / 55
Регистрация: 01.02.2009
Сообщений: 2,842
03.09.2009, 10:27     ++N #18
Автоматом компилятор делает так: a++ + b;
Если нужно так a + ++b, то пробелы придется ручками ставить.
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
03.09.2009, 15:23  [ТС]     ++N #19
Цитата Сообщение от novi4ok Посмотреть сообщение
давно не прикалывались?
не флуди ты тут.
pr1nc3
0 / 0 / 0
Регистрация: 01.09.2009
Сообщений: 9
03.09.2009, 18:29     ++N #20
Цитата Сообщение от Yurii_74 Посмотреть сообщение
Компилятор выдал 11. Как и ожидалось. Но для обычной человеческой логики это равносильно "казнить нельзя помиловать", и использование подобных конструкций без скобок мало кем одобряется.
в этом то и весь сок, что все зависит от версии компилятора ....
а такой вопрос с подковыркой очень даже популярен )) хоть это и быдло-код)
Yandex
Объявления
03.09.2009, 18:29     ++N
Ответ Создать тему
Опции темы

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