一、基本数据类型
1. 基本数据类型的分类:
C语言中的三种基本数据类型是:整型、实型、字符型。每种类型又可以分为常量和变量。
整型常量:
(1) 十进制的整型常量:由数字0~9组成。如:0、10、365、-12等。
(2) 八进制的整型常量:以0开头,由数字0~7组成。如:0、010、0365、-012、011等。
(3) 十六进制的整型常量:以0x或0X开头,由数字0~9、a~z或A~Z组成。如:0x11、0Xffff、0xa5、-0XAC等。
注:C语言系统默认为基本整型常量。(关于“基本整型”,请参考下面的内容)
整型变量:
(1) 根据整数的最高位是否用作符号位,分为有符号(signed)整型和无符号(unsigned)整型。
(2) 根据整数在计算机内存中所占用的空间大小,分为短整型(short int或short)、基本整型(int)和长整型(long int或long)。
short x = 10; 等价于 signed short x = 10; 同时等价于 signed short int x = 10;
int age = 20; 等价于 signed int age = 20;
long z = 10000L; (加L后说明10000是一个长整型常量,而不是一个基本整型常量)
注:
(1) C语言系统默认为有符号整数。
(2) unsigned和signed不能同时出现。
(3) short和long不能同时出现。
实型常量:
在C语言中,实型常量的两种表现形式:小数形式和指数形式。或者叫做小数点式和字母E(或e)式。
(1) 小数点式:
1. 有且仅有一个小数点
2. 小数点的左边和右边可以有一边没有数据,但不能同时没有数据
举例:3.14、0.1、10.、0.0、.0、-10.08
(2) 字母E(或e)式:
1. 有且仅有一个字母E(或e)
2. 两边都必须有数据
3. 左边可以是整数,也可以是小数
4. 右边只能是整数
举例:1e5、1.2E+4、3.0e-2、0e0、1.e0、.0e0
实型变量:
分为单精度和双精度两种,单精度用float表示,双精度用double表示。
举例:
float x = 1., y = .0, z = 1.2E+4;
double salary, sum;
字符型常量:
字符型常量的两种表现形式:
(1) 由一对单引号括起来的单个字符:
举例:'A'、'#'、'x'、'$'
(2) 由一对单引号括起来的,里面是由反斜杠“\”引起的若干字符:
1. 一般转义字符,如:'\t'、'\"'、'\\'、'\t'、'\n''、'\''
2. “\”与其后的1~3位八进制数组成的八进制转义字符,如:'\123'、'\0'、'\61'、'\101'
3. “\x”与其后的1~2位十六进制数组成的十六进制转义字符,如:'\x41'、'\x61'、'\x7F'。注意:不能是大写的“\X”。
字符型变量:
注:字符变量中存放的实际上是该字符的ASCII码,因为字符型数据都被处理成整型数据。
举例:
(1) char a = 'A'; 与 char a = 65; 是等价的。因为字符'A'在计算机中的形式是整型65。
(2)
void main( void )
{
char ch = ' a ' ;
int x = 0x6463 ;
ch = ' a ' + 1 ;
printf( " %d \n " , ch); // 98
printf( " %c \n " , ch); // b
printf( " %c \n " , x); // c
printf( " %d \n " , x); // 25699
x = x >> 8 ;
printf( " %c \n " , x); // d
printf( " %d \n " , x); // 100
}
2. 举例与注意事项:
(1) unsigned:为无符号类型,只能表示大于或等于0的数。
signed:为带符号类型,可以表示正数、负数和0。
(2) 32位机上,int与long的字长相同,均为4字节。
(3) 以下程序的输出结果是多少?
unsigned int y = 100000 ;
printf( " hex: %x %X \ndec: %d %d \n " , x, y, x, y);
答案:34464。
注解:编译器对二进制表示截取低16位,相当于对65536求余(%),得34464。
(4) 解释以下字面值常量:
'a':char型字面值 L'a':wchar_t型字面值
"a":字符串字面值 L"a":宽字符串字面值
10:int型字面值 10L:long型字面值
10u:unsigned型字面值 10uL:unsigned long型字面值
012:八进制表示的int型字面值 0xC:十六进制表示的int型字面值
3.14:为double型字面值 3.14f:为float型字面值
3.14L:为long double型字面值
-10.:为double型字面值 -10e-2:为double型字面值
-10u:unsigned int型字面值 -10:int型字面值
非法常量:3.14UL、1024f
(5) 以下两条语句有错的是:
int month = 9, day = 7;
int month = 09, day = 07;
(6) 以下哪些是非法的八进制整数:
0 066 023 081 80 0x100 0Xff 0101 1010 0011B 0011
-80 -09 -080 -3.24 -3.1e1 -90. -0. -0.0 -.0 -23E0 -012348
(7) 以下哪些是非法的十六进制整数:
0x77 0XABC 0Xacd 0x001 oX34 oxfff 0XeffA 0101 101 0011B X011
-x80 -09 -0x80 -3.24 -3. -90. -0. -0.0 -.0 -23 -012349
(8) 以下哪些是合法常量:
1.234e04 1.234e0.4 1.234e+4 1.234e0 5E5.0 e-7 E-8 .4E0 1.8E
3.14E5. 3.E4. 0.E1 .0E0 '\0' '\010' '\88' '\101'
2L 1.2e-0 '\xxx' '\x01' '\xab' '\Xabc' '\x42' '\X42'
二、标识符
1. 标识符的规则和分类
(1) 标识符的命名规则:
1)只能由字母、数字和下划线组成
2)第一个字符不能是数字
3)区分大小写,如:int与Int是两个不同的标识符。
4)尽量做到见名知义,如:int age = 10;
(2) 分类:
1)关键字。如:int、float、double、auto等。
2)预定义标识符。包括函数名和预处理命令名。如:printf、scanf、main、sin、include、define等。
3)用户标识符。不能使用关键字,可以使用预定义标识符。如:int printf = 0; int weight = 68;等。
2. 举例
(1) 以下能用作用户标识符的是:
Main _0 _int sizeof _1234_ int_2_ 2_int_ _1_2
For 4d WORD Double _8_ scanf Void born365.com x-i-a-o
auto Int baidu long exe .doc Li_ming 6x printf 3.14
PI pi int _34bS type Float CHAR char _main If
txt REAL _001 sin turbo VC++ include scanf define
注:是否是关键字请参考关键字表
(2) 以下合法的是:
int double = 3.14159;
char _;
bool catch-22;
int 0;
float USS;
char 1_or_2 = '1';
float Float = 3.14f;
int car = 1024, auto = 2048;
int x = x;
std::cin >> int input_value;(C++内容)
double salary=wage=9999.99;