|
|
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Java1.5: Код: plaintext 1. 2. Код: plaintext 1. 2. Код: plaintext 1. забавная тема :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 13:01 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Ну орлы, еще дедушки Корнеган и Ричи завещали так не делать, это раз. Вот вторых тест некорректный - нормальный компилер (во всяком случае gcc) все должен был еще на этапе компиляции вычислить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 14:21 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
blindedНу орлы, еще дедушки Корнеган и Ричи завещали так не делать, это раз. Вот вторых тест некорректный - нормальный компилер (во всяком случае gcc) все должен был еще на этапе компиляции вычислить... gcc 3.3.3 нормальный, вроде, но ему по барабану. Считает по своему и доволен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 14:27 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
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-е аналогично ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 14:48 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун пишет: > Автор: "Александр Гoлдун" > Имеется код: > > int i = *5*; > i = ++i + ++i; > > > Чему будет равно i в результате? Будет равно Undefined Behaviour. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 16:01 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Это выражение пример неопределенного поведения. Вы пытаетесь изменить одну и туже переменную и между этими изменениями нет ни одной точки следования. Здесь, в принципе, компилятор имеет право отформатировать ваш винчестер, а вы гадаете чему оно равно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 16:03 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун пишет: > i = ++i + ++i; > Чему будет равно i в результате? Вообще, ребята, мы тут дружно решили, прочитав ветку, что иногда лучше жевать, чем писать. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 16:06 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Александр Г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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 16:27 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
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 такой чтуки не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 15:08 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Дмитрий Иванович 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 15:11 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Дмитрий Ивановичкак ты ассемблерный код проги получил?у нас в бормановских средах, если есть хотя бы один asm, то генерится ассемблерный файлик, который уже потом компилится Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 15:14 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Дмитрий Иванович 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-ке не помню ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 15:16 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Дмитрий Иванович 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: } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 17:09 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
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. Если предусмотрено то как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 06:17 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Build -> Set Active Configuration -> ... Debug Расставляешь Break Points <F9> <F5> На панели долбагера жмешь педаль Disassembly Вообще-то это всё в букварях описано... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 17:21 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Можно просто в настройках проекта поставить генерацию asm файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2007, 00:00 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2028842]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
153ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 499ms |

| 0 / 0 |
