C语言 运算符与表达式

2023-07-28 20:29:45 浏览数 (1)

前言

运算符是用来处理数据的。用运算符将变量和常量连接起来的符合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

0 人点赞