其他分享
首页 > 其他分享> > 表达式

表达式

作者:互联网

算术运算符

除%运算符外,+-*/允许操作数为整数或浮点数。int型和float型放在一起,运算结果是float型的。

有限性和结合性

算术运算符优先级

最高优先级:+ - (一元运算符,判断正负)

				*/ %

最低优先级:+ - (二元运算符)

举例:

i + j * k 等价于 i + (j * k)

-i * -j 等价于 (-i) * (-j)

+i + j / k 等价于 (+i) + (j / k)

结合性

运算符从左向右结合成为左结合

推荐加括号,省事

赋值运算符

简单赋值

int i;
float f;
i = 72.99f;// i = 72
f = 136;   // f = 136.000000

v = e,如果v和e的类型不同,会把e的值转换为v类型(变化右边)

i = 1求值的结果为1

= 右结合

多个赋值号可以串联在一起

i = j = k = 1

i = (j = (k = 1))

左值

赋值运算符要求左操作数必须为左值

左值表示对象,目前变量是唯一左值

复合赋值

右结合

i += j += k

i += (j += k)

自增运算符和自减运算符

后缀++--优先级高于正负号,左结合

前缀++--优先级等于正负号,右结合

i++不是立即加1,++i是立即加1

表达式语句

i++;
i = 1;
i * j - 1;
i + j;
// 什么都不做的表达式语句

Q&A

想把%用于浮点数

double fmod(double x, double y);

fmod函数返回第一个参数除以第二个函数所得的余数

例:fmod(5.5, 2.2) --> 1.1

如果v有副作用,则v+= e 不等价于 v = v + e

a[i++] += 2

a[i++] = a[i++] + 2

第二种是未定义的行为

自增和自减运算符也可用于浮点数,但是不常用

i = 1;

把1赋给i,整个表达式的值是1,这个值被丢弃掉了,但是i被改变了

标签:++,左值,运算符,结合,表达式,赋值
来源: https://www.cnblogs.com/bboy-kartone/p/15863816.html