[C] cast-uttryck som operand, vad händer?

Permalänk
Hedersmedlem

[C] cast-uttryck som operand, vad händer?

Jag har sett ett intressant uttryck som jag får inte huvudet runt vad resultatet blir.

Uttrycket var något i stil med

A = B + (int) + C;

Så en typecast har hamnat lite lustigt men A får "förväntat" resultat av B + C.

Resulterar (int) i någon operand(0?) eller vad händer?

Permalänk
Medlem

A = B + (int)(+C);

+ tecknet före C är unary plus helt enkelt.

Permalänk
Medlem

Jo, det sista plusset kan tas bort utan att påverka uttrycket. Man kan få rätt svårlästa uttryck i C om man leker lite med whitespace

T.ex. denna klassiker:

while (x --> 0) // x går mot 0 { ... }

Permalänk
Hedersmedlem

Tack, misstänkte att det kunde läsas på något annat sätt.

Permalänk
Medlem
Skrivet av perost:

Jo, det sista plusset kan tas bort utan att påverka uttrycket. Man kan få rätt svårlästa uttryck i C om man leker lite med whitespace

T.ex. denna klassiker:

while (x --> 0) // x går mot 0 { ... }

Eller

while (0 <---- num) {} // springer mot 0 while (0 <-------- num) {} // expresståg mot 0 while (0 <---------------------------------------- num) {} // rymdraket mot 0

Visa signatur

Kom-pa-TI-bilitet