Ez hogy működik? C++
# include <iostream>
using namespace std;
enum FATAL {ERR,SUCCESS};
FATAL swap(FATAL);
int main()
{
short y;
FATAL x;
cin >> x;
y = swap(x);
cout <<"y: "<< y;
return 0;
}
FATAL swap(FATAL)
{
if(x > 8)
{y = x*x;return SUCCESS;}
else {return ERR;}
}
/* Három dolgot nem értek.
Mi a különbség ha az enum FATAL {ERR,SUCCESS}; nem a függvényen belül van?És miért más ha függvényen kívül van? */
/*Mi volna akkor ha a FATAL swap függvény nem FATAL típusú lenne?Akkor nem tudnám használni benne az ERR-t?
Vagy a FATAL swap függvénynek csak 2 visszatérési értéke lehet ERR és SUCCESS? */
/*És ha egy változó típusa FATAL akkor az miért más mint egy int típusú?? */
KÖSZ az értelmes válaszokat majd menni fognak a zöld kezek is.
BOCSI de ebből amit írtál nem tudtam meg semmi újat.
És egyik kérdésemre se tudtam meg a választ.
Engem tényleg csak a feltett kérdéseimre akarok választ kapni.
Mi a különbség ha az enum FATAL {ERR,SUCCESS}; nem a függvényen belül van?És miért más ha függvényen kívül van?
Ez csak egy egyszerű kérdés és a többi is amire nem találok választ már egy jó ideje .
BOCSI de ez nagyon idegesítő.
Ha én tudnám ezekre a választ egyszerűen megválaszolhatnám nem pedig másról kezdek el beszélni mint az előző.
De amúgy köszi,hogy írtál rendi adtam egy zöld kezet. :D
"Ez hogy működik? C++"
Ez nem is működik, le sem fordul.
"Mi a különbség ha az enum FATAL {ERR,SUCCESS}; nem a függvényen belül van?És miért más ha függvényen kívül van?"
Ha függvényen belül van, akkor csak az adott függvényen belül látható, használható, nem térhet vissza olyan típusú értékkel a függvény, ha függvényen kívül van akkor ilyen típust más függvények is használhatnak meg vissza is térhetnek ilyen típusú értékkel.
"Mi volna akkor ha a FATAL swap függvény nem FATAL típusú lenne?Akkor nem tudnám használni benne az ERR-t?
Vagy a FATAL swap függvénynek csak 2 visszatérési értéke lehet ERR és SUCCESS?"
Ez érvénytelen kód, egyáltalán kipróbáltad?
Ha tudsz írni egy fordítható kódot akkor válaszolok a többi kérdésre is.
(Kaptam fordítható kódot, igaz teljesen mást, de abba is van enum, és állom a szavam)
"Mi a különbség ha az enum FATAL {ERR,SUCCESS}; nem a függvényen belül van?És miért más ha függvényen kívül van?"
Ezt már megválaszoltam.
"Mi volna akkor ha a FATAL swap függvény nem FATAL típusú lenne?Akkor nem tudnám használni benne az ERR-t?
Vagy a FATAL swap függvénynek csak 2 visszatérési értéke lehet ERR és SUCCESS?"
A példától eltekintve mert az továbbra is rossz, igen csak 2 visszatérési értéke lehet, igazából meg lehet kerülni, és több fajta értéket is felvehet (ez csúnya dolog, de a c++ lehetőséget ad rá hogy ezt a szabályt felrúgjuk), de az eredeti célja az enum típusnak , hogy csak a felsorolt értékek egyikét tárolja.
Ha int típusú lenne a visszatérési érték akkor is visszaadhatna ERR-t, ez a c++ gyenge típusossága miatt van. Logikus lenne hogy nem adhatna vissza ilyen értéket, egy típusbiztos nyelven nem is adhat.
Pl. java-ba, ott az enum szigorúan külön típus,ott sosem visselkedik int-ként.
Mikor mi lehet c++-ban? Pl.:
#include<iostream>
using namespace std;
enum FATAL {ERR,SUCCESS};
enum Day {SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY};
int main(){
FATAL f1,f2;
Day d1;
int i;
//f1=0;//rossz (ez ok)
f1=ERR;//helyes (ez ok)
//cin >> f1;//rossz (ez ok)
i=ERR;//helyes (gyenge típusosság miatt)
i=f1;//helyes (gyenge típusosság miatt)
f2=f1;//helyes (ez ok)
if (i==f1){};//helyes (gyenge típusosság miatt)
//d1=i;//rossz; (ez ok)
//d1=ERR;//rossz (ez ok)
if (f1==d1){};//helyes (gyenge típusosság miatt)
return 0;
}
"helyes": a fordító megengedi, nem szól
"rossz":szintaktikai hiba
"gyenge típusosság miatt": ha típusbiztos nyelv lenne a c++ akkor nem engedné meg.
"ez ok": típusbiztos nyelv esetén is megálja a helyét
"És ha egy változó típusa FATAL akkor az miért más mint egy int típusú??"
Az eddigiekből következik, a FATAL típusú változó csak olyan értékeket tárolhat amit megadtunk, vagy máshogy fogalmazva amit a FATAL típus értékkészlete tartalmaz (bár ezt fel lehet rúgni mint írtam)
int típusú változó jóval több fajta értéket tárolhat, nagyobb az értékkészlete.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!