C语言入门进阶——更多数据类型

-回复 -浏览
楼主 2018-11-07 19:28:52
举报 只看此人 收藏本贴 楼主

在《C语言快速入门》系列的学习中,我们一直在使用char、int、float三种基础数据类型,这样做的目的是让我们的学习负担最小化,而不是一开始就纠缠于理解与记忆各种细节当中。如果你坚持按教程学习到现在,对于编程也肯定有了自己的感触。对于作者我而言,在你所掌握的基础知识之上,再加入一些细节,会达到事倍功半的效果。因此,我们再次从数据类型说起。

类型修饰

在文件分割程序里,我们第一次引入了long数据类型。从字面而言,它代表一种长整型类型,与之相对,也有短整型类型(short)。整型数据可以有正负之分,这被称为有符号数(signed)与无符号数(unsigned)。这些长短、有无符号称之为类型指示符。

定义整型变量时,从长短而言,类型关键字int可以省略;从符号而言,有符号指示符关键字可以省略;对于无符号而言,建议两者都不要省略。

signed与unsigned修饰符,可用于限定char类型或任何整型。被signed限定的变量表示可以存储负数,而被unsigned限定的变量只能存储0或正整数。

  1. // 从长短而言,关键字int可以省略。

  2. long int a1;

  3. long a2;


  4. short int b1;

  5. short b2;


  6. // 从符号而言,有符号指示符关键字可以省略。

  7. char c1;

  8. signed char c2;


  9. // 对于无符号而言,建议两者都不要省略。

  10. int d1;

  11. unsigned d2;            // 等同于d3,但不建议省略int关键字。

  12. unsigned int d3;        // 等同于d2

  13. unsigned long d4;       // 用long修饰,等同于d5

  14. unsigned long int d5;   // 符号修饰符们于长短修饰之前

长意味着可以存储更大的数据,短意味着可以节省内存。short类型通常为16位,long类型通常为32位,int类型具体取决于编译器实现,通常是32位。有无符号则代表着可定义变量的合理性。

如,定义一个以字节为单位表示文件大小的变量,当文件比较大时,这需要选择一个较长的数据类型,文件大小通常不会有负数,使用无符号修饰会更恰当。另一个浅显易懂的例子便是年龄变量,它不能为负,因此使用unsigned修饰对应的变量更合理。

浮点类型(float)用于表示有小数表达的数值,属于单精度。与之相对,双精度浮点数(double)可以表示更大的值,更多的小数位数。另外还存在long double类型的,真的很少使用。

格式控制符

引入了类型修饰符之后,格式控制符也有相应变化。

  • 有符号的整型数可以用 %d 输出;长类型用 %ld 输出。

  • 无符号的整型数可以用 %u 输出;长类型用 %lu 输出。

  • 单精度浮点数则可以用 %f 输出;双精度用 %lf 输出。

更多的输出控制,在需要的时候搜索阅读即可。


我要推荐
转发到

友情链接