Galvosūkiai su ++

Vat Perlmonksuose radau tokį įdomų
klausimėlį . Štai kodo gabaliukas, pabandykit pasakyt ką jis spausdins
(jo nepaleidę):

$a = $b = $c = 1;
$a = $a++ + $a++;
$b = $b++ + $b  ;
$c = $c   + $c++;
print "$a $b $c";

Na, aš teisingai atsakiau ką spausdins tik du ;) (na, jei PHP
taisyklėmis – tai visus tris). Atrodo kad Perlas čia skiriasi nuo
PHP. PHP spausdina kaip ir tikėjausi 3 3 2, tuo tarpu
Perlas – 3 3 3. Paaiškinti KAIP tai įvyksta
ant Perlo nesunku, bet KODĖL yra sunkiau (dokumentacija rašo, kad
tokiais atvejais rezutatas gali būti neapibrėžtas – tai yra vieną
kartą būti vienoks, o kitą kitoks)

moxliukas@www:~$ perl -MO=Deparse,-p
$a = $b = $c = 1;
$a = $a++ + $a++;
$b = $b++ + $b  ;
$c = $c   + $c++;
print "$a $b $c
";
^D
($a = ($b = ($c = 1)));
($a = (($a++) + ($a++)));
($b = (($b++) + $b));
($c = ($c + ($c++)));
print("$a $b $c
");
- syntax OK

Comments Closed

4 Comments

  1. o ka spausdintu C++?

    int a, b, c;

    a = b = c = 1;

    a = a++ + a++;

    b = b++ + b;

    c = c + c++;

    cout <<"a="<< a <<" b="<< b <<" c="<< c <<'\n';

    Pastaba: atsakymas skiriasi nuo PHP ir Perl.

  2. Kitas idomus C++ klausimas:

    int a = 1, b = 2, c = 3;

    a += b+++c;

    cout <<"a="<< a <<" b="<< b <<" c="<< c <<'\n';

Comments are closed.