Kezdőoldal » Számítástechnika » Programozás » [Általános, elméleti kérdés]...

[Általános, elméleti kérdés] Hogyha egy logikai változónak, ami alapjáraton hamis (0) értékkel rendelkezik, adunk egy 0-tól eltérő számot értékül, akkor az az igazságértékén változtatni fog?

Figyelt kérdés
Tehát hamis(0)-ból igaz(1) lesz?
2015. dec. 7. 16:53
 1/10 anonim ***** válasza:
Nem tudom milyen programozási nyelvről beszélsz, de általában egy bool vagy boolean(logikai) változónak csak true(igaz) vagy false(hamis) értéket lehet adni. Ha számot akarsz megadni, akkor az szintaktikailag hibás lesz.
2015. dec. 7. 17:57
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:

Ez nem általános és elméleti kérdés, ugyanis egy logikai változó igaz és hamis lehet, nem egy pozitív egész.

Azokbanb a nyelvekben, ahol számként van definiálva, ott így működik, hiszen kb arra kérdezel rá, hogy működik-e az értékadás...

2015. dec. 7. 17:59
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:
Javaban peldaul szamot nem tudsz hozza rendelni boolean valtozohoz, de C++ -ban minden ami nem nulla az igaz lesz.
2015. dec. 7. 18:21
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:
0%

Több nézőpont is létezik.


Most mondhat mindenki akármit, de csak elméletileg létezik a logikai változó. Memóriában ugyanúgy bináris számként jelenik meg. Így a legkisebb memória méretet fogja lefoglalni, amit a fordítóban szerepel. Tehát byte típus.


Lehet, hogy egyes nyelvekben előfordul a boolean, bool mint típus, de ez fejlesztési időben van csak. Futásilag vaj-mint kevésbé.


Így most mi ennek az ál/alisas neve, már fordító/fejlesztő válogatja. Így inkább már definiálni szokták ennek a megvalósítását.


1) Verzió:

0-ás érték a sikeresség (true), és minden más hibát generál (false). Lásd pl.

exit() függvények, C main visszatérését


2) Verzió:

0-ás a hamis (false) és minden más a igaz (true)


És most kapaszkodj:

Típus konverzió nélkül simán összehasonlíthatóak!


C++ kód:

---------

char c = 0;

int i = 11;

int j = 1;

bool bf = false;

bool bt = true;

if(c == bf) { ... } // logikai kifejezés: igaz

if(!i == bf) { ... } // logikai kifejezés: igaz

if(!!i == bt) { ... } // logikai kifejezés: igaz

if(!c == bt) { ... } // logikai kifejezés: igaz

if(j == bt) { ... } // logikai kifejezés: igaz

if(i == bt) { ... } // logikai kifejezés: hamis

----------

2015. dec. 7. 19:27
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:

# 4/4 Időpont ma 19:27


"1) Verzió:

0-ás érték a sikeresség (true), és minden más hibát generál (false). Lásd pl.

exit() függvények, C main visszatérését "


LOL.


Kérdező:


Nyelvfüggő. Van ahol nem is enged konkrét számot hozzárendelni, de CPP-ben például úgy van ahogy mondod.

2015. dec. 7. 19:44
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:
0%

#5


Nem értem mi a bajod.


Ha így van definiálva a true/false, akkor miért ne lehetne?


boolean fgv1(int x) return (x > 0 || x < 0) ? true : false;

boolean fgv2(int x) return (x > 0 || x < 0) ? false : true;


Látod? Ennyit is ért a leszavazásod, ha így definiáljuk az adott értékből generálandó logikai értéket.

Szóval az állításaim továbbra is helytállóak.


Továbbá, most mond meg. Nem láttál még olyat, hogy:

Error Number?


Csak, hogy szemléltessem:

Legyen most Java: System.exit(n)

Dokumentáció: [link]


Persze ez egy válasz az oprendszernek a futást illetően. De végül is ez is egy státusz mutató.

És ha tovább gondoljuk: logikai igaz/hamis is egy státusz, állapotot mutat, hogy elfogadjuk vagy elvetjük a feltételt.


Ezt nyugodtan lepontozhatod, de érvelj is. Ha meg nem tudsz érvelni, akkor az olyan, hogy nem fogadod el az állítást, de egyben megcáfolni se tudod, hogy nincs igazam. :)


Az, hogy a fordító mit fogad el és mit nem, az már specifikus kérdés. És a kérdezőnek általánosítva mutattam be.

2015. dec. 7. 20:00
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:
100%

# 6/6 Időpont ma 20:00


Jobb körökben nem illik keverni a függvény/program visszatérési értékeit, hibajelzéseit, kivételeit, és a logikai változókat.


Eleve ott kezdődik, hogy a C nyelv main visszatérési érteke integer. Az, hogy ez (C nyelvben) implicit kiértékelhető logikaiként, annak semmi köze ahhoz, hogy ő 0-val tér vissza, ha hibamentesen véget ért.

2015. dec. 7. 20:05
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:
100%
Biztos kéne okoskodnia annak, aki keveri a hibakódot a logikai értékkel?
2015. dec. 7. 20:06
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:

A logikai változó olyan változó ami logikailag két értéket vehet fel: igazat és hamisat. Ne keverjük már bele hogy a fordító ezt hogyan kezeli le a memóriában mert annak semmi köze nincs az egészhez. Logikai kifejezéseket kiértékelhetsz és annak az eredményeit logikai változóban tárolhatod de az nem fog változtatni azon hogy mit nevezünk hamisnak és mit nevezünk igaznak. Nyilvánvaló hogy egy if(hamis_kif){ ... } soha nem fog lefutni.


Hiba azonosítókat és visszatérési értékeket pedig ne keverjünk bele mert semmi köze a témához. Valóban lehet csinálni egy olyan függvény hogy:

bool isFalse(int x) { return x==0; }

és akkor a "hamis" szám igazzal tér vissza, de azért mert az x==0 valóban egy igaz kifejezés ha 0 az x. Olyat még nem láttam ahol pl. a 3<5 kifejezés kiértékelése hamis eredményre jutott volna.


"Típus konverzió nélkül simán összehasonlíthatóak!"

Ez pedig nem igaz. A C++ implicit típuskonverziót csinál, a 0-t hamissá alakítja, a 0-nál különböző számot pedig igazzá ha booleannal hasonlítasz össze. Attól hogy nem kell explicit átkasztolnod az integert, még történik típuskonverzió. Abban igazad van, hogy programozási nyelv függő hogy hogyan kasztol a nyelv intből booleant vagy egyáltalán megengedi e, de konvenció hogy a 0 a hamis, a többi szám igaz. Én nem tudok olyan programozási nyelvről ahol a 0 lenne az igaz és a többi lenne a hamis, olyat ismerek amilyet a kérdező leírt, és olyat is ami nem engedi meg a típuskonverziót a kettő között.

2015. dec. 7. 20:36
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:
Ha mar ennyire szorszalhasogatas megy akkor ha egynel tobb boolean ertekre van szuksegem bitenkent tarolom. Ha bedobalom bit fieldbe meg atlathato is marad. Egyebkent C++ -ban alapbol ha nincs kikapcsolva a vectornak a specializacioja bitenkent tarolja a bool ertekeket (std::vector<bool>).
2015. dec. 7. 23:30
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!