powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / ++i + ++i
17 сообщений из 42, страница 2 из 2
++i + ++i
    #34518861
0bsid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Java1.5:

Код: plaintext
1.
2.
int i =  5 ;
i = ++i + ++i;
13

Код: plaintext
1.
2.
int i =  5 ;
int a,b;
i = (a=++i)+(b=--i);
11

Код: plaintext
1.
int i =  5 ;
i = i++ + i++;
11

забавная тема :)
...
Рейтинг: 0 / 0
++i + ++i
    #34519290
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну орлы, еще дедушки Корнеган и Ричи завещали так не делать, это раз. Вот вторых тест некорректный - нормальный компилер (во всяком случае gcc) все должен был еще на этапе компиляции вычислить...
...
Рейтинг: 0 / 0
++i + ++i
    #34519328
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedНу орлы, еще дедушки Корнеган и Ричи завещали так не делать, это раз. Вот вторых тест некорректный - нормальный компилер (во всяком случае gcc) все должен был еще на этапе компиляции вычислить...

gcc 3.3.3 нормальный, вроде, но ему по барабану. Считает по своему и доволен.
...
Рейтинг: 0 / 0
++i + ++i
    #34519429
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedНу орлы, еще дедушки Корнеган и Ричи завещали так не делать, это раз. Вот вторых тест некорректный - нормальный компилер (во всяком случае gcc) все должен был еще на этапе компиляции вычислить...

MSVC 2003

Без оптимизации:

00411A55 mov eax,dword ptr
00411A58 add eax,1
00411A5B mov dword ptr ,eax
00411A5E mov ecx,dword ptr
00411A61 add ecx,1
00411A64 mov dword ptr ,ecx
00411A67 mov edx,dword ptr
00411A6A add edx,dword ptr
00411A6D mov dword ptr ,edx

С оптимизацией, действительно свертывает в константу, но в 14 !!!

На g++ (GCC) 3.4.6 [FreeBSD] 20060305 результат то-же 14 (про 3.3.3 ВРАТЬ не буду)

На Perl-е аналогично
...
Рейтинг: 0 / 0
++i + ++i
    #34519771
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гoлдун пишет:
> Автор: "Александр Гoлдун"
> Имеется код:
>
> int i = *5*;
> i = ++i + ++i;
>
>
> Чему будет равно i в результате?

Будет равно Undefined Behaviour.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
++i + ++i
    #34519780
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это выражение пример неопределенного поведения. Вы пытаетесь изменить одну и туже переменную и между этими изменениями нет ни одной точки следования. Здесь, в принципе, компилятор имеет право отформатировать ваш винчестер, а вы гадаете чему оно равно :)
...
Рейтинг: 0 / 0
++i + ++i
    #34519801
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гoлдун пишет:
> i = ++i + ++i;
> Чему будет равно i в результате?

Вообще, ребята, мы тут дружно решили, прочитав ветку,
что иногда лучше жевать, чем писать.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
++i + ++i
    #34519913
Фотография Insane Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гoлдун TopSpaceВ с++ 14
Но почему 14???????

ildasm (VS2003):

C++:
IL_0000: ldc.i4.5
IL_0001: stloc.0
IL_0002: ldloc.0
IL_0003: ldc.i4.1
IL_0004: add
IL_0005: stloc.0
IL_0006: ldloc.0
IL_0007: ldc.i4.1
IL_0008: add
IL_0009: stloc.0
IL_000a: ldloc.0
IL_000b: ldloc.0
IL_000c: add
IL_000d: stloc.0
IL_000e: ldloc.0

C#:
IL_0000: ldc.i4.5
IL_0001: stloc.0
IL_0002: ldloc.0
IL_0003: dup
IL_0004: ldc.i4.1
IL_0005: add
IL_0006: stloc.0
IL_0007: ldloc.0
IL_0008: dup
IL_0009: ldc.i4.1
IL_000a: add
IL_000b: stloc.0
IL_000c: add
IL_000d: stloc.0
IL_000e: ldloc.0
...
Рейтинг: 0 / 0
++i + ++i
    #34532857
Gluk (Kazan)
MSVC 2003

Без оптимизации:

00411A55 mov eax,dword ptr
00411A58 add eax,1
00411A5B mov dword ptr ,eax
00411A5E mov ecx,dword ptr
00411A61 add ecx,1
00411A64 mov dword ptr ,ecx
00411A67 mov edx,dword ptr
00411A6A add edx,dword ptr
00411A6D mov dword ptr ,edx


Слушай, скажи а как ты ассемблерный код проги получил?
Я VC6 такой чтуки не нашел.
...
Рейтинг: 0 / 0
++i + ++i
    #34532867
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Иванович Gluk (Kazan)
MSVC 2003

