更多类型的数据——小数和字符
int 可以用来表示整数,但是对小数却无能为力。请看下面的代码:
a=1234
请按任意键继续. . .
看,小数点后面的数字被丢弃了。
输出浮点数用
a=123.888000
b=0.302000
c=98.000000
d=1.230024
e=123.000000
%f 默认保留六位小数,不足六位以 0 补齐,超过六位按四舍五入截断。也可以将整数赋值给 float 类型变量。
但是为了使用方便,我们可以用 char 来专门表示一个字符,例如:
整型、浮点型、字符型是C语言中的基本数据类型,必须要掌握,后续我们还会介绍更多数据类型,甚至可以自己定义一种新的类型。
a1=E, a2=69, b=F, c=71, d=H
可以看出,ASCII 码将字符和整数联系起来了,你可以给 char 变量一个整数,也可以给 int 变量一个字符,它们可以相互转换。
#include <stdio.h> #include <stdlib.h> int main() { int a=1234.888; printf("a=%d\n", a); system("pause"); return 0; }输出结果:
a=1234
请按任意键继续. . .
看,小数点后面的数字被丢弃了。
小数
在C语言中,我们使用 float 来表示小数,例如:float a=123.888; float b=0.302; float c=98.0;float 是“浮点数”的意思,我们暂时可以认为浮点数就是小数,不必深究,不影响我们的学习。
输出浮点数用
%f
,请看下面的例子:
#include <stdio.h> #include <stdlib.h> int main() { float a=123.888; float b=0.302; float c=98.0; float d=1.23002398; float e=123; // 整数 printf("a=%f \nb=%f \nc=%f \nd=%f \ne=%f\n", a, b, c, d, e); system("pause"); return 0; }输出结果:
a=123.888000
b=0.302000
c=98.000000
d=1.230024
e=123.000000
%f 默认保留六位小数,不足六位以 0 补齐,超过六位按四舍五入截断。也可以将整数赋值给 float 类型变量。
字符
我们前面提到过字符串,它是多个字符的集合,例如 "abc123";当然也可以只包含一个字符,例如 "a"、"1"。但是为了使用方便,我们可以用 char 来专门表示一个字符,例如:
char a='1'; char b='$'; char c='X'; char d=' '; // 空格也是一个字符char 类型的字符用单引号
' '
来包围,而字符串用双引号" "
包围,大家不要混淆,否则编译会出错。
数据类型
整数、浮点数、字符都是C语言中会使用到的数据,它们有一个专业的称呼,叫做数据类型(Data Type)。例如:int a=1; float b=10.09; char c='@';我们就可以说 a、b、c 的数据类型不同,a 是整型变量,b 是浮点型变量,c 是字符型变量。
整型、浮点型、字符型是C语言中的基本数据类型,必须要掌握,后续我们还会介绍更多数据类型,甚至可以自己定义一种新的类型。
注意:字符串比较特殊,C语言中没有这个数据类型,不能使用string a="abc123";
这种方式来定义字符串,后面我们会讲解为什么。
字符与整数
先看下面一段代码:#include <stdio.h> #include <stdlib.h> int main() { char a=69; char b=0x46; // 十六进制数以 0x 或 0X开头 char c='G'; int d=72; printf("a1=%c, a2=%d, b=%c, c=%d, d=%c\n", a, a, b, c, d); system("pause"); return 0; }输出结果:
a1=E, a2=69, b=F, c=71, d=H
代码第6行中,//
及其后面的内容为注释(Comments)。注释用来对程序进行说明,编译器会忽略它,不去执行,我们将在《几个重要的C语言概念》一节详细讲解。
在ASCII码表中,E、F、G、H 的值分别是 69、0x46 (十进制为 70)、71、72。给 char 变量一个整数,然后以 %c 输出,它会根据 ASCII 码表转换成对应的字符,如果以 %d 输出,那么还是整数。同样,一个 char 变量以 %d 输出,会转换成对应的 ASCII 码值。反过来,int 变量以 %c 输出,会转换成对应的字符。可以看出,ASCII 码将字符和整数联系起来了,你可以给 char 变量一个整数,也可以给 int 变量一个字符,它们可以相互转换。
不明白的读者请重温《ASCII编码与Unicode编码》一文,并猛击这里查看整数与字符的完整对应关系。