Switch-case esetén googleben rákeresve a feltétel helyére kifejezést lehet írni, tudnátok olyan példát mondani, amikor ez a kifejezés nem egy változónév?
Érdemes lenne megjelölni a programozási nyelvet is (én most C++-t fogok feltételezni). Ha arra gondolsz, hogy mit írhatsz a case után, akkor nem mindent. Az ottani kifejezés értékét ugyanis tudnod kell fordítási időben. Tehát lehet függvény, de csak akkor, ha az eredménye konstans időben kiszámolható (ezt ki lehet kényszeríteni pl. constexpr használatával).
Ugyanez igaz C#-ra is.
"Tudomásom szerint (ami nem túl sok) a lényeg, hogy az értéke egyértelmű int (vagy bool) legyen -legalábbis C# esetén."
Ennek se füle, se farka.
Itt a "kifejezés" fogalma a lényeg. Kifejezés minden, ami kiértékelés után egy konkrét értékkel és típussal rendelkezik, kb. mint a változók. Lehet konstans, változónév, függvényhívás, stb., és ezek operátorokkal való különféle kombinációja.
A feltétel általában egy olyan kifejezés, ami kiértékelés után egyértelmű logikai értékként értelmezhető. Ez nyelvtől függően lehet int, char, bool, valamilyen pointer, stb. (C-ben általában az egész típusok.)
Logikai kifejezések pl.: (int a; char b; char *c;)
a
a==1
a==1 || a>10
a%2
b
c[4]
c[12]>=b
c[4]+c[12]>=b-1
(a==1 || a>10) && c && (c[12]>=b) && func(param)
stb...
C/C++-ban a nem egész típus (pl. double) feltételként való használata nem szabványos, fordítófüggő, kerülendő. A string, mint konténer adhat vissza "empty" értéket, tehát működhet, de ennek az adott fordító leírásában érdemes utánanézni.
A lebegőpontos alak eleve nem egy egzakt érték, inkább egy közelítés, pl. egyenlőség vizsgálatakor is okozhat meglepetéseket. A 0.0-nak sem csak egyféle alakja van, és ott van még a NaN és inf érték.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!