Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > чем отличаются х++ от ++х ???


Автор: Syberex 18.9.2006, 13:02
чем отличаются х++ от ++х ??? результат вроде один , но может разница всётаки есть?

Автор: ZC1989 18.9.2006, 13:08
угу... разница есть! 
++х расшифровывается так

{
    x=x+1;
    final=x;
}

тут сначала происходит прибавление, а потом "возвращение" результата, а х++, наоборот

{
final=x;
x=x+1;
}

Автор: Levenson 18.9.2006, 13:09
Кароче говоря ++i  эт значит он сначало произведет инкрементирование, и только потом возьмет значение i,  а i++ наоборот.  В этой фигне есть нюансы относительно того как оператор ++ -- получает начальное значчение аргумента(слева и справа). Я точно не помню, прочти скота майерся "Эфективное чето там"

Автор: EvgenZ 18.9.2006, 13:13
напиши cледующее:

int a = 5;
std::cout << "pos" << a++ << std::endl;
std::cout << "pre" << ++a;
покоментируй выводы...

Автор: Syberex 18.9.2006, 13:15
ребята рузультат один, и разницы нет вообще, то что вы сказали не работает, как это проверить?

Добавлено @ 13:17 
странно?

Автор: VitalikOmsk 18.9.2006, 13:18
не парся сделай консольное приложение и прогони этодело там вот и все.
ну к примеру сделай цикл и заведи переменные с одной делай так i++ а с другой делай так ++ii и уидишь в чем разница

Автор: EvgenZ 18.9.2006, 13:18
Не может он быть один!!!

1 int main(){
2 int a = 5;
3 std::cout << "pos" << a++ << std::endl;
4 //std::cout << "pre" << ++a;
}

запусти, а потом закоменть 3 строку и раскоменть 4 сравни результаты...

Автор: vinter 18.9.2006, 13:19
Цитата

ребята рузультат один, и разницы нет вообще

такое нереально,скопируй пример EvgenZ и запусти..

Автор: ZC1989 18.9.2006, 13:20
оно обязано работать!

Код

#include <iostream.h>

void main(void)
{
    int a = 5, i;

    cout << a++ << endl; // тут 5
    cout << ++a << endl; // тут 7

    cin >> i;
}

Автор: Levenson 18.9.2006, 13:21
создай массив и цикл запиши вот так
Код

 for (int i = 0; i < BUFF_SIZE; ++i){


}


сначало заполни массив нулями , а в цикле присваивай им рандом  и выводи на экран
и ты увидеш что x[0] = 0; то есть мы взяли i равное нулю и сразу увеличили(тело цикла еще не выполнялось)

Автор: Syberex 18.9.2006, 13:21
сенкс, догнал наконец, разница есть! понял.

Автор: VitalikOmsk 18.9.2006, 13:30
int main(int argc, char* argv[])
{
    
int i = 0,ii = 0;

for (int a =0; a < 10; a++)
    printf("i=%d    ii=%d \n",i++,ii++);
    
    
    
    printf("Hello World!\n");
    return 0;
}


Автор: MAKCim 18.9.2006, 16:36
к примеру
Код

a=++x ~ 
    inc x
    mov DX, x
    mov a, DX
a=x++ ~ 
    mov DX, x
    inc x
    mov a, DX

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)