Сколько будет (a++ + a++)?

 
1 2 3 4 5 6
+
-
edit
 

HardSoft

втянувшийся

для тех кто шарит в программировании вопрос:

a=5;
a=5++ + 5++;

сколько будет? :))))
я могу появиться,я могу скрыться.я могу все что может присниться (с)
 
+
-
edit
 

Balancer

администратор
★★★★★
HardSoft, 05.07.2004 12:27:02 :
a=5;
a=5++ + 5++;

сколько будет? :))))
 


Это ж начальный курс :)
 
+
-
edit
 

HardSoft

втянувшийся

perl -e '$a=5; $a=$a++ + $a++; print $a,"\n";'
11
я могу появиться,я могу скрыться.я могу все что может присниться (с)
 
+
-
edit
 

HardSoft

втянувшийся

калькулятор выдает 20 :))))
я могу появиться,я могу скрыться.я могу все что может присниться (с)
 
+
-
edit
 

Balancer

администратор
★★★★★
HardSoft, 05.07.2004 12:31:23 :
perl -e '$a=5; $a=$a++ + $a++; print $a,"\n";'
11
 


Ну, здрасьте, я так не играю. Ты уже исказил начальные условия.
 
+
-
edit
 

HardSoft

втянувшийся

test root #echo "main(){int a=5;a=++a + ++a;printf(\"%d\",a);}">sum1.c;cc -o s
um1 sum1.c && ./sum1
14test root #
я могу появиться,я могу скрыться.я могу все что может присниться (с)
 
+
-
edit
 

Balancer

администратор
★★★★★
HardSoft, 05.07.2004 12:50:13 :
int a=5;a=++a + ++a
 


Ну, всё, пошла писать губерния...

Эдак и я напишу:
...
a = 5
a = 5++ + 5++
...

вывод:
19
 
+
-
edit
 

HardSoft

втянувшийся

компилятор какой?
я могу появиться,я могу скрыться.я могу все что может присниться (с)
 
+
-
edit
 

HardSoft

втянувшийся

code php
  1. <?
  2. $a=5;
  3. $a=$a++ + $a++;
  4. print $a;
  5. ?>

результат 11
я могу появиться,я могу скрыться.я могу все что может присниться (с)
 
Это сообщение редактировалось 05.07.2004 в 13:33
+
-
edit
 

Balancer

администратор
★★★★★
HardSoft, 05.07.2004 12:58:17 :
компилятор какой?
 


SP-Forth 4.0 build 009 :)

code forth
  1. : a   0 0 ;
  2. : 5++ 5 + + ;
  3.  
  4. a = 5
  5. a = 5++ 5 5++
  6.  
  7. .



<?
$a=5;
$a=$a++ + $a++;
print $a;
?>

результат 11
 


Опять не соответствует исходной задаче. Ну где тут
a = 5
a = 5++ + 5++
 

:)
 
+
-
edit
 

Balancer

администратор
★★★★★
вопрос ребром - в каких языках, кроме Форта допустимы выражения типа 5++ ? :)
 
+
-
edit
 

HardSoft

втянувшийся

по идее + добавлянт к числу 1

перл,си,пхп точно
я могу появиться,я могу скрыться.я могу все что может присниться (с)
 
+
-
edit
 

Balancer

администратор
★★★★★
HardSoft, 05.07.2004 13:30:00 :
по идее + добавлянт к числу 1
 


Не к числу, а к переменной. разницу улавливаешь? :) Число не может быть lvalue, а ++ работает только с lvalue.

>перл,си,пхп точно

Ошибку компиляции оно даст для "5++" во всех из них :)

Так что, вопрос остаётся открытым - в каких языках допустима запись 5++? :)
 
+
-
edit
 

HardSoft

втянувшийся

вообщем канал #unix.really ща передереться :)))))
я могу появиться,я могу скрыться.я могу все что может присниться (с)
 
+
-
edit
 

Balancer

администратор
★★★★★
HardSoft, 05.07.2004 13:36:20 :
вообщем канал #unix.really ща передереться :)))))
 


По какому поводу? Итак всё предельно ясно :D

Если по духу - то, конечно, будет 5 + 6 = 11 :)
a++ увеличит 'a', но вернёт её старое значение. По определению.

А формально, по исходному условию, я не могу вспомнить других языков, кроме Форта, где 5++ может быть корректной частью кода :)
 
