自增自减问题
本帖最后由 mm1mm 于 2021-6-24 14:22 编辑int i;
i = 8;
printf("%d\n", ++i); 9
printf("%d\n", --i); 8
printf("%d\n", i++); 8
printf("%d\n", i--); 9
printf("%d\n", -i++); -8
printf("%d\n", -i--); -9
当i为负数的时候 +1也是加的负数嘛?
所以i=-8+-1=-9
求大神解说一下。
i++赋值后是8再自增1后就是9,printf先把9的值打印出来,i--再自减。
ifuchuan 发表于 2021-6-24 14:24
i++赋值后是8再自增1后就是9,printf先把9的值打印出来,i--再自减。
前面4个都看得懂 主要是后面这2个 -8到-9 i-- 是要执行完该条语句后 才会自减一 不是从8变成9 而是执行完这条语句后 才是8 也就是说 执行printf后才会自减1 你可以试试 -i++ 同理 这里“-”被当成负号了 是单目运算符 优先级比++高 拆开后可以这样看printf("%d",-(i=i+1))但是这个自曾也是需要 在执行完这条语句才会自增 也就是说 他现在还是 8 后面才变成9 后面同理 本帖最后由 牧民兰 于 2021-6-24 14:36 编辑
int i;
i = 8;
printf("%d\n", ++i); 9->i=i+1;printf("%d\n", i);
printf("%d\n", --i); 8 ->i=i-1;printf("%d\n", i);
printf("%d\n", i++); 8 -> printf("%d\n", i); i=i+1;
printf("%d\n", i--); 9 -> printf("%d\n", i); i=i-1;
printf("%d\n", -i++); -8 -> printf("%d\n", -i); i=i+1;
printf("%d\n", -i--); -9 -> printf("%d\n", -i); i=i-1;
本帖最后由 连帅帅 于 2021-6-24 15:02 编辑
首先,关于i++和++i的区别看你的意思应该是知道的;
其次,负号,只是代表当前值的正负性,计算的时候还是按不带负号的i++,或者i--来算,算完之后加上个负号,相当于乘以负一,这解释够直观吧{:10_258:} 真是应了上学时候老师说的那句答案就在问题里,
我给你标记一下你知道程序的执行顺序你一下就明白了:
int i;
i = 8;
printf("%d\n", ++i); 9
printf("%d\n", --i); 8
printf("%d\n", i++); 8
printf("%d\n", i--); 9
printf("%d\n", -(i++)); -8
printf("%d\n", -(i--)); -9
页:
[1]