在C语言中,有很多运算符,有一种运算符叫做算术运算符,用于各类数值运算,包括加(+)、减(-)、乘(*)、除(/)、取余(%),自增(++)、自减(--)。
今天我们来详细地介绍一下关于自增的一些小运算。
以i为例,我们知道自增运算有两种,“i++;”和“++i;”那么这两种运算的区别在哪呢?
i++; 相当于先计算“i = i;”再计算"i = i + 1;"即先使用i,使用完毕之后,再执行++操作,在这里,使用完毕就是遇到结束标志的意思。
++i; 相当于先计算“i = i + 1;”再计算“ i = i;”即先自加,再使用i。
下面我们练一道题。
#include
int main()
{
int i = 2;
int num;
num = (i++) + (i++) + (i++) + (i++);
printf("num = %d\t i = %d\n",num,i);
return 0;
}
结束标志有三种:
①分号“;”
②逗号“,”
③函数的括号
那么在这里,我们先使用了第一个括号里的i,这时i = 2,但是在使用完之后,我们并没有看到结束标志,所以不进行自加计算,而是进行下一个括号里的内容计算,这时i = 2,使用i,在使用了i之后,同样没有看到结束标志,也不进行自加操作,以此类推,最终num = 2 + 2 + 2 + 2 = 8,在括号里的内容全部计算完之后,看到了分号“;”,即结束标志,这时便要进行自加操作,在这里要进行四次自加操作,所以最后i = 6。
接下来我们再练习一道题。
#include
int main()
{
int i = 2;
int num;
num = (++i) + (++i) + (++i) + (++i);
printf("num = %d\t i = %d\n",num,i);
return 0;
}
num = 19 i = 6
#include
int main()
{
int i = 2;
i = i * ((i++) + (++i));
printf("i = %d\n",i);
return 0;
}
答案
i = 19
2.
#include
int main()
{
int i = 2;
i = (i++) + (++i) + (i++) + (++i);
printf("i = %d\n",i);
return 0;
}
答案
i = 15
#include
int main()
{
int i = 2;
i = (++i) + (i++) + (++i) + (i++);
printf("i = %d\n",i);
return 0;
}
i = 16
#include
int func(int a,int b)
{
printf("a = %d , b = %d\n",a,b);
}
int main()
{
int i = 2;
func(i++,++i);
return 0;
}
a = 3 , b = 4
我们来稍微修改一下函数的内容,然后根据总结归纳来分析一下结果是多少。
1.
#include
int func(int a,int b)
{
printf("a = %d , b = %d\n",a,b);
}
int main()
{
int i = 2;
func(i++,i++);
return 0;
}
a = 3 , b = 2
#include
int func(int a,int b)
{
printf("a = %d , b = %d\n",a,b);
}
int main()
{
int i = 2;
func(++i,++i);
return 0;
}
a = 4 , b = 4
#include
int func(int a,int b)
{
printf("a = %d , b = %d\n",a,b);
}
int main()
{
int i = 2;
func(++i,i++);
return 0;
}
a = 4 , b = 2
#include
int func(int a,int b,int c,int d,int e)
{
printf("a = %d , b = %d , c = %d , d = %d , e = %d\n",a,b,c,d,e);
}
int main()
{
int i = 2;
func(i,i++,i++,++i,i++);
return 0;
}
a = 6 , b = 5 , c = 4 , d = 6 , e = 2
#include
int func(int a,int b,int c,int d,int e)
{
printf("a = %d , b = %d , c = %d , d = %d , e = %d\n",a,b,c,d,e);
}
int main()
{
int i = 2;
func(i++,++i,i,i++,++i);
return 0;
}
a = 5 , b = 6 , c = 6 , d = 3 , e = 6