C++

Változók

A változók a programozás alapvető építőkövei, amelyek segítségével adatokat tárolhatunk a számítógép memóriájában. Minden változónak van típusa, amely meghatározza, hogy milyen típusú adatot képes tárolni, és mekkora memóriaterületre van szüksége.

Memória és bájt

  • A számítógép memóriája sok kis cellából áll, amelyek mindegyike egy bájt adatot képes tárolni.
  • 1 bájt = 8 bit
    • Egy bit lehet 0 vagy 1, tehát egy bájt összesen 256 különböző értéket tud tárolni.

     

      Adattípusok C++-ban

       

      Egész típusok 

      Az egész típusú változók egész számok tárolására szolgálnak. A méretük és az általuk tárolható értékek tartománya típusonként változik.

       

      Típus Méret Tartomány (signed) Tartomány (unsigned)
      char 1 bájt -128 – 127 0 – 255
      short legalább 2 bájt -32 768 – 32 767 0 – 65 535
      int legalább 4 bájt -2 147 483 648 – 2 147 483 647 0 – 4 294 967 295
      long legalább 4 bájt -2 147 483 648 – 2 147 483 647 0 – 4 294 967 295
      long long legalább 8 bájt -9 223 372 036 854 775 808 – 9 223 372 036 854 775 807 0 – 18 446 744 073 709 551 615

        Logikai típus

        A logikai változók kizárólag igaz (true) vagy hamis (false) értékeket vehetnek fel.

        Típus Méret Tartomány
        bool 1 bájt true (1) vagy false (0)

         

        Lebegőpontos típusok

        A lebegőpontos típusok valós számok tárolására szolgálnak, nagy precizitással. A double nagyobb pontosságot kínál, mint a float.

        Típus Méret Minimum abszolút érték Maximum abszolút érték
        float 4 bájt 1.175 494 × 10^-38 3.402 823 × 10^38
        double 8 bájt 2.225 073 × 10^-308 1.797 693 × 10^308

         

        sizeof használata

        #include <iostream>
        #include <windows.h>
        int main()
        {
        std::cout << „char: „ << sizeof(char) << ” bájt” << std::endl;
        std::cout << „int: „ << sizeof(int) << ” bájt” << std::endl;
        std::cout << „float: „ << sizeof(float) << ” bájt” << std::endl;
        std::cout << „double: „ << sizeof(double) << ” bájt” << std::endl;
         return 0;
        }

        Hogy tudunk egy ilyen változót használni?

        A változók nevének megválasztásakor szabad kezet kapunk, feltéve, hogy nem használunk kulcsszavakat, amelyek a C++ nyelvben már foglaltak (pl. int, return, stb.)..Az, hogy mi tartozik ide, ebből a listából egyértelműen kiderül. Emellett fontos, hogy megértsük, hogyan működik a változók signed és unsigned attribútuma, valamint a túlcsordulás jelensége.

        #include <iostream>
        #include <windows.h>
        int main()
        {
        short egesz = 54;
        std::cout << egesz << std::endl;
        return 0;
        }

        Ha nem írjuk ki, hogy signed, akkor signed. Csak az unsignedot kell jelezni.
        Ha a legnagyobb értékre állítom be, hogy írja ki: 32 767 – ezt még kiírja, de ha egyet adunk hozzá, túlcsordul és átáll a legkisebb értékre:

        túlcsordulás

        Unsigned esetén a legnagyobb értékről visszacsordul az érték 0-ra.

        A char típus kifejezetten karakterek tárolására szolgál. Ezek a karakterek az ASCII-táblázat alapján kapnak számértéket, ahol minden karakter egy számhoz van rendelve (0-tól 127-ig az alap ASCII kódok esetében).

        Karakter tárolása:

        • A char típusban egyetlen karaktert tárolhatsz, amit idézőjelek (pl. 's') közé kell tenni.
          char karakter = ‘A’;

          #include <iostream>
          int main()
          {
          char karakter = ‘s’; // Egyetlen karakter tárolása
          std::cout << „A karakter: „ << karakter << std::endl;
          return 0;
          }

        • Karakterek ASCII-értéke:

          • A karakterek az ASCII szabvány szerint egy számhoz vannak rendelve.
          • Például: 'A' az 65, 'a' az 97 alatt szerepel az ASCII táblázatban.
        • Karakter számmá alakítása:

          • Ha egy karakter ASCII-értékét szeretnéd megkapni, használhatsz egy explicit típuskonverziót, például (int).

            include <iostream>
            int main()
            {
            char karakter = ‘s’; // Az ‘s’ karakter
            std::cout << „A karakter ASCII-kódja: „ << (int)karakter << std::endl;
            return 0;
            }

        • Szám visszaállítása karakterré: 
          #include <iostream>
          int main()
          {
          int kod = 65; // ASCII-kód
          std::cout << „A számhoz tartozó karakter: „ << (char)kod << std::endl;
          return 0;
          }

           

          Logikai típus (bool) a C++-ban

           

        • A bool típus igaz-hamis állításokhoz használható, és két értéket vehet fel: true vagy false. Ez a típus alapvetően a logikai műveletek végrehajtásához szükséges, például feltételek kiértékeléséhez.
        • Értékei: 
          true (igaz), amely 1-nek felel meg
          false (hamis), amely 0-nak felel meg
        • Ha pedig kiiratjuk az értékét, akkor látszik, hogy 1 bájt:

          #include <iostream>
          int main()
          {
          std::cout << sizeof(bool) << ” bájt” << std::endl; // Kiírja a bool méretét
          return 0;
          }

          A bool érték kiíratása

          #include <iostream>
          int main()
          {
          bool logikai = true; // Az érték true
          std::cout << logikai << std::endl; // Kiírja: 1
          return 0;
          }

        A bool főleg feltételek kezelésére szolgál: 

        #include <iostream>
        int main()
        {

        int szam = 10; bool nagyobb = (szam > 5); // A feltétel értéke true, mert 10 nagyobb, mint 5
        std::cout << „A feltétel igaz? „ << nagyobb << std::endl;
        return 0; }

        Főleg feltételes műveletekben használatos, például az if és while szerkezetekben. Kevesebb memóriát igényel (1 bájt), ezért hatékony adattárolást tesz lehetővé. 

        Lebegőpontos típusok

        A lebegőpontos típusok, mint a float és a double, valós számok tárolására alkalmasak. Ezek lehetnek egész rész nélküli tört számok, vagy akár nagyon kicsi/nagy értékek exponenciális alakban.

        Típus Méret Pontosság Tartomány abszolút értékben
        float 4 bájt ~7 számjegy ~1.175 × 10^-38 – 3.402 × 10^38
        double 8 bájt ~15 számjegy ~2.225 × 10^-308 – 1.797 × 10^308

        A double típus nagyobb pontosságot biztosít, mint a float, ezért előnyösebb, ha nagyobb vagy pontosabb valós számokkal dolgozol.

        #include <iostream>
        int main()
        {

        double d = 6.8e14; // 6.8 × 10^14
        std::cout << d << std::endl;
        return 0;
        }

        float és double közötti különbség:

        #include <iostream>
        int main()
        {

        float f = 3.14159265359; // Lebegőpontos szám float típussal
        double d = 3.14159265359; // Lebegőpontos szám double típussal
        std::cout << „Float: „ << f << std::endl; std::cout << „Double: „ << d << std::endl; return 0;
        }

         

         

        Edvac működés közben