变量和常量是程序处理的两种基本数据对象
声明语句说明变量的名字及类型,也可以指定就是的初值
运算符指定将要进行的操作,表达式则把变量与常量组合起来生成新的值
所有整形都包括signed和unsigned两种形式
2.1变量名
变量名是由字母和数字组成,但其第一个字符必须为字母。
下划线"_"也被看作是字母,通常用于命名较长的变量名
由于库例程的名字通常以下划线开头,因此变量名不要以下划线开头
变量名使用小写字母,常量名全部使用大写字母
2.2 数据类型及长度
//C语言只提供下列几种基本数据类型
char 字符型,占用一个字节,可以存放本地字符集中的一个字符
int 整形,通常反映了机器中整数的最自然长度
float 单精度浮点数
double 双精度浮点数
此外,还可以在这些基本数据类型的前面加上一些限定符
short与long两个限定符用于限定整形:
short int sh;
long int counter;
关键字int可以省略。
short与long的引入可以为我们提供满足实际需要的不同长度的整形数
signed与unsigned可用于限定char类型或任何整形
2.3常量
类似于1234的整数常量属于int类型
long类型的常量以字母l或L结束,如123456L
如果一个整数太大以至于无法用int表示时,也将被当作long处理
无符号常量以字母u或U结尾。
后缀ul或UL表明是unsigned long类型
一个字符常量是一个整数,书写时将一个字符括在单引号中
\a 响铃符
\b 回退符
\f 换页符
\n 换行符
\r 回车符
\t 横向制表符
\v 纵向制表符
字符常量'\0'表示值为0的字符,也就是空字符(null)
我们通常以'\0'的形式代替0
常量表达式是仅仅只包含常量的表达式。这种表达式在编译时求值,而不在运行时求值
字符串常量也叫字符串字面值,是用双引号括起来的0个或多个字符组成的字符序列
从技术的角度看,字符串常量就是字符数组
字符串的内部表示使用一人空字符'\0'作为串的结尾
2.4声明
所有变量都必须先声明后使用,尽管某些变量可以通过上下文隐式的声明
声明变量的同时可以进行初始化
如果变量不是自动变量,则只能进行一次初始化操作,从概念上讲,应该是在程序开始执行之前进行,并且初始化的表达式必须为常量表达式
每次进入函数或程序块时,显式初始化的自动变量都将被初始化一次。
任何变量的声明都可以使用const限定符限定
const限定变量的值不能被修改,对数组而言,const限定数组所有元素的值都不能被修改
2.5算术运算符
二元算术符包括: + - * / % .
取模运算符不能应用于float或double类型。
2.6关系运算符与逻辑运算符
关系运算符包括:
> >= < <= 它们具有相同的优先级
== != 优先级更低点
逻辑运算符&&与||有一些较为特殊的属性。
由&&与||连接的表达式按从左到右的顺序进行求值 ,并且,在知道结果为真或假后立即停止运算
2.7类型转换
自动转换是指把"比较窄的"操作数转换为"比较宽的"操作数。并且不丢失信息的转换。
将字符类型转换为整形时,需要注意一点
C语言没有指定char类型的变量是无符号还是带符号变量
当把一个char类型的值转换为int类型时,其结果有没有可能 为负数?对不同的机器,结果不同
2.8自增与自减
C语言提供了两个用于变量递增与递减的运算符。
自增++使操作数递增1
自减--使操作数递减1
它们既可以用作前缀运算符,也可以用途后缀运算符
2.9按位运算符
C语言提供了6个位操作运算符。这些运算符只能用于整形操作数。
& 按位与
| 按位或
^ 按位异或
<< 左移
>> 右移
~ 按位求反
按位与运算符&经常用于屏蔽某些二进制位
按位或运算符|常用于将某些二进制位置为1
按位异或运算符^当两个操作数的对应位不相同时将该位设置为1,否则设置为0
移位运算符<<与>>分别用于将运算的左操作数左移与右移
移动的位数则由右操作数指定。
x<<2 表示将x左移2位,右边空出的2位用0填补
在对unsigned类型的无符号值进行右移时,左边空出的部分将用0填补
当对signed类型的带符号值进行右移时,某些机器将对左边空出的部分用符号位填补,而另一些机器则用0填补
一元运算符~用于求整数的二进制反码,即分别将操作数各二进制0变1,1变0