Kezdőoldal » Számítástechnika » Programozás » C: Mit jelent: while (--i); ?

C: Mit jelent: while (--i); ?

Figyelt kérdés

C nyelvben e ciklusfeltétel mit jelent?

while (--i);

Mikor lép ki, ha "i" csökken?



2022. jan. 7. 18:39
 1/8 anonim ***** válasza:
95%
Ha az i nem nulla, addig megy, de vigyázz mert ez prefix.
2022. jan. 7. 18:51
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:

"... de vigyázz mert ez prefix"

Ezt hogy érted?

Ilyenkor miért nem jelzik egyértelműen a "nullával való nem egyenlőséget"?

2022. jan. 7. 19:04
 3/8 anonim ***** válasza:
90%

prefix = először csökkenti a változó értékét és aztán ellenőrzi.

Ennek:

int i = 10;

while(--i) { printf("i = %d\n", i); }


Ez a kimenete:

i = 9

i = 8

i = 7

i = 6

i = 5

i = 4

i = 3

i = 2

i = 1

2022. jan. 7. 19:10
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
92%

"Ilyenkor miért nem jelzik egyértelműen a "nullával való nem egyenlőséget"?"


C-ben a nullától különböző numerikus érték igazra értékelődik ki, a nulla hamisra.

2022. jan. 7. 19:15
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:
78%

Csökkenti eggyel i-t; ha nem 0, végrehajtja a ciklustörzset; majd ismétel.


Jelenleg, mivel a ciklustörzs üres, semmi haszna nem volt ezt így írni; az egész sor hatása annyi, hogy nullává teszi i-t.

2022. jan. 7. 19:16
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:
Ez a sor amit ide másoltam, egy do { ... ciklus zárósora volt.
2022. jan. 7. 19:28
 7/8 anonim ***** válasza:
85%

Mondjuk ezt írhattad volna az elején is.


Ennek:


int i = 10;

do {

printf("i = %d\n", i);

} while (--i);


Ez az eredménye;


i = 10

i = 9

i = 8

i = 7

i = 6

i = 5

i = 4

i = 3

i = 2

i = 1



Ennek viszont:


int i = 10;

do {

printf("i = %d\n", i);

} while (i--);


Ez az eredménye;


i = 10

i = 9

i = 8

i = 7

i = 6

i = 5

i = 4

i = 3

i = 2

i = 1

i = 0

2022. jan. 8. 07:54
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:
64%

1) C nyelvben, minden, ami nem NULL vagy 0, az true logikai értéknek felel meg. Az említett két érték pedig a false.

Tehát ez:

int i = 6;

if (i) {...}

azt jelenti, hogy:

int i = 6;

if (i != 0) {...}


2) A --i és az i-- között az a különbség, hogy az i-- utoljára hajtódik végre, míg a --i először. Azaz, ha van egy ilyen kódod:

if (i-- == 0) { do_something(); }

az ezt jelenti:

if (i == 0) { i = i - 1; do_something(); }


De ha ilyen kódod van:

if (--i == 0) { do_something(); }

az pedig ezt jelenti:

i = i - 1;

if (i == 0) { do_something(); }


Ebből kifolyólag ez a kód:

do {

do_something();

}

while (--i);


Ezt jelenti:

do {

do_something();

i = i - 1;

} while (i != 0);

2022. jan. 8. 19:58
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!