前言
运算符是用来处理数据的。用运算符将变量和常量连接起来的符合C语言语法规则的式子称为表达式。单个常量、变量或函数是简单表达式。
根据运算符所带的操作数的数量进行划分,C语言的运算符有三种类别:
单目运算符:只带一个操作数的运算符。如: 运算符。
双目运算符:带两个操作数的运算符。如: 、-、*、/、%运算符。
三目运算符:带三个操作数的运算符。如:?:运算符。
赋值运算符、赋值表达式
1.赋值运算符
符号: =
功能:将右边表达式的值赋给左边的变量。此处左右不可调换。
双目运算符:两边都有要操作数。
例如:
代码语言:javascript复制int a,b,c;
a=1314;//a=1314
b=a;//b=1314
c=a b;//c=2628
2.赋值表达式
直接看例子:
代码语言:javascript复制a=520
注意:表达式都是有值的,赋值表达式的值就是被赋值变量的值。上例a=520这个赋值表达式的值就是a的值520.
3.赋值语句
C语言规定,任何表达式在其末尾加上分号就成为语句。
所以赋值表达式加上分号就是赋值语句。
又看例子:
代码语言:javascript复制a=365;
4.用法
连续赋值:右结合性,即从右向左运算。
看例子:
代码语言:javascript复制a=b=c=d=666;
强制类型转换符
1.自动转换
当 = 两边数据类型不一样时,C语言会把 = 右边表达式值的数据类型变成 = 左边变量的数据类型。
看例子:
代码语言:javascript复制int a=3.65;//a=3
2.强制转换
想改就改:
代码语言:javascript复制float a=1.79,b=2.1;
那么(int)a的值就是1,对,是向下取整,(int)(a b)则是把a b的结果转成int型,其值为3。
算术运算符、算术表达式
1.算术运算符
符号: - * / %
功能:相信大家加( )、减(-)、乘(*)、除(/)都能看懂,取余(%)是什么?
按我的习惯,先看例子体会一下:
代码语言:javascript复制int a=10%3;//a=1
int b=9%3;//b=0
在后续的学习中取余是经常要用到的,还有个东西叫取模,这两个是一样的意思,就是两数相除后的余数。取余非常好用,是个技巧活。
注意:C语言规定,两个整数相除的商还是整数,向下取整。
例如:5/2结果是2,要想得到2.5,应该写成5.0/2或5/2.0.
注意:% 只能用于整数运算。
2.算术表达式
运算符都是算术运算符的表达式称为算术表达式。相信大家都能理解。
自增自减运算符
符号: - -
顾名思义,先看例子,自己体会一下:
代码语言:javascript复制int i=j=k=l=6;
i ;//i=7
j--;//j=5
k;//k=7
--l;//l=5
好了,相信大家心中应该有疑惑了。下面解释:
前置运算: i、--i:先增减后运算。
后置运算:i 、i--:先运算后增减。
看例子:
代码语言:javascript复制int i=j=k=l=6,look;
look=i ;//look=6,i=7
look=j--;//look=6,j=5
look= k;//look=7,k=7
look=--l;//look=5,l=5
注意: 和 -- 运算符只能用于变量,不能用于常量和表达式。
两个 和两个-之间是没有空格的。
自增自减常用于循环语句。
不能连续对一个变量使用,如 i 是非法的。
sizeof运算符
符号:sizeof
功能:获取变量和数据类型所占的内存(字节数)。
注意:sizeof中size和of之间是没有空格的。
复合赋值运算符
符号: =、-=、*=、/=、%=、&=、|=、^=、<<=、>>=
功能:看下面的例子:
a =1等价于a=a 1
a*=2等价于a=a*2