0%

表达式

表达式,运算符的关系,以及i++i-- 的理解。

表达式:

一个表达式是一系列运算符和算子的组合,用来计算一个值

  • 运算符是指进行运算的动作,比如加法运算符“+” ,减法运算符“-” 。
  • 算子是指参与运算的值,这个值可能是常数,也可能是变量,还可能是一个方法的返回值。

运算符:

image-20200621184041731

运算符优先级:

2

赋值运算符:

  • 赋值也是运算,也有结果
  • a=6的结果是a被赋予的值,也就是6
  • a=b=6 a=(b=6)

复合赋值:

image-20200621185118718

递增递减运算符:

  • “++”和“–”是两个和特殊的运算符, 他们是单目运算符,这个算子还必须是变量。
  • 这两个运算符分别叫做递增和递减运算符,他们的作用就是给这个变量+1或者-1。
  • count++ ;
  • count + = 1;
  • count = count + 1;

前缀后缀:

  • ++和– 可以放在变量的前面,叫做前缀形式,也可以放在变量的后面,叫做后缀形式。
  • a++的值是a加1以前的值,而++a的值是加了1以后的值,无论哪个,a自己的值都加了1了。5

++–:

可以单独使用,但是不要组合进表达式

个人理解:

1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main(){
int i=14;

printf("i++=%d\n",i=i++);
printf("++i=%d",i=++i);

return 0;
}

最后的运行结果是:

i++ = 14

++i = 15

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main(){
int a=14;

int t1 = a++;

int t2 = ++a;

printf("i++=%d\n",t1);
printf("++i=%d",t2);

return 0;
}

i++ = 14;

++i = 16;

这两个式子的结果不同的原因是:

  1. 对于普通独立的语句,i++和++i是一样的,如:

​ i++; 等效于i=i+1;

​ ++i; 等效于i=i+1;

  1. 用于赋值语句,i++先赋值后加1,++i先加1后赋值,如:

    i=1; y=i++; 等效于:i=1; y=i; i=i+1; 则执行完后 y=1; i=2;

    i=1; y=++i; 等效于:i=1; i=i+1; y=i; 则执行完后 y=2; i=2;

第一个式子中,是直接求出++i 所以是++i=14 + 1

第二个式子中,是提前经过定义变量,所以算t2的时候 i++=15后,又进行++i=15+1 =16

所以 t2=16