Kezdőoldal » Számítástechnika » Programozás » Ez hogy működik? C++

Ez hogy működik? C++

Figyelt kérdés

# 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.


2012. jan. 15. 15:15
 1/8 A kérdező kommentje:
Látom picit rossz a forráskód nem így akartam volna de nem számít én csak a feltett kérdéseimre szeretnék kielégítő választ kapni.
2012. jan. 15. 15:16
 2/8 iostream ***** válasza:
A C++-ban minden enumo külön típus. Az egy dolog, hogy integerrel létre lehet hozni (értékül adni nem, azaz nem konvertálódik), és ő maga konvertálódik integerré, de ettől még ő nem az. Tehát ha a swap() intet adna vissza, akkor ugyanígy működne. Ha az enum értékei 0 és 1 (mint itt), akkor a 2 is szabályos érték, ugyanis a legkisebb kettőhatványig tart az enum tartománya, amibe belefér az összes érték.
2012. jan. 15. 15:48
Hasznos számodra ez a válasz?
 3/8 A kérdező kommentje:

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

2012. jan. 15. 16:04
 4/8 A kérdező kommentje:
Írjatok még léci aki tud az írja meg a válaszokat a erre a 3 kérdésre csak olyan egyértelműen ne pedig túl bonyolítsa minden extrával.
2012. jan. 15. 16:19
 5/8 iostream ***** válasza:
Ha mondjuk értenéd a magyart, akkor látnád, hogy a 2-3. kérdésedre benne van a válasz.
2012. jan. 15. 17:07
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:
Sajnos nem volt érthető akkor.
2012. jan. 15. 17:46
 7/8 anonim ***** válasza:

"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.

2012. jan. 16. 15:52
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:

(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.

2012. jan. 17. 22:16
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!