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

Trädvy Permalänk
Hedersmedlem
Plats
Linköping
Registrerad
Okt 2006

[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?

Trädvy Permalänk
Medlem
Registrerad
Nov 2016

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

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

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007

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 { ... }

Trädvy Permalänk
Hedersmedlem
Plats
Linköping
Registrerad
Okt 2006

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

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007
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

Bilanaloger är som Volvo — varenda svenne kör med dem