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
gana lengvas :PPPP
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.
Kitas idomus C++ klausimas:
int a = 1, b = 2, c = 3;
a += b+++c;
cout <<"a="<< a <<" b="<< b <<" c="<< c <<'\n';
ka?