类型、运算符与表达式

变量名

变量的取名规则:

  1. 由字母和数字组成。

  2. 第一个字符必须为字母。

  3. _被看作是字母

  4. 区分大小写

变量的取名建议:

  1. 变量名使用小写字母,常量名使用大写字母。

  2. 局部变量使用较短的名称,外部变量使用较长的名称。

数据类型

基本数据类型

类型 中文名 说明
char 字符型 占用一个字节,可存放本地字符集中的一个字符
int 整型 反映所用机器中整数的最自然长度
float 单精度浮点型
double 双精度浮点型

类型限定符

short、long用于限定整型。

  • int反映所用机器中整数的最自然长度,可为16或32位。

  • short int可简写为short,通常为16位。

  • long int可简写为long,通常为32位,且至少为32位。

  • short的长度不可长于int,int的长度不可长于long。

signed、unsigned用于限定char或整型。

  • unsigned表示无符号,即正数或0。

  • signed表示有符号,即负数、0或正数。

不带限定符的char是否带符号取决于具体机器,但可打印字符一定是正数。因此要在char类型变量中存储非字符数据,最好指定signed或unsigned

long可用于doublelong double表示高精度的浮点数。

与整型一样,浮点型的长度也取决于具体的机器,float、double与long double可表示相同的长度。

常量

整型常量

默认为int类型,若整数太大以至于无法以int类型表示时,会被当作long类型处理。

若以l或L结尾则为long类型。

无符号要以u或U结尾。

整型数除了用十进制表示外,还可用八进制或十六进制表示。前缀为0表示八进制,0x或0X表示十六进制

浮点数常量

浮点数常量包含小数点或指数。

默认为double常量。

后缀f或F表示float类型。

后缀l或L表示long double类型。

字符常量

字符括在单引号中,如'x'。

字符在机器字符集中的数值就是字符常量的整型值,如**'0'的值为48,而不是数值0**。

转义字符看起来像两个字符,但只表示一个字符。

字符常量**'\0'表示值为0的字符,即空字符**。

字符串常量

双引号括起来的0或多个字符组成的字符序列。如"x","I am daking!"。

双引号不是字符串的一部分,只用于限定字符串。可用转义字符"来表示字符串中的双引号;

枚举常量

定义枚举的格式为:

enum 名称 {
	枚举名1 =1, // char常量或整型常量
	枚举名2 =2
};
1
2
3
4

在无显式说明的情况下,enum类型中的第一个枚举名的值为0,第二个为1,以此类推。若只指定了部分枚举名的值,那么未指定值的枚举名的值将依着前面最后一个指定值向后递增。

enum boolean { NO, YES }; // NO为0,YES为1。
	
enum months { JAN = 1, FEB, MAR, APR, MAY, JUN, 
JUL, AUG, SEP, OCT, NOV, DEC }; // FEB为2,MAR为3,依次类推。
1
2
3
4

声明

所有变量都必须先声明后使用,其声明格式为:

数据类型 变量名列表; // 如int x; int x,y,z;
1

可在声明的同时对变量进行初始化。如int x = 1;

const限定符声明的变量,表示此变量值不能被修改。对于数组,其所有元素的值都不能被修改。

算术运算符

算术运算符有:+ - * / %

整数除法会截断结果中的小数部分。

%不能应用于float或double等浮点型。

* / %的优先级高于+ -,都是从左到右的结合律。

关系运算符

关系运算符有:> < <= >= == !=

> < >= <=的优先级高于== !=

逻辑运算符

&&从左到右的顺序进行求值,若结果为假时停止。

||从左到右的顺序进行求值,若结果为真时停止。

&&的优先级高于||,但两者都比关系运算符的优先级要低。

类型转换

强制类型转换的格式如下:

(类型名)表达式 // 如:(int)1.0f
1

自增与自减

++ --,既可用作前缀运算符,也可用作后缀运算符,与Java一样。

按位运算

运算符 中文名 作用
& 按位与 常用于屏蔽某些二进制位。
| 按位或 常用于将某些二进制位置为1。
^ 按位异或
<< 左移
>> 右移
~ 按位求反 将操作数各二进制位上的1变为0,0变为1。

赋值运算

expr1 op= expr2,op可选有+ - * / % & | ^ << >>

条件表达式

(condition)? expr1 : expr2;

运算符优先级和结合性

运算符 结合性
() [] -> . 从左到右
! ~ ++ -- + - *指针 &对象地址 (type) sizeof 从右到左
* / % 从左到右
+ - 从左到右
<< >> 从左到右
< <= > >= 从左到右
== != 从左到右
& 从左到右
^ 从左到右
| 从左到右
&& 从左到右
|| 从左到右
?: 从右到左
= += -= *= /= %= &= 从右到左
^= |= <<= >>= 从左到右