自增自减详解

发布时间:2020-07-23 20:03:13 作者:buzhbuzh
来源:网络 阅读:768

在VC下的几个例子: 

int i=3;

int j=4,k;

k = ++i * j++;

//k = i*j++此时i值为4

//k = i * j;//此时j值为4;

//k = 16;

//j = 5;

printf("%d %d %d\n",i, j, k); 

输出结果为 4 5 16

解释:  ++i为滞前自增,先将i值加1在用其参加运算,故第一步i的值为4;

        j++为滞后自增,待表达式所有的运算符全部运行完在将j加1

        于是k=16;j=5;

 

i = 3;

j = (i++) + (i++) + (i++);

上述可等于下列语句:

j = i + i + i;

i++;

i++;

i++;

最后 i=6;j=9;

  

i = 3;

j = (++i) + (++i) + (++i);

过程: j = i + (++i) + (++i);此时i值为4

        j = i + i + (++i);此时i的值为5,此事从左开始的运算符分别为 + + (++)前两个的运算符优先级相同,所以先运算第一个(左边的)

        j = 10 + (++i);

        j =10 + 6 = 16;

结果:j = 16; i = 6;

 

 

i = 3;

j = (++i) + (++i) * (++i);

上述语句的运算过程可以等价如下:

j = i + (++i)*(++i);//此时i的值为4

j = i + i * (++i);//此时i的值为5

j = i + i * i;//此时i的值为6

j = 6 + 6 * 6 = 42;  

 

 

i = 3;

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

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

输出结果为:

3 9

i = 6

C语言中函数的参数从右到左依次被调用入栈,所以第一次输出的结果为 3 6

等到printf()函数调用完成后执行i++操作,连续执行三次,得到的结果为6



总结:

  1. 在一个表达式中,出现对同一变量的多次赋值运算,对于不同的c编译系统,将遵循不同的标准

  2. 由于上述的事实,所以编程者极力避免上述运算

  3. C语言系统,对于函数调用的多个参数,其处理顺序是:自右向左

           


推荐阅读:
  1. wsdl详解
  2. mysql 详解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

表达式 优先级

上一篇:IOS Copy什么时候用?

下一篇:关于Quartz定时器的配置

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》