www.pudn.com > 文件恢复及修补 C 语言源程序.zip > TYPECONV.C


 
/* 
** Demonstration of Type Conversion 
** across assignments. 
*/ 
main() 
        { 
        char c1,c2,c3; 
        int i1,i2,i3; 
        float f1,f2,f3; 
 
        c1 = 'x';       /* no conversion */ 
        c2 = 1000;      /* int constant demoted to char */ 
        c3 = 6.02e23;   /* float constant demoted to char */ 
        printf("%c  %c  %c\n",c1,c2,c3); 
 
/* Note that the character value is printed as is; the integer 
** with a value of 1000 is converted to its binary equivalent 
** of 1111101000 and truncated to the first 8 data bits which 
** gives 11101000 or decimal 232 or the Greek symbol "phi" 
** when the ASCII symbol is printed; and the conversion from 
** float to char is meaningless and does not occur.  */ 
 
        i1 = 'x';       /* char constant promoted to int */ 
        i2 = 1000;      /* no conversion */ 
        i3 = 6.02e23;   /* float constant demoted to int */ 
        printf("%d  %d  %d\n",i1,i2,i3); 
 
/* Note that ASCII 'x' has an integer value of 120, and the 
** character constant 'x' is promoted when we assign it to an 
** integer.  The floating point constant is demoted to the 
** largest integer 32767 that is possible in the Microsoft 
** C compiler and that number is returned as an integer. */ 
 
        f1 = 'x';       /* x char constant promoted to float */ 
        f2 = 1000;      /* int constant promoted to float */ 
        f3 = 6.02e23;   /* no conversion */ 
        printf("%f %f %f\n",f1,f2,f3); 
 
/* There are no demoted values, everything is represented as 
** its double precision floating point equivalent!   */ 
 
        }