自增++与自减--运算符如何使用?

本文详细介绍了自增++和自减--运算符的使用规则,包括操作数必须为变量、前缀和后缀形式的区别、在循环条件中的应用,并提供了代码示例。此外,还强调了避免在复杂表达式中滥用自增/自减的重要性,提倡清晰易懂的编程风格。
摘要由CSDN通过智能技术生成

在程序编程中,加1和减1是数值变量最常见的操作。因此自增++ 与自减-- 运算符的使用,也是我们需要掌握的。下面就一起看下这个运算符的使用吧

1. ++与–运算符的操作数必须是变量,变量的类型不限

因为++、–运算符会改变操作数本身的值,所以这里的操作数不能是一个常量(无法改变)。即i++可以但3++就是一条非法语句。
例如 :
int a1=3; a1++; ==> 此时a1的值是4
int a2=3; a2--; ==> 此时a2的值是2
在这里插入图片描述
3++;是一条非法语句
在这里插入图片描述
代码示例:

#include <stdio.h>
#include <math.h>
int main()
{
  int a1 = 3,a2 = 3,b = 0 ;
  //b = 3++;
  a1++;
  a2--;
  printf("a1的值是%d\n",a1);
  printf("a2的值是%d\n",a2);
  printf("b的值是%d\n",b);
   return 0;
}

2. i++与++i即运算符与变量的位置不同时,对变量来说都是+1操作,但放在表达式里会有不一样的结果

自增++ 和自减-- 的用法分两种情况:

例如:前缀形式:++i;- -i(在表达式里使用改变后的值)
后缀形式:i++;i- -(在表达式里使用改变后的值)

以上两种形式使变量本身的值改变是一样的,但是对使用它们的表达式会产生不一样的结果,在下面的示例里可以清晰的看到区别。
在这里插入图片描述
代码示例:

#include <stdio.h>
#include <math.h>
int main()
{
  int a = 20,b = 20,m = 0,n = 0;
  m = 2*a++;
  n = 2*++b;
	
   printf("m的值是%d,a此时是%d\n",m,a);
   printf("n的值是%d,b此时是%d\n",n,b);
   return 0;
}

3.运算符的使用场景

有时运算符使用在循环语句的条件表达式中可以带来更多的便捷,但要注意看清表达式是前缀或者后缀形式,因为它会影响当前的循环次数。可以结合下面的示例进行理解。

  • 我们将自增/自减运算符用于for的判断条件时,如果使用for(i;i<n;i++)或者for(i;i<n;++i)形式作为判断条件,那么循环的次数与for(i;i++<n;)形式是没有差异的;如果使用for(i;++i<n;)形式,那么循环次数就会少一次。
  • 我们将自增/自减运算符用于while的判断条件时,如果使用while(j<n){...j++;}的形式或者while(j<n){...++j;}的形式作为判断条件,那么循环的次数与while(j++<n){...}的形式是没有差异的;如果使用while(++j<n){...}的形式,那么循环次数就会少一次。
    在这里插入图片描述
    代码示例:
#include <stdio.h>
int main()
{
  int i1 = 0 ,i2 = 0,j1 = 0 ,j2 = 0;
  for(;i1<3;i1++)
 {
	 printf("这是i1变量的循环\n");
  }
  printf("\n");
  for(;++i2<3;)
  {
	 printf("这是i2变量的循环\n");
  }	
  printf("\n");
  while(j1++<3)
  {
	  printf("这是j1变量的循环\n");
  }
  printf("\n");
  while(++j2<3)
  {
	  printf("这是j2变量的循环\n");
  }
   return 0;
}


4.其他应用

尽管我们了解了变量自增与自减运算符的用法,但我不建议在其他条件表达式里使用自增/自减运算符,这不仅会使代码变的难懂,还有可能产生其他bug。
并且要分清形式很容易,但是使用时可能就会迷糊或者用错。除了写代码的时候细心一点,另一个建议就是将i=i+1与i分开写,即我用的时候只写i,需要加1的时候就+1再赋值。

例如:m=2a++;可以直接写成 m=2a;a=a+1
n=2*++b;可以直接写成 b=b+1;n=2*b

以上作法虽然使代码量增加了,但是可读性和容错性都更好了,何乐而不为呢??

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值