üzenetek

hozzászólások


isti84
(csendes tag)

Üdv!

Nem neked szólt! Valamiért behalt a böngészőm és nem jkelenített meg 1-2 dolgot a hozzászólásokból, mint pl, azt a kb 10 pontots megjegyzésedet :D

Elnézést mégegyszer.

Üdv


orbano
(félisten)

remélem kevesen tanulnak C++-t a stroustrup könyv (és Porkoláb advancd C++ órái) nélkül. a cikk szerzője tuti hogy még csak kirakatban sem látta, különben tudná és értené, hogy hogyan is épül fel a nyelv. sajnos sokan tanulnak így C++ul, nem csoda, hogy sok a lassan készülő, bugos, memory leakes program.


orbano
(félisten)

a
bool L = false;
L = true == 23
az igaz értéket ad vissza?


SLD
(tag)

Nem, persze hogy nem. Ez esetben számként kezeli őket és persze, hogy 1 nem lesz egyenlő 23-al. Én erre gondolok:

#include <iostream>
using namespace std;

int main() {
bool b = 600000000;
cout << b << endl;
cout << sizeof(b) << " bájt" << endl;
return 0;
}

Tehát, alapértékként megadhatunk neki akár ennyit is, de ezt a compiler szépen konvertálja 1-re vagy 0-ra. Jelen esetben 1-re.
De pl. vehetjük a Te példádat is, ha később a b-nek (nálad L-nek) 23-at adsz értékként és kiíratod, akkor az újra 1 lesz, mert megtörtént a típusátalakítás a compiler által. Sőt ha már nagyon igaz-hamis vizsgálatot szeretnél akkor lehet így is csinálni:

#include <iostream>
using namespace std;

int main() {
bool b = 600000000;
cout << b << endl;
b = 23;
if(b) {
cout << b << endl;
}
cout << sizeof(b) << " bájt" << endl;
return 0;
}

Szerk: BEGIN

Sőt csinálhatjuk ezt is, hogy még szemléletesebb legyen (persze ez nem a szép módja a típuskonverziónak, de példának jó):

#include <iostream>
using namespace std;

int main() {
bool b = 600000000;
cout << b << endl;
b = 23;
if(b == (bool) 569) {
cout << b << endl;
}
cout << sizeof(b) << " bájt" << endl;
return 0;
}

Szerk:END

Remélem így már érthető mire akartam kilyukadni.

Azt meg végképp nem értem miért Te és miért nem Benmartin kérdez ilyeneket, hisz ő írt hülyeséget... no mindegy.

#22 :

Aki tud németül, annak szintén jó választás lehet a: C++ von A biz Z, Jürgen Wolf-tól. Ellentétben a magyar kiadásokkal ez most éppen 2009-es és nem a 2001-es fordításának 2006-os kiadása...

#21 isti84 :

Pedig akár szólhatott volna Neki is...

[ Szerkesztve ]


orbano
(félisten)

én csak "oktatási célzattal"/kukacoskodásból kérdeztem a dolgot, mert félreérthetőnek tartottam, jómagam tisztában vagyok még úgy-ahogy a C++ működésével kapcsolatban (Porkolábnál 20 perc alatt szereztem meg a 4-es gyakjegyet, ha mond ez Neked valamit :D)


SLD
(tag)

Ok, igaz. Néha túl lövök a célon. :))
De remélem, így 3 példával már nem félreérthető :D
(Meg azt is hogy nem én tudom rosszul, bár a g++ fordító mellém állt, mindhárom esetben)

Ő nála hacsak fizika helyett nem infot/programozást választok egy ideig nem fogok megfordulni, de elhiszem, hogy ez egy pozitívum :)


Benmartin
(senior tag)

Miért írtam hülyeséget?


SLD
(tag)

#12-es hozzászólás, 7-es pont:

"A bool az egy 1 bájtos változó, szerintem nem csak két értéke lehet, hanem 256 féle."

Javításra került a mondat, a 14-es hozzászólásban erre:

"Na tessék már rám is hatással van a hülyeség, szóval a bool az egy 1 bájtos típus."

Egy bool típusú változó értéke az Istenért, NEM LEHET 256 féle, hány féle képpen kell még leírnunk ezt Neked?! Csak, csak is kizárólag KÉT ÉRTÉKET VEHET FEL.
Ezért hívják boolean-nak, George Boole nyomán.
Nem is értem, hogy honnan jött ez Neked, de itt egy példa, hogy lásd a te feltevésedet gyakorlatban:

0 = hamis;
1 = kicsit hamis;
2 = hamiskás;
3 = majdnem hamis;
4 = közel hamis;
...
253 = közel igaz;
254 = majdnem igaz;
255 = teljesen igaz.

Komolyan gondolod, hogy a gép különbséget tud tenni ezek között?!

Nincs baj azzal ha tévedsz, azzal van baj, hogy tévesen javítasz ki valakit, majd utána ahelyett, hogy utánanéznél, tetteted a hülyét...

