再学C语言9:数据类型(7)——总结

Source

一、sizeof()函数检测C环境中数据类型大小

代码:

#include <stdio.h>
int main(void)
{
    printf("Type int has a size of %u bytes.\n", sizeof(int));
    printf("Type char has a size of %u bytes.\n", sizeof(char));
    printf("Type long has a size of %u bytes.\n", sizeof(long));
    printf("Type double has a size of %u bytes.\n", sizeof(double));

    return 0;
}

运行结果:

二、数据类型的选取

开发程序时,应特别注意所需变量及其类型的选择

在使用变量的函数的开始处声明该变量,选择有意义的变量名,初始化变量时使用的常量应同变量类型匹配

当为某个数值类型的变量进行初始化时,如果常量使用了其他类型的值,C会自动对该值进行类型转换以便和变量类型匹配

很多组织或程序员自己都有系统化的变量命名规则,学习、借鉴这些规则,有利于培养自己严谨、自律的编程习惯

三、函数的参数

无论包含多少个字符和标点符号,一个字符串只是一个参数

C用逗号隔开函数调用中的多个参数

一些函数(如printf()、scanf()等)比较特殊,其参数数目可以不受限制

使用%d显示float值并不会把该float值转换为近似的int值,而是会显示垃圾值;类似地,使用%f显示int值也不会把该int值转换为浮点值’参数的数目不足和类型不匹配造成的后果因平台而异

四、刷新输出

printf()语句将输出传递给一个中介存储区域(缓冲区,buffer),缓冲区中的内容在不断地被传送给屏幕

标准C规定在以下情况下将缓冲区内容传送给屏幕:

1)缓冲区满的时候

2)遇到换行符的时候

3)需要输入的时候

将缓冲区内容传送给屏幕或文件的过程被称为刷新缓冲区

早期的C语言版本中,scanf()语句并不强迫刷新缓冲区,为防止此问题,可以用换行符\n刷新缓冲区:

printf("Please enter a float number: \n");
scanf("%f", &num);

这样不管输入语句是否触发缓冲区刷新,代码都会正常工作 

五、总结

1)C包含大量数值类型(两大类:整数类型和浮点数类型),为程序员提供方便

2)浮点数与整数有很大不同

3)C允许书写混合数据类型的表达式,会自动进行类型转换,实际的计算只采用一种类型

4)整数类型两个重要特征:类型大小;有符号或无符号

5)3中浮点类型:float、double、long double

6)整数可以表达为十进制、八进制或十六进制形式

7)前缀0表示八进制数;前缀0x或0X表示十六进制数

8)后缀l或L表示long类型值;后缀ll或LL表示long long类型值

9)字符常量表示为放在单引号中的一个字符

10)C的转义序列用于表示一个非打印字符

11)计算机中,浮点数可以书写为一般形式、指数形式