不同编译器也不一样
同样代码在VS2010上输出为15,33,11,5
VS2010的结果比较容易理解,i++是先用i执行完表达式,然后再加1,所以p为三个5相加为15。然后i++三次,i变为8
然后执行三次++i,使得i变为11,然后三个11相加得到q值为33
===
你这个18和11还好理解,但31实在不好理解
连续加减的这种题,不同编译器会得到不同的值,所以还是不纠结的好,实际工作中也用不上,害人害己。
他们 两个都是 +1操作 但是他俩的返回值不一样
i=1
j=i++ j的值是 1
j=++i j的值是 2
多个++之间的和运算没有统一的定义,也就是说在不同编译环境下其结果有可能不同,可以看看这个朋友的文章
https://blog.csdn.net/a26013/article/details/121377828?ops_request_misc=&request_id=&biz_id=102&utm_term=++i&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-121377828.pc_edu_default&spm=1018.2226.3001.4449
++i性能优于i++,应为++i在用之前对i加1即可,而i++需要先吧原来的i+1存起来,然后用掉原来i以后用新的i(即原来的i+1)
加号在后表示先赋值,再自加。第一个式子,5+6+7等于18,i变为8,第二个式子,9+10+11等于30,不是31,i++,和++i都是自加,第一个是先把i得值赋值给等式前面,然后才自加,第二个是先自己增加再赋值给等式左边。
我和你输出一样我来解释一下我的理解
这个代码毫无意义,因为这是未定义行为,不同编译器结果不一样,研究出来也没啥用,因为实际上不可能出现这种的代码。C语言标准压根没规定在一个表达式中多次更改变量的值计算顺序。
++i是先加然后返回自身
i++是先返回自身在自增
别纠结这种题了,一点意思都没有。
求采纳
附解暑红包https://bbs.csdn.net/topics/607736237
http://t.csdn.cn/mO8Tn
你好看到你的问题,我想到了我以前做的博客,全部优先级的情况都考虑到了
单独一个程序段时无区别。其余情况下i++表示先使用i再加一,++i表示先加一再使用i