C语言的数据类型
一、变量与常量
简单来说,在程序运行之前有些数据类型就已经被设置好,在程序运行过程中不会发生变化,这些称为常量(constant)。
在程序运行期间会被赋值或值发生改变的被称作变量(variable)。
二、数据类型关键字
最初K&R给出的关键字 | C90标准添加的关键字 | C99标准添加的关键字 |
---|---|---|
int | signed | _Bool |
long | _Complex | |
short | _Imaginary | |
unsigned | ||
char | ||
float | ||
double |
位、字节和字
位、字节和字是描述计算机数据单元或储存单元的术语。这里主要指储存单元。
- 位(bit):最小的储存单元,可以存储0和1。
- 字节(byte):常用的计算机储存单位,1字节为8位,可表示0~255的整数或一组字符。
- 字(word):计算机给定的自然储存单位。目前一个字长可达到64位。
1、整数
同数学概念相同,整数是没有小数的数。
2、浮点数
等同于数学中的实数,具有小数部分。
三、C语言基本数据类型
1、int类型
int类型是有符号整型,即int类型的值必须是整数,可以是正整数、负整数和零。
- 声明:
int a,b,c;
可以单独声明,也可以一次声明多个变量。
- 初始化变量:
初始化(initialize)变量就是为变量赋一个初始值。
int a = 23;
- int类型常量
C语言把大多数整型常量视为int类型。
- 打印int值
可以使用printf()函数打印int类型的值。
%d指明了在一行中打印整数的位置。%d 称为转换说明,它指定了printf()应使用什么格式来显示一个值。格式化字符串中的每个 %d 都与待打印变量列表中的 int 值 匹配。这个值可以是int类型变量、int类型的常量或其他任何值为int类型的表达式。
#include <stdio.h>
int main(void)
{
int a = 1;
printf("输出了a的值为:%d\n",a);
getchar();
return 0;
}
运行该程序会打印出
输出了a的值为:1
-
八进制和十六进制
以十进制显示数字,使用%d;
以八进制显示数字,使用%o;
以十六进制显示数字,使用%x;
如果想要显示各进制数的前缀0、0x和0X,
必须分别使用%#o,%#x,%#X。
2、其他整数类型
- short int(short)
有符号整型,占用的储存空间可能比 int 类型少,常用于较小数值的场合以节省空间。 - long int (long)
有符号整型,占用储存空间可能比 int 多,适用于数值较大的场合。使用 %ld 转换说明。分别使用 %lx、%lo 转换说明十六进制和八进制 long 类型整数。 - long long int(long long)
有符号整型,占用储存空间可能比 long 多,适用于更大数值的场合。该类型至少占64位。 - unsigned int(unsigned)
无符号整型,只用于非负场合。使用 %u 转换说明。
在C90标准中,添加了 unsigned long int 或 unsigned long 和 unsigned short
int 或 unsigned short 类型。C99 标准又添加了 unsigned long long int 或
unsigned long long 。
在任何有符号类型前面添加关键字 signed ,可强调使用有符号类型的意图。
其他整数类型的声明方式与 int 类型相同。
3、char类型
char类型用于储存字符,例如数字或标点符号。
- 声明和初始化char类型
char ch = 'A';
- 打印字符
printf()函数用 %c 指明待打印的字符。
4、_Bool类型
用于表示布尔值,即逻辑值 ture 和 false 。
5、可移植类型:studint.h & inttypes.h
6、float、double 和 long double
单精度浮点型 float 类型必须至少能表示6位有效数字。
双精度浮点型 double 类型必须至少能表示10位有效数字。
- 浮点型常量
有符号数字后紧跟 e 或 E,最后是一个有符号数表示10的指数。 - 打印浮点值
printf()函数用 %f 指明待打印的十进制 float 和 double 字符。
用 %e 打印指数计数法的浮点数。
十六进制浮点数用 %a 转换说明。
四、scanf()和sizeof函数
1、scanf()
scanf()函数提供用户输入。格式:
#include <stdio.h>
int main(void)
{
int a;
scanf("please input a number:%d\n",&a);
return 0;
}
2、sizeof()
return the size of the specified type in bytes.