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 是“浮点数”的意思,我们暂时可以认为浮点数就是小数,不必深究,不影响我们的学习。
输出浮点数用%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 类型的字符用单引号' '来包围,而字符串用双引号" "包围,大家不要混淆,否则编译会出错。
整数、浮点数、字符都是C语言中会使用到的数据,它们有一个专业的称呼,叫做数据类型(Data Type)。例如:
我们就可以说 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编码》一文,并猛击这里查看整数与字符的完整对应关系。