鱼C论坛

 找回密码
 立即注册
查看: 4095|回复: 7

自增自减运算符到底是怎么运算的

[复制链接]
发表于 2013-4-5 00:05:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. void main()
  2. {
  3.         int i = 8;
  4.        
  5.         printf("%d\n",++i);
  6.         printf("%d\n",--i);
  7.         printf("%d\n",i++);
  8.         printf("%d\n",i--);
  9.         printf("%d\n",-i++);
  10.         printf("%d\n",-i--);

  11. }
复制代码
printf("%d\n",++i);//先进行自增处理,i=9,再输出i,输出结果为9(该语句后,i=9)
printf("%d\n",--i);//先进行自减处理,i=8,再输出i,输出结果为8(该语句后,i=8)后面的就不能理解了,为什么又会变成8...
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-5 15:25:33 | 显示全部楼层

回帖奖励 +1 鱼币

这个问题前边已经有很多人回答过了~自己多看看帖子!前缀运算是先自增在输出~后缀运算是先用i的值输出在自增自减!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-5 15:44:04 | 显示全部楼层
这个问题我在其他帖子回答过,我就直接复制过来了
举个例子吧:
#include <stdio.h>
void main()
{
    int i=0,j=0;
    ++i;
    j++;
    printf("%d─搀",i,j);
    i++;
    printf("\n%d",i);
}
运行结果为:
1 1
2
==================
为什么会i和j都1呢
因为++i; 樀++;不管先引用还是先自加,只要那条语句执行完了结果都是一样的,结果为2也同理
这样说你可能还有点迷茫,再举一例吧:
#include <stdio.h>
void main()
{
    int i=0;
    printf("%d",i++);
}
结果为输出0,因为先引用i,而i=0,引用,输出0,如果你在printf("%d",i++);下面加上printf("%d",i);这个i的值就为1了。
希望这些对你有帮助{:1_1:}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-5 15:49:38 | 显示全部楼层
你不能理解的那个8即是printf("%d\n",i++);是吧
因为前一个语句的i是8,然而你这个语句是先引用后自加,先引用就是作为输出时的i,引用完了,自加就不影响本语句的输出结果了
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-4-5 16:49:00 | 显示全部楼层

自加,不是让i+1麽....
不怎么懂,自加自减永远都是1吗?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-5 18:45:50 | 显示全部楼层
情颠 发表于 2013-4-5 16:49
自加,不是让i+1麽....
不怎么懂,自加自减永远都是1吗?

自加就是自增,都是1
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-7 16:38:22 | 显示全部楼层
这个貌似不同版本的C规定是不同的,计算结果页不一致
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-9 17:42:45 | 显示全部楼层
我只是路过打酱油的。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-4 13:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表