Ha nem hiszed, itt van a #24-esben pár példakód, fordítsd le, próbáld ki. De kérlek ne valami szabványt nem követő fordítót használj, mint a C topicban tetted, mert persze hogy azzal még ilyen hülyeségeket is tudsz csinálni...
Ha esetleg nem emlékeznél a C topicos részekre itt egy kis emlékeztető: [link]

A többi Olvasótól elnézést ezért a sok cifra formázási karakterért, csak már nem tudom, hogyan lehetne jobban felfogatni a lényeget Benmartin-nal...


godga
(csendes tag)
Blog

Pár megjegyzést fűznék a cikkhez, cikksorozathoz és a hozzászólásokhoz...
1. Cikksorozat: Jó ötlet, gyenge-közepes megvalósítás. A fő hiba, hogy igazán senkinek sem szól. Kezdők ezzel semmit nem tudnak kezdeni, kezdőknek példák kellenek, magyarázatokkal. Középhaladók, már túl vannak ezen a szinten, a fölött pedig legyintenek...
2. Cikk: Példák nélkül ez így olyan mint egy gyengén összerakott fogalom gyűjtemény, pontatlan fogalmazással, hiányokkal, félrevezető magyarázatokkal.
3. Szerző: Példás, hogy ilyen lelkesedéssel írod a cikket, és a kommentekre is reagálsz, de saját véleményem szerint vagy több időt kellene a cikkek írására fordítani, vagy kicsit még várni kellett volna, egy intenzív tanulófázis végezetéig...
4. Egyetemi/főiskolai prog órák: c++ oktatása egy minimális készség kialakítására alkalmas csak, megjegyzem Stroustrup bibliája egy c++ kezdőkönyv, onnan még nyelvi szinten is lehet bőven fejlődni, programozás elméletben pedig nagyon-nagyon sokat...


Benmartin
(senior tag)

Most komolyan minek tovább folytatni ezt? Nagyon jól tudom, hogy mit akartál a példával mondani, ha beírom a boolnak hogy 234, akkor az true, mert 0-tól eltér, és ha kiíom, akkor is 1 lesz, mert true. Inkább csak félreértetted, amit mondani akartam a 7-es ponttal.

Idegeskedni meg kár ezért.


Benmartin
(senior tag)

Csak, hogy tisztább legyen:

#include <iostream>
using namespace std;
struct A
{
bool a:1,b:1,c:1,d:1,e:1,f:1,g:1,h:1;
};
A t;
int main()
{

t.e = 1;
t.f = 0;
t.g = 1;
t.h = 0;

// (1010)2 = 10, maximális tárolható érték: 2^8-1 = 255, plusz 0, tehát 256 féle érték

cout << t.a * (1 << 7) + t.b * (1 << 6) + t.c * (1 << 5) + t.d * (1 << 4)
+ t.e * (1 << 3) + t.f * (1 << 2) + t.g * (1 << 1) + t.h << endl;

cout << sizeof(t) << endl;
return 0;
}


SLD
(tag)

Valóban félreértettem, illetve inkább túlságosan "csőlátásban" néztem a hozzászólásodat. Ennek a csőlátásnak pedig egyik paramétere az volt, hogy ez egy kezdőknek szóló cikk második része, ahol még sem a bitekről, sem a bitműveletekről, sem a memóriában foglalat helyről nem esett szó, tehát nyílván a kritika is igyekszik megtartani ezt a szintet. Tévedtem.
Azt is elismerem, hogy mindig is könnyelműen bántam a lehetetlen, esélytelen szavakkal, valamint ezeknek szinonimáival, pedig pont a programozás/számtech. az ahol csak a hardware és az emberi találékonyság szab határt.

Idegeskedtem volna? Én csak a lényeget akartam kiemelni; és látod, végre sikerült megértened és rájönnöd, hogy én félreértettem már az elejétől fogva, szerintem sikerként könyvelhetjük el.

De azt továbbra is nehezemre esik elhinni, hogy Te szerinted, Zwiebel-nek, ahelyett, hogy a bool igaz vagy hamis lehet, azt kellett volna írnia, hogy "a bool értéke 256 féle lehet, ugyan eredetileg logika értékek tárolására szánták, de egy kis biteltolással pik-pak megvagyunk és máris használhatjuk valami tök másra mint amire kitalálták."
Szóval én elhiszem, hogy már kezdettől fogva erre gondoltál azzal a mondattal, de ha erre gondoltál, akkor ez a tipikus szőrszálhasogatás és látod mekkora galibát tud okozni.

Mindenestre: köszönöm!
Itteni első hozzászólásodig még sosem gondoltam arra, hogy bool-t használjak char helyett kis számok (avagy nem logikai értékek) tárolására... Mindig úgy indultam neki, hogy: miért is használná az ember saját fejét egy szög beveréséhez, ha ott a kalapács is...
Tanulságos és eredményes volt itteni beszélgetésünk... bár kicsit pazarló, de valamit valamiért.


Benmartin
(senior tag)

Mert nyilván én is csak kötekedtem, velem is szoktak, én is szoktam, ez ilyen. :) És én sem így tárolnék kis számokat, de attól még lehetséges.

üzenetek