/***************************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Beispielprogramm p04020300.c */ /* aus "C fuer Java-Programmierer", Hanser-Verlag */ /* */ /* Demonstriert wird ein impliziter Downcast bei der Zuweisung */ /* von einer Variablen eines hoeherwertigen Typs an eine Vari- */ /* ble eines niederwertigen Typs - einschliesslich des Fehlers,*/ /* der dabei auftreten kann. */ /***************************************************************/ #include int main(void) { short st = 0; long lg = 1000; printf("Groesse der short-Variablen st: %d Bytes\n",sizeof(st)); printf("Groesse der long-Variablen lg: %d Bytes\n\n",sizeof(lg)); printf("Vor der Zuweisung \'st=lg\': st=%hd, lg=%ld\n",st,lg); st = lg; printf("Nach der Zuweisung \'st=lg\': st=%hd, lg=%ld\n\n",st,lg); lg = 65537; /* = 2 hoch 16 + 1 */ st = 0; printf("Vor der Zuweisung \'st=lg\': st=%hd, lg=%ld\n",st,lg); st = lg; /* Hier gehen die Werte in den vorderen 2 Bytes von lg verloren */ printf("Nach der Zuweisung \'st=lg\': st=%hd, lg=%ld\n",st,lg); return 0; }