产生“截断”和“错误解析”

  1. #include<stdio.h> 
  2.  
  3. int main(void){ 
  4.     short num = 336; 
  5.      
  6.     printf("%c\n",num);//short占2个字节,char占一个字节,将short截断为一个字节作为字符编码显示 
  7.      
  8.     float n1 = 3.0; 
  9.     long n2 = 200000000; 
  10.      
  11.     printf("%.1e",n1); //float占四字节,被转换为double占8字节 
  12.     printf("%.1e\n",n2); //long占四字节,转换为8字节后,产生垃圾数据 
  13.     printf("%ld %ld\n",n1,n2); //即使n2的类型是匹配的,也会出现错误,因为ld表示要打印一个四字节的long类型 
  14.                              //但是n1是8字节double,所以先打印了前4自己,又打印了后四字节   
  15.     printf("%ld",n2); //打印正确! 
  16.       
  17.     getchar(); 
  18.     return 0;