Kezdőoldal » Számítástechnika » Programozás » Miért hibás a következő kód...

Miért hibás a következő kód C-ben?

Figyelt kérdés

#include<stdio.h>

main()

{

int i;

for(i=0; i<=32767; i+=1)

printf(" Az i értéke:%d\n", i);

return 0;

}


Értetlenségem oka az, hogy C-ben az int tipus értékkészlete -32768 és 32767 között van és a program csak

i<=32766 -ig fut le rendesen, vagyis ezt az értéket írja ki utoljára és utána kilép, ahogyan kell, de ha az értéket módosítom i<=32767-re, ami az értékkészletnek még megfelel, akkor egy végtelen ciklust kapok, ami 32766 vagy 32767 (nem látszik a képernyőn, hogy meddig megy)után csökken 1-ig vagy 0-ig egy mínusz jellel, majd onnan újra növekszik.



2013. jan. 10. 11:17
 1/7 anonim ***** válasza:
Ha 32766 -hez 1-et hozzáadsz, akkor -32768 lesz. Így i mindig kisebb lesz mint 32767 és már kész is a végtelen ciklus.
2013. jan. 10. 11:19
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:
Akkor ezek szerint az értékkészlet utolsó számát soha nem lehet kííratni?
2013. jan. 10. 11:23
 3/7 A kérdező kommentje:

Az i=32767-et a printf-el ki lehet íratni.

Vagy ez nem ugyanaz?

2013. jan. 10. 11:30
 4/7 A kérdező kommentje:

"Ha 32766 -hez 1-et hozzáadsz, akkor -32768 lesz."

Ez így nem valami logikus, hisz az értékkészletben még benne lenne.

2013. jan. 10. 11:41
 5/7 anonim ***** válasza:
2013. jan. 10. 11:41
Hasznos számodra ez a válasz?
 6/7 iostream ***** válasza:
100%

for(i=0; i<=32767; i+=1)

i sosem éri el a 32768-t, hiszen nincs benne az értékkészletében. Amikor eléri a 32767-t, kiírja, majd növeli az értékét, lesz belőle -32768 (átfordult), és folytatja tovább.

2013. jan. 10. 11:47
Hasznos számodra ez a válasz?
 7/7 A kérdező kommentje:
Iostreamnek ezer köszönet!!! Tehát akkor csak azt kell figyelembe venni, hogy a 32767 után még növeli eggyel az értéket és innen fordul át végtelen ciklusba.
2013. jan. 10. 11:56

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!