+
-
edit
 

HardSoft

втянувшийся

возмоно еще фортран...но точно тебе не скажу.давно енто было
я могу появиться,я могу скрыться.я могу все что может присниться (с)
 
+
-
edit
 

HardSoft

втянувшийся

они просто хотят понять почему разные языки дают разный результат и почему
я могу появиться,я могу скрыться.я могу все что может присниться (с)
 
+
-
edit
 

Balancer

администратор
★★★★★
HardSoft, 05.07.2004 13:45:41 :
возмоно еще фортран...но точно тебе не скажу.давно енто было
 


Кажется - нет. Там только ** было - возведение в степень. + в именах использовать нельзя, и оператора ++ там нет.
Хотя тоже давно было :)

>они просто хотят понять почему разные языки дают разный результат и почему

А какой язык выдаёт результат, отличный, от 11?
 
+
-
edit
 

HardSoft

втянувшийся

си :)
там все зависит от интерпритатора,от операционки
я могу появиться,я могу скрыться.я могу все что может присниться (с)
 
+
-
edit
 

Balancer

администратор
★★★★★
HardSoft, 05.07.2004 13:57:28 :
си :)
там все зависит от интерпритатора,от операционки
 


Гм. За всю жизнь видел только один интерпретатор Си :)

Кроме того, если это выражение не будет равно 11 - можно такой транслятор смело выкидывать на помойку, т.к. он просто не работает по стандарту даже базовому, от Кернигана и Ричи :)
 
+
-
edit
 

HardSoft

втянувшийся

есть например борландовский,есть компиляторы гцц,епцц.....
потом еще какие-то накладки вносить ось.
я могу появиться,я могу скрыться.я могу все что может присниться (с)
 
+
-
edit
 

HardSoft

втянувшийся

ща морды будут бить друг-другу...... :)))))
я могу появиться,я могу скрыться.я могу все что может присниться (с)
 
+
-
edit
 

Balancer

администратор
★★★★★
HardSoft, 05.07.2004 14:00:47 :
есть например борландовский
 


Да ладно, как зовётся-то??

>потом еще какие-то накладки вносить ось.

С какого рожна?? :D Ось что, на нативный код влияние оказвает? :D



>ща морды будут бить друг-другу......

Фейнман или Вуд, не помню точно, кто, прикалывался. Есть какое-то соединение, которое для 60% на вкус безвкусное, а для 40% - нестерпимо горькое. Он, как-то аудитории дал попробовать и предложил вкус оценить. Заранее предупредив об особенности! Народ чуть не подрался всё равно :)
 
+
-
edit
 

HardSoft

втянувшийся

да хз.....
ту еще предложили:
text:080484A6 mov [ebp+var_4], 5 ;помещение значения 5 в переменную
.text:080484AD mov eax, [ebp+var_4] ;в регистр eax помещаем 5
.text:080484B0 mov edx, [ebp+var_4] ;в регистр edx поммещаем 5
.text:080484B3 lea ecx, [edx+eax] ;складываем и помещаем результат в ecx
.text:080484B6 mov [ebp+var_4], ecx ;помещаем в переменную значение из ecx
.text:080484B9 inc [ebp+var_4] ;инкрементируем
.text:080484BC inc [ebp+var_4] ;инкрементируем
я могу появиться,я могу скрыться.я могу все что может присниться (с)
 
+
-
edit
 

Balancer

администратор
★★★★★
HardSoft, 05.07.2004 14:14:05 :
да хз.....
ту еще предложили:
 


Какой бред! Пусть выкинут компилер на помойку. Даже старый-старый GCC, не говоря уже об MSVC++, даёт:

code 6502acme
  1. main:
  2.         pushl   %ebp
  3.         movl    %esp, %ebp
  4.         subl    $8, %esp
  5.         andl    $-16, %esp
  6.         subl    $8, %esp
  7.         pushl   $12
  8.         pushl   $.LC0
  9.         call    printf
  10.         addl    $16, %esp
  11.         movl    %ebp, %esp
  12.         popl    %ebp
  13.         ret


что??????????? 12???????? :D:D:D

Мде. И в GCC3 также. Ну, бред! :D

Всё, признаЮ свою ошибку и расписываюсь в самоуверенности. Нынешние компиляторы выродились :) (Жаль, MSVC под рукой нет, дома проверю, как там дела обстоят)
 
1 2 3 4 5 6

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru