C ben mit csinál, mire vannak a következök:c-'C'; (! a)? 4:5), stb?
int = 2
char c = 'B'
int pole [ ] = {1,2,3,4,5};
mit fog kiirni a program erre:
c-'C' //ezt nem ertem mit csinal
(!a)?4:5) // ez egy if,de feltetele nem egyenlo 2 es ezert 5
Ez milyen definicio,mit jelent:
void *foo(char*); //ez egy fuggveny de a pointer mit akar jelenteni a foo elott?
No kezdjük.
A c egy char típusú változó. A 'C' egy char típusú literál. Nem fog kiírni semmit, hiszen nincs benne kiírás. A c - 'C' kivonás értéke 'B' - 'C' lesz, ami (a leggyakoribb 8 bites charral és hagyományos ASCII táblával számolva) vagy -1, vagy 255, attól függően hogy a char előjeles vagy nem.
A ? : egy operátor, (x ? y : z) értéke y, ha x igaz (nem 0), z ha x nem igaz (0). A ! a logikai tagadás művelete.
Tehát (!a) ? 4 : 5 értéke 4, ha a NEM igaz (hiszen tagadva van), 5 ha igen.
A void *foo(char*); írható így is:
void* foo(char*);
Azaz egy void* a visszatérési értéke. Ami egy bármire mutató mutató.
a dolgozatban igy voltmegadva c-'c'
szoval ha c amib b akkor ha kivonunk belole c-t akkor mi lessz? kiprobaltam de nem irt ki semmit a progi...
es a void *foo volt a foon volt a *
Most itt 5 percben akarsz egy C programozói tanfolyamot? Naiv vagy...
int = 2
Itt hiányzik egy változó név, pl 'a', ekkor a sor így néz ki:
int a = 2
Ennek a jelentése, hogy legyen az 'a' nevű változó típusa integer (egész), értéke pedig 2.
char c = 'B'
Legyen a 'c' nevű változó típusa character (8 bites előjeles szám), értéke pedig 'B' (azaz 0x42).
int pole [ ] = {1,2,3,4,5};
Legyen a 'pole' tömb típusa integer (egész), az elemei pedig 1,2,3,4,5.
mit fog kiirni a program erre:
c-'C' //ezt nem ertem mit csinal
A 'c' változót fentebb definiáltuk, értéke 'B', azaz 1x42. Ebből ki kell vonni 'C'-t, azaz 0x43-t. Az eredmény -1 lesz, azaz 0xff.
(!a)?4:5) // ez egy if,de feltetele nem egyenlo 2 es ezert 5
ez egy feltételes kifejezés (azaz valóban "if"), ami azt jelenti:
if(!a) 4; else 5;
azaz ha 'a' értéke hamis (0), akkor 4, egyébként 5.
void *foo(char*); //ez egy fuggveny de a pointer mit akar jelenteni a foo elott?
Azt, hogy a függvény egy pointert ad vissza, aminek nincs meghatározva a tipusa (bármibe konvertálható).
Na, nem tudom érthető-e?
De talán egyszerűbb, ha inkább egy 'C' programnyelv leírás alapján tanulod a nyelvet...
Pedro
Nem írt ki semmit, mivel nincs kiírás. Ha leírod azt, hogy c - 'C', akkor nem történik semmi, a fordító valószínűleg ki is optimalizálja. Ha olyat írsz, hogy
printf("%c", c - 'C') akkor meg azért nem fog kiírni semmit, mert a -1 vagy 255 karaktert nem tudja megjeleníteni a konzolod.
A
void *foo(char*);
és a
void* foo(char*);
TÖKÉLETESEN ekvivalens. Csak azért raktam át, hogy jobban látszódjon, hogy a * a voidhoz tartozik, nem a foohoz.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!