[ sammo @ 02.12.2010. 15:49 ] @
dal mi jos neko moze ovaj code da objasni.
Code:

#nclude<iostream>
using namespace std;
int main(){

int i = 3;    //definisano i inicijalizirano i 
double d = 1.5; //definisano i inicijalizirano d
int *ip = &i;    //pointer ip pokazuje na adresu i
double *dp = &d;    //pointer dp pokazuje na adresu d
 *ip = *ip + *dp;  // //pointer ip pokazuje na *ip + *dp=4 , i dobiva vrijednost 4
ip = (int *)dp;      //sta se desava ovdje?
cout << *ip;  //kako to da je rezultat 0
system ("pause");
return 0;
}
rezultat je 0
 
[ Mihajlo Cvetanović @ 02.12.2010. 16:57 ] @
Ovo ti je u suštini nedefinisano ponašanje. Da računar nije PC nego nekakva Motorola onda bi tu možda stajalo nešto drugo. Konkretno objašnjenje zašto je kod tebe nula je sledeće. Double 1.5 je u memoriji predstavljen sa 8 bajtova: 00 00 00 00 00 00 F8 3F. Prva četiri bajta su sve nule. Ako neki pointer na int pokazuje na te četiri nule onda će se ta "kućica" interpretirati kao nula. Ako bi recimo napisao double d = 7.2911289729122037e-304; onda bi se ispisivalo -1 jer je ovaj double u memoriji predstavljen sa FF FF FF FF 00 00 00 01, a FF FF FF FF je -1 kad se interpretira kao int.