Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!
C programozás feladat
elektronika95{ Elismert } kérdése
472
Az a=0xf5 és b=&a esetén b=0xd4, mennyi az a és a *b+a értéke decimálisan, ha a char típusú változó? Értelmezze mindegyik kifejezést!
a:
*b+a:
Jelenleg 1 felhasználó nézi ezt a kérdést.
0
Felsőoktatás / Informatika
Válaszok
1
bongolo{ }
megoldása
A char típusú változó ÁLTALÁBAN 8 bites előjeles számot jelent (van olyan C fordító, aminél a char előjel nélküli, olyankor teljesen más lenne az eredmény.)
0xf5: 16-os számrendszerben van megadva a szám. F azt jelenti, hogy 15, ezért HA ELŐJEL NÉLKÜLI LENNE, akkor 16·15+5 = 245 lenne az értéke. Mivel a char inkább előjeles, és a szám nagyobb 127-nél, ezért 245-256 = -11 (kettes komplemens)
b=&a azt jelenti, hogy az 'a' változó memóriacíme kerül b-be, ami egy mutató (pointer). *b azt jelenti, hogy az az érték a memóriában, ahová a b pointer mutat. Mivel a b éppen az a-ra mutat, ezért *b értéke megegyezik a-val.
Vagyis *b+a = a+a
-11 + -11 = -22
---
Megjegyzés:
A *b + a kifejezésben két char típusú érték adódik össze. A char 8 bites szám, de a C az aritmetikai műveleteket int-ben végzi (ami manapság 32 bites számformátum), szóval először átalakítja a char-t int-re. Az a értéke -11, ez int-ben is -11. Két ilyennek az összege pedig természetesen -22.