Без оптимизации:

00411A55 mov eax,dword ptr
00411A58 add eax,1
00411A5B mov dword ptr ,eax
00411A5E mov ecx,dword ptr
00411A61 add ecx,1
00411A64 mov dword ptr ,ecx
00411A67 mov edx,dword ptr
00411A6A add edx,dword ptr
00411A6D mov dword ptr ,edx


Слушай, скажи а как ты ассемблерный код проги получил?
Я VC6 такой чтуки не нашел.

В дебаггер войди и выбери Show Assembler Intsruction.
...
Рейтинг: 0 / 0
++i + ++i
    #34532879
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Ивановичкак ты ассемблерный код проги получил?у нас в бормановских средах, если есть хотя бы один asm, то генерится ассемблерный файлик, который уже потом компилится
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
++i + ++i
    #34532889
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Иванович Gluk (Kazan)
MSVC 2003

Без оптимизации:

00411A55 mov eax,dword ptr
00411A58 add eax,1
00411A5B mov dword ptr ,eax
00411A5E mov ecx,dword ptr
00411A61 add ecx,1
00411A64 mov dword ptr ,ecx
00411A67 mov edx,dword ptr
00411A6A add edx,dword ptr
00411A6D mov dword ptr ,edx


Слушай, скажи а как ты ассемблерный код проги получил?
Я VC6 такой чтуки не нашел.

У меня 2003, в 6-ке не помню
...
Рейтинг: 0 / 0
++i + ++i
    #34533380
nik_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Иванович Gluk (Kazan)
MSVC 2003

Без оптимизации:

00411A55 mov eax,dword ptr
00411A58 add eax,1
00411A5B mov dword ptr ,eax
00411A5E mov ecx,dword ptr
00411A61 add ecx,1
00411A64 mov dword ptr ,ecx
00411A67 mov edx,dword ptr
00411A6A add edx,dword ptr
00411A6D mov dword ptr ,edx


Слушай, скажи а как ты ассемблерный код проги получил?
Я VC6 такой чтуки не нашел.

Во, держи: (VC6)

3: int i=5;
00401028 mov dword ptr [ebp-4],5
4: i = ++i + ++i;
0040102F mov eax,dword ptr [ebp-4]
00401032 add eax,1
00401035 mov dword ptr [ebp-4],eax
00401038 mov ecx,dword ptr [ebp-4]
0040103B add ecx,1
0040103E mov dword ptr [ebp-4],ecx
00401041 mov edx,dword ptr [ebp-4]
00401044 add edx,dword ptr [ebp-4]
00401047 mov dword ptr [ebp-4],edx
5: }
...
Рейтинг: 0 / 0
++i + ++i
    #34534300
nik_x Дмитрий Иванович Gluk (Kazan)
MSVC 2003

Без оптимизации:

00411A55 mov eax,dword ptr
00411A58 add eax,1
00411A5B mov dword ptr ,eax
00411A5E mov ecx,dword ptr
00411A61 add ecx,1
00411A64 mov dword ptr ,ecx
00411A67 mov edx,dword ptr
00411A6A add edx,dword ptr
00411A6D mov dword ptr ,edx


Слушай, скажи а как ты ассемблерный код проги получил?
Я VC6 такой чтуки не нашел.

Во, держи: (VC6)

3: int i=5;
00401028 mov dword ptr [ebp-4],5
4: i = ++i + ++i;
0040102F mov eax,dword ptr [ebp-4]
00401032 add eax,1
00401035 mov dword ptr [ebp-4],eax
00401038 mov ecx,dword ptr [ebp-4]
0040103B add ecx,1
0040103E mov dword ptr [ebp-4],ecx
00401041 mov edx,dword ptr [ebp-4]
00401044 add edx,dword ptr [ebp-4]
00401047 mov dword ptr [ebp-4],edx
5: }

За код спасибо. Но расскажи как смотреть асемблерный код? Для этого надо дизасемблировать или получения такого кода предусмотрено в VS6. Если предусмотрено то как?
...
Рейтинг: 0 / 0
++i + ++i
    #34536557
nik_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Build -> Set Active Configuration -> ... Debug
Расставляешь Break Points <F9>
<F5>
На панели долбагера жмешь педаль Disassembly


Вообще-то это всё в букварях описано...
...
Рейтинг: 0 / 0
++i + ++i
    #34537110
daevaorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно просто в настройках проекта поставить генерацию asm файла.
...
Рейтинг: 0 / 0
++i + ++i
    #34538644
nik_x и daevaorn спасибо вам.
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / ++i + ++i
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]