我有几个有关C语言的自增自减的疑问

发布时间:2024-05-02 10:03 发布:上海旅游网

问题描述:

#include <stdio.h>
void main()
{
int i=12,j=34,a,b,c,d;
a=++i+1;
b=++i;
c=--j;
d=j--;
printf("i++=%d,++i=%d,--i=%d,i--=%d\n",i++,++i,--i,i--);
printf("j++=%d,++j=%d,--j=%d,j--=%d\n",j++,++j,--j,j--);
printf("a=%d,b=%d\n",a,b);
printf("c=%d,d=%d\n",c,d);
}

#include <stdio.h>
void main()
{
int i=12,j=34,a,b,c,d;
c=--j;
d=j--;
printf("i++=%d,++i=%d,--i=%d,i--=%d\n",i++,++i,--i,i--);
printf("j++=%d,++j=%d,--j=%d,j--=%d\n",j++,++j,--j,j--);
printf("c=%d,d=%d\n",c,d);
}

这两个简单的程序怎么运行出来的i++^^^^^不一样呢?
小弟我还是刚刚开始学习C语言
还请大家赐教啊!

问题解答:

++i是先自增再计算,i++是先计算再自增加
a=++i+1; 相当于 i=i+1; a=i+1;
a=i+++1; 想当于 a=i+1; i=i+1;
printf()也是同样的道理, ++i是前增,i++是后增

a=++i+1;
b=++i;
虽然是给a和b赋值,但是++i是一个操作,i的值也变化了的。

你不觉得第一个程序比第二个程序多2句语句吗??
a=++i+1;
b=++i;

结果当然不可能一样。。。。

第一个程序中有个语句“a=++i+1;”
运行作用是i自加1后再加1赋值给a
a的值是14,i的值是13
而第二个程序中没有这个语句,
i的值仍为12

热点新闻