2019-04-01 C扩展:基本数据类型

  1. 类型变种写法
    在C语言中,除了有无符号关键字unsigned,还对应有一个有符号关键字signed,只是通常省略不写。此外,除了char,其他整型类型后面可以加上关键字int表示整型,通常也是省略不写。下面是各种类型其他对应写法。
NO 类型 其他写法
1 char signed char
2 short signed short int、signed short、short int
3 int signed int
4 long signed long int、long int、signed long
5 long long signed long long int、signed long long、long long int

通常也使用unsigned表示unsigned int的简写。

  1. 数值常量表示
    如何表示天文数字?
直径 年龄
地球 6371千米 45.5亿年
太阳 1.392×106千米 45.7亿年
银河系 10万光年 80亿年
宇宙 1600亿光年 138.2亿年

注:1光年 = 9.46×1012千米
试一下

    int earth_diameter = 6371;
    int earth_age = 4550000000;
    int sun_diameter = 1392000;
    int sun_age = 4570000000;
    int light_year = 9460000000000;
    int galaxy_diameter = 100000*light_year ;
    int galaxy_age = 8000000000;
    int universe_diameter = 1600000000000*light_year;
    int universe_age = 138200000000;
    printf("earth_diameter = %d\n",earth_diameter);
    printf("earth_age  = %d\n",earth_age);
    printf("sun_diameter = %d\n",sun_diameter);
    printf("sun_age  = %d\n",sun_age );
    printf("galaxy_diameter = %d\n",galaxy_diameter);
    printf("galaxy_age = %d\n",galaxy_age);
    printf("universe_diameter = %d\n",universe_diameter);
    printf("universe_age = %d\n",universe_age);

没有后缀的整数常量默认为int,只能表示21亿左右的数值,如果超过就会警告,执行就会出错,因为int无法表示超出的数字。

整数常量后缀

No. 类型 后缀
1 L/l long
2 LL/ll long long
3 U/u unsigned
4 L/l与U/u组合 unsigned long
5 LL/ll与U/u组合 unsigned long long
      int earth_diameter = 6371;  
      long long earth_age = 4550000000LL;
      int sun_diameter = 1392000;
      long long sun_age = 4570000000LL;
      long long light_year = 9460000000000LL;
      long long galaxy_diameter = 100000*light_year ;
      long long galaxy_age = 8000000000LL;
      long long universe_diameter = 1600000000000LL*light_year;
      long long universe_age = 138200000000LL;
      printf("earth_diameter = %d\n",earth_diameter);  
      printf("earth_age  = %lld\n",earth_age);
      printf("sun_diameter = %d\n",sun_diameter);
      printf("sun_age  = %lld\n",sun_age );
      printf("galaxy_diameter = %lld\n",galaxy_diameter);
      printf("galaxy_age = %lld\n",galaxy_age);
      printf("universe_diameter = %lld\n",universe_diameter);
      printf("universe_age = %lld\n",universe_age);

浮点数常量后缀

No. 类型 后缀
1 F/f float
2 F/f long double

没有后缀的浮点数默认为double。

科学记数法
表示方式:尾数部分e指数部分或者尾数部分E指数部分
使用科学计数法表示数字更加简单。

      int earth_diameter = 6371;
      long long earth_age = 4.55e9;
      int sun_diameter = 1.392e6;
      long long sun_age = 4.57e9;  
      long long light_year = 9.46e12;
      long long galaxy_diameter = 1e5*light_year ;
      long long galaxy_age = 8e9;
      long long universe_diameter = 1.6e12*light_year;
      long long universe_age = 1.382e11;
      printf("earth_diameter = %d\n",earth_diameter);
      printf("earth_age  = %lld\n",earth_age);
      printf("sun_diameter = %d\n",sun_diameter);
      printf("sun_age  = %lld\n",sun_age );
      printf("galaxy_diameter = %lld\n",galaxy_diameter);
      printf("galaxy_age = %lld\n",galaxy_age);
      printf("universe_diameter = %lld\n",universe_diameter);
      printf("universe_age = %lld\n",universe_age);

注意:universe_diameter出现负值。表示long long也装不下这个数字(约为1026大于1012),可以使用double类型表示。

      double universe_diameter = 1.6e12*light_year;
      printf("universe_diameter = %f\n",universe_diameter);

输出数据不容易阅读,可以使用%e或%E以科学记数法输出浮点数(注意:%e或%E不能用来输出整数)。

      printf("universe_diameter = %e\n",universe_diameter);

科学计数法法除了可以表示极大数,也可以表示极小数,比如电子的直径10-15m.

      double electron_diameter = 10e-15;

作者:jdzhangxin
链接:https://www.jianshu.com/p/7889496fb8b3
侵删

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容