首页 > 其他分享 >自增/自减运算符

自增/自减运算符

时间:2024-08-12 13:57:10浏览次数:12  
标签:自增 ++ 运算符 -- 自减 printf 表达式

  C语言中有两个特殊的运算符,即自增运算符“++”和自减运算符“--”。自增、自减运算符对变量的操作效果分别是使变量增加1和减少1。

--counter;        //自减前缀符号
grade--;          //自减后缀符号
++age;            //自增前缀符号
height++;         //自增后缀符号

自增、自减运算符可以放在变量的前面或后面。上述代码比较简单,只有自增、自减,没有其他的表达式运算,因此,运算符无论是前缀还是后缀不重要,得到的结果是一样的,自减就是变量减1,自增就是变量加1。

下面来看一下自增、自减运算

#include<stdio.h>
int main()
{
	int iNumber1 = 3;
	int iNumber2 = 3;


	int iresult1, iresult2;//定义变量 存储结果
	int iresult3, iresult4;

	iresult1 = ++iNumber1;//前缀自增运算
	iresult2 = iNumber2++;//后缀自增运算

	printf("The Addself ...\n");
	printf("the number1 is:%d\n", iNumber1);
	printf("the iresult1 is:%d\n", iresult1);
	printf("the number2 is:%d\n", iNumber2);
	printf("the iresult2 is:%d\n", iresult2);

	 iNumber1 = 3;//重新恢复变量值大小
	 iNumber2 = 3;


	iresult3 = --iNumber1;//前缀自减运算
	iresult4 = iNumber2--;//后缀自减运算


	printf("The Deleteself ...\n");
	printf("the number1 is:%d\n", iNumber1);
	printf("the iresult3 is:%d\n", iresult3);
	printf("the number2 is:%d\n", iNumber2);
	printf("the iresult4 is:%d\n", iresult4);


		return 0;

}

(1)在程序代码中,定义iNumber1和iNumber2两个变量用来进行自增和自减运算。

(2)进行自增运算,分为前缀自增和后缀自增。运行程序后可以知道,自增变量iNumber1和iNumber2的结果同为4,但是得到表达式结果iresult1和iresult2却不一样,结果分别为4、3,前缀自增使得iresult1变量先进行自增操作,然后再赋值操作;后缀自增是先进行赋值操作然后再自增。因此两个表达式的结果是不一样的。

(3)在自减运算中,前缀自减和后缀自减与自增运算方式是相同的。 

 总结:

一、自增运算符:

1、自增表达式i++和++i的基本功能与赋值表达式i=i+1都是相当的;

2、语句i++;与语句++i;是完全等价的,而表达式j=i++与表达式j=++i则是完全不同的。

3、前自增表达式++i的值,是i加1之后的值。(先加1后引用);后自增表达式i++的值,是i+1之前的值。(先引用后加1)

int main()
{
	int i = 0;
	int j;
	j = i++;
	printf("%d\n", j);
	i = 0;
	j = ++i;
	printf("%d\n", j);
	return 0;
}

二、自减运算符

1、自减表达式i--和--i的基本功能与赋值表达式i=i-1都是相当的;

2、语句i--;与语句--i;是完全等价的,而表达式j=i--与表达式j=--i则是完全不同的。

3、前自减表达式--i的值,是i减1之后的值。(先减1后引用);后自减表达式i--的值,是i-1之前的值。(先引用后减1)

int main()
{
	int i = 0;
	int j;
	j = i--;
	printf("%d\n", j);
	i = 0;
	j = --i;
	printf("%d\n", j);
	return 0;
}

另外:自增、自减运算符是单目运算符,因此表达式和常量不可以进行自增、自减运算。例如,1++,(a+5)++都是不合理的。

标签:自增,++,运算符,--,自减,printf,表达式
From: https://blog.csdn.net/2401_83334900/article/details/141061746

相关文章

  • c++的类和对象(中):默认成员函数与运算符重载(重难点!!)
    前言 Hello,小伙伴们,我们今天继续c++的学习,我们上期有介绍到c++的部分特性,以及一些区别于c语言的地方,今天我们将继续深入了解c++的类和对象,探索c++的奥秘。好,废话不多说,开始我们今天的学习。 1.类默认成员函数默认成员函数就是用户没有显示实现,编译器会自动生成的函数称......
  • 比较运算符和逻辑运算符
    //比较运算符://>//<//==//>=//<=//!=//逻辑运算符与&&或||非! staticvoidMain(string[]args){while(true)......
  • 14、Oracle中的Set运算符
    最近项目要用到Oracle,奈何之前没有使用过,所以在B站上面找了一个学习视频,用于记录学习过程以及自己的思考。视频链接:【尚硅谷】Oracle数据库全套教程,oracle从安装到实战应用如果有侵权,请联系删除,谢谢。学习目标:描述SET操作符将多个查询用SET操作符连接组成一个新的查......
  • 算术运算符
    staticvoidMain(string[]args){//算术运算符:+-*/%//演示:某学生三门功课的成绩分别是:语文85数学95英语75求总分和平均分;doubledouChinese=85;doubledouMath=95;doub......
  • C语言入门零基础:6、运算符
    一、运算符分类:        1、赋值运算符:=         2、算术运算符:+-*/%(取余取模)        3、关系运算符:> >= < <= ==!=        4、逻辑运算符:&& ||!        5、其他运算符:++--?: 复合 += -= ......
  • 【STM32】IO口取反 | 寄存器方式 | 异或运算符 | 原理
    目录STM32IO口取反|寄存器方式|异或运算符|原理1.引言2.GPIO基础知识2.1GPIO概述2.2STM32的GPIO架构2.3GPIO寄存器简介3.GPIO引脚取反原理3.1寄存器操作实现取反3.2异或运算符的应用4.示例代码4.1基础示例:LED闪烁4.2应用实例:继电器控制5.GPIO引脚......
  • JAVA修饰符、运算符、循环语句
    JAVA修饰符修饰符用来定义类、方法或者变量,通常放在语句的最前端一、访问修饰符1、default默认访问修饰符:在同一包内可见,不使用任何修饰符,使用对象为类、接口、变量、方法,访问级别是包级别(package-level),即只能被同一包中的其他类访问2、private私有访问修饰符:最严格的访问级......
  • C++ 禁用类的拷贝构造函数和赋值运算符
    C++中如果没有显式定义类的构造函数和赋值运算符,编译器会自动生成对应的函数,但是对于一些含有指针成员变量的类,自动生成的成员函数只会进行浅拷贝,会导致动态申请的内存在对象析构的时候doublefree,引起崩溃的问题。因此如果没有必要,通常会禁用该接口,避免用户调用该接口造成问题。......
  • 运算符续集
    1.扩展增值运算符**省略了一些加减删除的步骤而直接运算的运算符**2.面试题区分""+a+b和a+b+""3.条件运算符(必须掌握)如果符合条件x则输出y,否则输出z......
  • 从 python 设置运算符符号到方法名称的映射是什么?它们与文档不匹配
    我创建了自己的Customset类,它实现了python集合的几乎所有方法。当我使用此自定义集的实例时,许多集合运算符都会失败。它们会失败,并显示类似以下内容的内容:TypeError:unsupportedoperandtype(s)for-:'Customset'andCustomset'orTypeError:'<='......