Kezdőoldal » Számítástechnika » Programozás » C ben mit csinál, mire vannak...

C ben mit csinál, mire vannak a következök:c-'C'; (! a)? 4:5), stb?

Figyelt kérdés

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?


2012. jan. 18. 21:02
 1/4 iostream ***** válasza:

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ó.

2012. jan. 18. 21:20
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:

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 *

2012. jan. 18. 21:27
 3/4 Shai-Hulud ***** válasza:

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...

[link]


Pedro

2012. jan. 18. 21:39
Hasznos számodra ez a válasz?
 4/4 iostream ***** válasza:

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.

2012. jan. 18. 21:42
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!