一、变量名
名字是由字母和数字组成的序列,第一个字符必须是字母,其中“_”被看做字母。
变量名使用小写字母,符号常量名全部使用大写字母,所有关键字中的字符都必须小写。
二、数据类型及长度
char 字符型,占用一个字节
int 整型,反映机器中整数的最自然的长度
float 单精度浮点型
double 双精度浮点型
short与int至少为16位,long至少为32位
三、常量
整型数,前缀为0的是八进制形式,前缀为0x的是十六进制形式
’\ooo‘表示任意的字节大小的位模式,ooo代表1-3个八进制数字,位模式还可以用’\xhh‘表示,hh为1到多个十六进制数字
字符串常量就是字符数组,以’\0‘结尾
枚举常量是另一种类型的常量,枚举是一个常量整型值的列表。如果只指定了部分枚举名的值,那么未指定值的枚举名的值将依着最后一个指定值向后递增。
四、声明
所有变量先声明后使用
默认情况下,外部变量与静态变量将被初始化为0,未经显式初始化的自动变量的值为未定义值(即无效值)
const限定符可以配合数组参数使用
五、算术运算符
算术运算符采用从左向右的结合规则
六、关系运算符与逻辑运算符
运算符&&的优先级高于||
if(!valid) 较之 if(valid==0)更直观一些
七、类型转换
不允许把float表达式作为下标
char类型的变量存储非字符数据,最好指定signed或unsigned限定符
表达式中float类型的操作数不会自动转换为double类型
无论是否进行符号扩展,字符型常量都将被转换为整型变量
即使调用函数的参数为char或float类型,我们也把函数参数声明为int或double
强制类型转换运算符与其他一元运算符具有相同的优先级
八、自增运算符与自减运算符
前缀与后缀的区别
s[i++]=c; //理解
九、按位运算符
& 按位与
| 按位或
^ 按位异或
<< 左移
>> 右移
- 按位求反
十、赋值运算符与表达式
int bitcount( unsigned x)//x声明为无符号类型,为的是右移时左边用0填补
{
int b;
for(b=0;x!=0;x>>=1)//右移一位
if(x&01)//判断最低位是否为1
b++;
return b;
}
十一、条件表达式
三元运算符 ? :
十二、运算符优先级与求值次序
根据优先级次序求值,避免歧义