Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
Postano: 2:42 pon, 17. 12. 2007 Naslov: Je li -0.0 istina ili laz? |
|
|
Na zadnjim vjezbama je bilo postavljeno pitanje interpretacije
[tt]if (x)...[/tt]
kad je [tt]x[/tt] broj razlicit od nule i jedinice, tj. "Je li to 'laz' kad god je [tt]x[/tt] nula (preciznije, i ako je [tt]x[/tt] realan broj)?" :-s
Moj odgovor je bio da je za [tt]x == 0.0[/tt], ali da nisam siguran za [tt]x == -0.0[/tt], tj. vrsi li se ta usporedba bitovno ili bas po dekadskoj vrijednosti od [tt]x[/tt]. :| Naime, zapisi tih brojeva u racunalu su slijedeci:
[table]
0.0 [url=http://degiorgi.math.hr/prog1/apps/prikaz.php?b=0.0]00000000 00000000 00000000 00000000[/url]
-0.0 [url=http://degiorgi.math.hr/prog1/apps/prikaz.php?b=-0.0]10000000 00000000 00000000 00000000[/url][/table]
sto znaci da broj -0.0 u memoriji nije reprezentiran samo nulama. :?
Da ne duljim, isprobah na racunalu:[code:1]$ cat t.c; gcc -ansi --pedantic-error t.c && ./a.out
#include <stdio.h>
int main(void) {
double x = 0.0, y = -0.0;
printf("x = %g i to %sje \"istina\".\n", x, (x ? "" : "ni"));
printf("y = %g i to %sje \"istina\".\n", y, (y ? "" : "ni"));
return 0;
}
x = 0 i to nije "istina".
y = -0 i to nije "istina".[/code:1]
Dakle, broj [tt]-0.0[/tt] se zaista tako i pamti (sto sam i rekao na vjezbama), no racunalo ga uvijek interpretira kao "obicnu" nulu, tj. izraz
[tt]if (x) printf("Istina"); else printf("Laz");[/tt]
ce i za [tt]x == 0.0[/tt] i za [tt]x == -0.0[/tt] ispisati "[tt]Laz[/tt]". 8)
Na zadnjim vjezbama je bilo postavljeno pitanje interpretacije
if (x)...
kad je x broj razlicit od nule i jedinice, tj. "Je li to 'laz' kad god je x nula (preciznije, i ako je x realan broj)?"
Moj odgovor je bio da je za x == 0.0, ali da nisam siguran za x == -0.0, tj. vrsi li se ta usporedba bitovno ili bas po dekadskoj vrijednosti od x. Naime, zapisi tih brojeva u racunalu su slijedeci:
sto znaci da broj -0.0 u memoriji nije reprezentiran samo nulama.
Da ne duljim, isprobah na racunalu: Kod: | $ cat t.c; gcc -ansi --pedantic-error t.c && ./a.out
#include <stdio.h>
int main(void) {
double x = 0.0, y = -0.0;
printf("x = %g i to %sje \"istina\".\n", x, (x ? "" : "ni"));
printf("y = %g i to %sje \"istina\".\n", y, (y ? "" : "ni"));
return 0;
}
x = 0 i to nije "istina".
y = -0 i to nije "istina". |
Dakle, broj -0.0 se zaista tako i pamti (sto sam i rekao na vjezbama), no racunalo ga uvijek interpretira kao "obicnu" nulu, tj. izraz
if (x) printf("Istina"); else printf("Laz");
ce i za x == 0.0 i za x == -0.0 ispisati "Laz".
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju. 
|
|
[Vrh] |
|
dvičak Forumaš(ica)


Pridružen/a: 02. 11. 2006. (17:55:13) Postovi: (60)16
Spol: 
Lokacija: dj-zg
|
|
[Vrh] |
|
ß Forumaš(ica)


Pridružen/a: 29. 07. 2006. (15:29:06) Postovi: (115)16
Spol: 
Lokacija: Graveyard Mountain Home
|
|
[Vrh] |
|
dvičak Forumaš(ica)


Pridružen/a: 02. 11. 2006. (17:55:13) Postovi: (60)16
Spol: 
Lokacija: dj-zg
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
Postano: 13:14 pon, 17. 12. 2007 Naslov: |
|
|
Tako je, rijec je o realnim brojevima. :D
Kad smo vec kod toga, evo vam jedna mozgalica... zasto se za [tt]x[/tt] i [tt]y[/tt] u slijedecem programu ispisuju razlicite vrijednosti:
[code:1]$ cat t.c; gcc -ansi --pedantic-error t.c && ./a.out
#include <stdio.h>
int main(void) {
double x = -0, y = -0.0;
printf("x = %g, y = %g\n", x, y);
return 0;
}
x = 0, y = -0[/code:1]
:?:
Tako je, rijec je o realnim brojevima.
Kad smo vec kod toga, evo vam jedna mozgalica... zasto se za x i y u slijedecem programu ispisuju razlicite vrijednosti:
Kod: | $ cat t.c; gcc -ansi --pedantic-error t.c && ./a.out
#include <stdio.h>
int main(void) {
double x = -0, y = -0.0;
printf("x = %g, y = %g\n", x, y);
return 0;
}
x = 0, y = -0 |
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju. 
|
|
[Vrh] |
|
mibo Forumaš(ica)


Pridružen/a: 04. 10. 2007. (14:52:50) Postovi: (51)16
Spol: 
Lokacija: /var/tmp
|
Postano: 14:50 pon, 17. 12. 2007 Naslov: Odgovor na mozgalicu |
|
|
[quote="vsego"]Tako je, rijec je o realnim brojevima. :D
Kad smo vec kod toga, evo vam jedna mozgalica... zasto se za [tt]x[/tt] i [tt]y[/tt] u slijedecem programu ispisuju razlicite vrijednosti:
[code:1]$ cat t.c; gcc -ansi --pedantic-error t.c && ./a.out
#include <stdio.h>
int main(void) {
double x = -0, y = -0.0;
printf("x = %g, y = %g\n", x, y);
return 0;
}
x = 0, y = -0[/code:1]
:?:[/quote]
Jer se [tt]x[/tt]u pridružuje konstanta tipa [tt]int[/tt], a [tt]y[/tt]u konstanta tipa [tt]float[/tt] :silly: ?
vsego (napisa): | Tako je, rijec je o realnim brojevima.
Kad smo vec kod toga, evo vam jedna mozgalica... zasto se za x i y u slijedecem programu ispisuju razlicite vrijednosti:
Kod: | $ cat t.c; gcc -ansi --pedantic-error t.c && ./a.out
#include <stdio.h>
int main(void) {
double x = -0, y = -0.0;
printf("x = %g, y = %g\n", x, y);
return 0;
}
x = 0, y = -0 |
 |
Jer se xu pridružuje konstanta tipa int, a yu konstanta tipa float ?
_________________ WAR IS PEACE
FREEDOM IS SLAVERY
IGNORANCE IS STRENGTH
George Orwell: 1984
|
|
[Vrh] |
|
mdoko Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: 
Lokacija: Heriot-Watt University, Edinburgh
|
|
[Vrh] |
|
mibo Forumaš(ica)


Pridružen/a: 04. 10. 2007. (14:52:50) Postovi: (51)16
Spol: 
Lokacija: /var/tmp
|
Postano: 17:08 pon, 17. 12. 2007 Naslov: Pardon |
|
|
[quote="mdoko"][tt]0.0[/tt] je konstanta tipa [tt]double[/tt]. Konstanta tipa float bila bi [tt]0.0f[/tt].[/quote]
:oops:
mdoko (napisa): | 0.0 je konstanta tipa double. Konstanta tipa float bila bi 0.0f. |
_________________ WAR IS PEACE
FREEDOM IS SLAVERY
IGNORANCE IS STRENGTH
George Orwell: 1984
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
|