» »

[C] bitni operator

[C] bitni operator

1 2
3
»

Thomas ::

Hja. Naivno razmišljanje, kot ponavadi od tistih, ki ne premislijo s svojo glavo. C++ ne naredi nič pravzaprav. Prevede strojno kodo, ki si pa ne bo špogala skoka, če ni potreben.

Tako da a&&b brez ifa spredaj bo kar eager, oziroma strict, ne pa lazy.
Man muss immer generalisieren - Carl Jacobi

Vesoljc ::

copypaste iz tukaj

5.14 Logical AND operator [expr.log.and]

1 logical-and-expression:
inclusive-or-expression
logical-and-expression && inclusive-or-expression
The && operator groups left-to-right. The operands are both implic-
itly converted to type bool (_conv_). The result is true if both
operands are true and false otherwise. Unlike &, && guarantees left-
to-right evaluation: the second operand is not evaluated if the first
operand is false.
Abnormal behavior of abnormal brain makes me normal...

64202 ::

Thomas: mislis rect, da se tole drugace prevede zaradi optimizacij?

int a,b;
return a&&b;

povsem mozno.


Vazno pa je, da se

return 0 && *(int*)0;

prevede lazy :)
I am NaN, I am a free man!

Thomas ::

> the second operand is not evaluated if the first
operand is false.

Ne verjet - tle je bistveno bolj realen pogled nekaterih.
Man muss immer generalisieren - Carl Jacobi

Vesoljc ::

sem pozabil povedat, da je omenjeni copypaste iz c++ standarda.
Abnormal behavior of abnormal brain makes me normal...

Thomas ::

C++ standard je to že lahko. Kaj pa naredijo compilerji, je pa druga reč.

Še za direktno v if stavkih ne bi bil 100% da je vedno lazy.
Man muss immer generalisieren - Carl Jacobi

Gundolf ::

Ne vem kaj si hotu s tem linkom povedat Thomas.

Drugače si pa brezveze merite moči na slabo zastavljenih primerih. Vsi imate prav le vsak si problem po svoje interpretira.

Genetic ::

Mene pa zanima, ali res lahko izklopim short circuit (lazy) evaluacijo logičnih izrazov. Dosedaj sem bil prepričan, da je to feature od jezika. Vem, da se je to dalo narediti v turbo pascalu, za c/c++ pa še nisem videl te opcije.


Ce overloadas operator && (ali ||), izgubis lazy evaluation. Vprasanje je samo, ce lahko overloadas && (ali ||) nad bool parametri.

64202 ::

> C++ standard je to že lahko. Kaj pa naredijo compilerji, je pa druga reč.

?

Pac, garantira ti lazy semantiko. Kaj pod havbo lahko zoptimizira se pa ne sekiras vec (ce uporabljas gcc/icc/vc/...). Oziroma kaj hoces povedat?
I am NaN, I am a free man!

Thomas ::

Hočem povedati to, da je edino pomembno kako skompilira, kaj "je pod havbo", kako in kaj je v resnici - kaj je deklarirano je pa malo važno.

Drži?
Man muss immer generalisieren - Carl Jacobi

64202 ::

Meh, semantika je lazy. Drzi? :)
I am NaN, I am a free man!

Thomas ::

Semantika že mogoče.

Dejansko izvajanje lazy semantike bi pa pomenilo še več zakulisne režije.
Man muss immer generalisieren - Carl Jacobi

Thomas ::

No, vsaj včasih.

Ni C++ ravno Intel (AMD) ukazom prijazen. To je moja osnovna teza.
Man muss immer generalisieren - Carl Jacobi
1 2
3
»


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

križci krožci c # (strani: 1 2 )

Oddelek: Programiranje
5010670 (9329) Yacked2
»

[Java] While zanka

Oddelek: Programiranje
262169 (1752) kunigunda
»

Nemorem rešit ene naloge z c++ (sem začetnik) (strani: 1 2 )

Oddelek: Programiranje
689955 (5693) technolog
»

[c] Enaki datoteki

Oddelek: Programiranje
7915 (775) Spura
»

[C#] overloaded operator ==

Oddelek: Programiranje
91045 (924) user4683

Več podobnih tem