2和12是怎么来的?2*2不应该得4么

img


2和12是怎么来的?凑字数什么时间把我急死水晶球男护手霜你说你是不是不三不四哦可

i++先使用再加一,第一次(i++)*(i++)就是1*2,这个2是前边那个i++后的结果,所以第一次循环后结果为2

第一个i++之后i重新赋值给第二个i++
所以就是12 34

答案不对吧
(i++)*(i++),要先算乘法,后++,所以是1*1,3*3,没有2什么事
改成++i也不对,++i是先算加法,那就是3*3和5*5了
这题肯定出错了

这个问题好尴尬 我在vs2019上测试时结果时1和9 在linux用gcc确实时2和12

不过按照正确的逻辑,个人也觉得应该时2和12,主要考察的是i++的逻辑,先使用再对i进行+1操作

img


(i++)*(i++) 首先第一个括号里先使用i的值是1,用完后i++变成2,然后第二个括号先使用i的值2,用完i的值变成了3. 所以第一次输出是1*2为2
这时,i的值是3,符合while循环,再来一次。
(i++)*(i++) 首先第一个括号里先使用i的值是3,用完后i++变成4,然后第二个括号先使用i的值4,用完i的值变成了5.所以第一次输出是3*4为12