Kezdőoldal » Számítástechnika » Programozás » Hogy működik C-ben az int?

Ozmium42 kérdése:

Hogy működik C-ben az int?

Figyelt kérdés
Írtam egy egyszerű fibonacci függvényt, és azt nem értem, hogy ha a változóknak sima int-et használok, akkor miért képes mégis elmenni hiba nélkül 1836311903-ig, ami a long int esetén lenne indokolt? Átvált automatikusan?
2015. jan. 8. 21:43
 1/10 anonim ***** válasza:
Az int mérete implementációfüggő, újabb rendszereken 4 bájtos, aminek 2 147 483 647 a maximális értéke.
2015. jan. 8. 21:46
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:

Azért mert az int 4 bájtos a mai gépeken, (2^31)-1 -ig tudja tárolni a számokat:

[−2147483647,+2147483647]

2015. jan. 8. 21:49
Hasznos számodra ez a válasz?
 3/10 A kérdező kommentje:
Értem, köszönöm, akkor ezek szerint az int és a long int között nincs is különbség?
2015. jan. 8. 21:52
 4/10 anonim ***** válasza:

Gyakorlatban 32 biten nincs. A specifikáció csak a minimális méretüket adja meg, ezért előfordulhat hogy nem mindenhol egyezik meg a méretük.


Ha ennél nagyobb kell akkor a "long long" kell neked vagy ezeknek az unsigned változatai.

A long long int 9223372036854775807-ig tud számot tárolni.

2015. jan. 8. 22:29
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:

Itt van pontosan melyik hány bites az adott architektúrán.

[link]


Tehát a szabvány szerint:

short : legalább 16 bit

int : legalább 16 bit

long : legalább 32 bit

long long : legalább 64 bit


Az int típus kb az adott platform leggyorsabb egész típusát jelenti, gyakorlatilag ez 32 bit (szinte) mindenhol (Windows-on garantáltan mindenhol). A long mára már csak egy hagyaték típus. A tényleges 64 bites egész a 'long long', ahogy előttem is írták.

Ezt az alakot sokan nem szeretik mert feleslegesen hosszú, érdemes ezért használni az inttypes.h, ahol egyértelműen jól ki van írva az egész előjelessége és mérete.


[link]

2015. jan. 8. 22:51
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:
Amúgy milyen könyvből tanulsz, hogy még 16 bitesnek veszi az intet?
2015. jan. 8. 22:52
Hasznos számodra ez a válasz?
 7/10 A kérdező kommentje:

Konkrétan ezt most Wikipédiáról néztem ki:


[link]


A tankönyvet is netről szedtem le, "C programozás középiskolásoknak", az is 16 bitesnek írja.

2015. jan. 9. 09:24
 8/10 anonim ***** válasza:
Nem azt írja hogy 16 bites, hanem azt hogy legalább 16 bites ami helyes is mert ez van a specifikációban is.
2015. jan. 9. 11:50
Hasznos számodra ez a válasz?
 9/10 A kérdező kommentje:
Már most értem, de mikor a kérdést feltettem, még nem volt világos, mint jelent az, hogy "legalább".
2015. jan. 9. 12:14
 10/10 anonim ***** válasza:
Annyit jelent, hogy nincs megszabva a felső határ, architektúrától és implementációtól függ. (Mert ugye sokféle hardver van, és azokra sokféle C fordító.)
2015. jan. 10. 05:12
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!