1、前++ 和 后++
如果单独使用,不管是前++还是后++,最重的结果都是给这个变量+1;
(1)前++:先给变量自身+1,再带着这个+1之后的值去参与运算;
(2)后++:先用原先的值去参与运算,运算过程结束后,再给变量自身+1;
注:!、~、++、--、-、(类型)、*、&、sizeof,这一级都是单目运算符号,这一级的结合方向是从右向左。
意思就是,当出现*P++时候,先运算P++,再运算*这一步骤
1 void main(){ 2 /* C语言成长之路24:加加与减减 3 * 4 */ 5 int a = 3; 6 int b = a++; 7 printf("b = %d",b); // 本次运算结束后,b就变成了4 8 9 int c = 3; 10 int d = ++c; // 先在给自身+1后,再赋值给d,所以d就等于4 11 printf("\nd = %d",d); 12 13 int e = 3; 14 printf("\ne = %d",++e); // 结果4,原因是再调用之前先增加了 15 16 int f = 3; 17 printf("\nf = %d",f++); // 结果3,原因是先运算完毕之后再++ 18 19 int g = 3; 20 int h = 5; 21 int i = (++g) * h; 22 printf("\ni = %d",i); // 结果20,g先给自身+1之后=4,4*5 = 20 23 24 int j = 3; 25 int k = 5; 26 int l = (j++) * k; 27 printf("\nl = %d",l); // 结果15,先直接是3*5后,运算出15之后,j才变成了4 28 29 //protect 定义一个变量x=10;y = x++ + ++x * 3 + --x + x-- 30 int x = 10; 31 int y = (x++) + (++x) *3 + (--x) + (x--); 32 printf("\nx + y = %d",y); 33 /* 由于++ -- 这一类运算优先级高于加减乘除,所以先统一运算加加和减减的 34 * 1--> x++ 此时x为10,但运算过后为11 35 * 2--> ++x 此时x为12(11+1) 36 * 3--> --x 此时x为11 (12-1) 37 * 4--> x-- 此时x为11,运算过后为10 38 * 5--> 10 + 12 * 3 + 11 + 11 = 68 39 */ 40 };
原文:https://www.cnblogs.com/akne/p/13344907.html