当前位置:
文档之家› C语言-基本数据类型、常量和变量
C语言-基本数据类型、常量和变量
(2)八进制整数 以数字0打头,后跟0~7组成的数字串。例如: 0123表示八进制常数123,相当于十进制数83。 八进制整数可以加上后缀u(U),l(L)或ul(UL)分别构成八进制 的无符号数、长整数或无符号长整数。例如: 012345u、02765543102l、0345675026ul等。 (3)十六进制整数 以数字0和小写字母x(或大写字母X)打头,后跟0~9及A~ F(或a~f)组成的数字字母串。其中,A~F(或a~f)分别表示 十进制的10~15。例如: 0x2f是一个十六进制,相当于十进制的47。 若在十六进制数后面加上后缀u(U)、l(L)或ul(UL), 则分别构成十六进制的无符号数、长整数或无符号长整数。如: 0x89ad476bu, 0x9043fecd2l, 0x98bfd5ca7ul
三个属性: ① 变量分为不同的数据类型,数据类型决定了该变量存储
的数据的含义。
② 变量分为不同的存储类型,存储类型决定了变量在计算 机中的存储位置及其寿命(生命期)。
③ 变量在程序中的定义位置决定了该变量的作用域,即起
作用的范围。
1. 变量的定义
C语言规定,变量必须先定义后使用,变量的数据类型与变 量名本身无关。 变量定义一是定义变量的数据类型,二是定义变量的名称, 三是说明变量的存储类型,其一般格式为: [存储类型] 数据类型 变量清单; char ch1; static int i, j, k; short int si; float f1, f2; double balance, profit, loss; 变量的数据类型可以是字符型、整型、浮点型、双精度型等。
signed int
signed long
unsigned int
unsigned long
VC++ 6.0数据类型和取值范围
类型 长度(字节) 取值范围
char
[signed] char unsigned char int [signed] int unsigned [int] short int
要占用一批连续的存储单元,其所占字节数为字符串长度加1。 ③ 字符型常量通常可存放在字符型变量中,而字符串常量则
必须存放在字符型数组中。
④ 字符型常量可以与整数混合运算,而字符串常量则不可以。
2.3 变量及其类型
变量是指那些在程序运行过程中其值可以改变的量。变量
代表着存储器中的一个存储单元。在 C 语言中,变量具有如下
2
4 4 4 4 8 8
0-65535
-2147483648~2147483647 -2147483648~2147483647 0~4294967295 -3.4×1038~3.4×1038 -1.7×10308~1.7×10308 -1.7×10308~1.7×10308
2.2 常量及其类型
常量是指在程序运行过程中,其值保持不变的量。常量 分为char、int、double和字符串型。其类型是由书写形式决 定的。
型通常代表单个数据。
(2)构造类型 由已知的基本类型通过一定的构造方 法构造出来的类型,包括数组、结构体、联合体、枚举类 型等。构造类型通常代表一批数据。 (3)指针类型 指针可以直接指向内存地址,访问效
率高,用于构造各种形式的动态或递归数据结构,如链表、
树等。
2.1 基本数据类型
1.基本数据类型及其关键字
【例】 #include <stdio.h> int a; // 全局变量 void main() { int b,c; // 函数级局部变量 a=1;b=2;c=3; a=a+1;b=b+1;c=c+b; // a=2 b=3 c=6 { int c; // 块级局部变量 c=b*3; // c=9 a=a+c; // a=11 printf("first:%d,%d,%d\n",a,b,c); // 11, 3, 9 } printf("second:%d,%d,%d\n",a,b,c); // 11, 3, 6 }
1
1 1 4 4 4 2
-128~127
-128~127 0~255 -2147483648~2147483647 -2147483648~2147483647 0~4294967295 -32768~32767
unsigned short [int]
long int [signed] long [int] unsigned long [int] float double long double
④ double型长度为8字节,存储方式与float基本相同,阶码
占11位,尾数占53位,15位有效数字精度,分辨率约为2.2×10-308。
3. 类型修饰符
(1)short和long可以提供不同的数据长度以满足实际使用的需要。
C规定:长度 short int ≤ int ≤ long int VC++ 6.0 VC++ 6.0 16bit 32bit 32bit 64bit 32 bit 64bit
1. 整型常数
在计算机中,整数是准确表示的。C语言可以识别十进制、 八 进制和十六进制的整数。 (1)十进制整数 十进制整数由正负号(+或-)后跟数字串组成,正号可以 省略不写,且开头的数字不能为0。如 1234,-23,+187,32767,5600,0 在整数后面加上后缀u或U则构成无符号整数,如 123u,5678U,70000u等。 在整数后面加上后缀l或L则构成长整数,如 -124783648l,1234567890L 在整数后面加上后缀ul或UL则构成无符号长整数,如 3456ul,1234567890ul
4. 字符串常量
字符串常量是用双引号括起来的0个或多个字符的序列。例如
"I am a student. " "x"
""
"0107328136"
// 空字符串
"I said,\"good morning!\"" // 含转义字符
(1)字符串常量的存储方式
字符串常量存储时,按字符串中字符从左到右的顺序依次占 用连续的存储单元,每个字符占1个字节,存放其对应的ASCII码。
C编译系统还会自动在每个字符串常量的未尾追加一个零字符
NULL('\0')作为字符串的结束标识。因此,一个含有n个字符 的字符串常量要占用n+1个字节的存储空间。
例如,字符串常量 "I am a student" 含有14个字符(包括3个空格字符),它将占用15个字节的存 储单元。
I
a
m
a
s
t
u
d
LL
BELL BS FF NL(LF) CR HT VT \ ’ ”
0
7 8 12 10 13 9 11 92 44 34
ASCII代码值为0
报警铃响 退格符(backspace) 换页符 换行符 回车符 水平制表符(Tab) 垂直制表符 反斜杠 单撇号(单引号) 双撇号(双引号)
【例】字符常量的表示方法
#include <stdio.h>
void main() { printf("%d\n", 'B'); // 十进制
printf("%c\n", 'B');
printf("%c\n",66); printf("%c\n",'B'+32);
// 字符
printf("%d,%c,%d, %c\n", '\n', '\0', '\0', '\x41'); }
3. 字符常量
字符常量是用单引号括住的单个字符。 (1)单引号表示法,用于可显示字符,直接用单引号(撇号) 将该字符括住,即表示字符常数。如 'A','a','5','$','?','+'等。 (2)转义字符表示法,用于不可显示字符,主要是那些控制字
符如换行符、回车符、换页符等,还有一些在C语言中有特殊含
2. 实数
C语言中,实数是近似表示的,且只能用十进制表示。 (1)定点格式,即由正负号、整数部分、十进制小数点和小数部 分组成。整数部分和小数部分都是由0~9组成的数字串。例如, 123.45,-256.701,.543,-25.,0.,.0,0.0等。(小数点必不可少) (2)指数格式,即在定点表示的基础上,后面再加上一个e或E后 跟一个1~3位整数组成。如 -1.234E18, 2.74e-02, 2.71828e0, .86e-3, 1e-2等。 书写指数格式的浮点数时,字母e或E前面必须有数字,可以没有 小数点,如.2e3,2.3e,2e3是正确的,而.e3,e-3等是错误的。同 时,e或E后面必须是正负整数,不能带小数点,如1.2e3.1、0.3e0.5等是错误的。 在计算机中,无论是定点表示还是浮点表示的实型常数都视为 double型的。如果有必要,可以用后缀f(F)来表示float型实数, 如2.6736F、12.56e-13f等。
义和用途的字符如单引号、双引号、反斜杠,只能用转义序列 表示。例如,‘\n’、‘\012’、‘\xa’均表示换行符,因为换行 符的ASCII代码八进制值12,十六进制值是a。
表2.3 常用的转义字符
转义字符 含义 十进制ASCII代码值 说明
\0
\a \b \f \n \r \t \v \\ \’ \”
C规定:长度 float ≤ double ≤ long double