c#语言自增自减运算符深入剖析
C语言的++和--对于初学者来说一直都是难题,甚至很多老手也会产生疑惑;
最大的问题在于 ++可以放在变量后面,也可以放在前面;
如 i++; ++i;
自减运算符与++原理一样,只是变量变价为减而已,下面我们主要就以++为例;
实力剖析:
例题一:
int i = 3, j = 4;
i++;
++j;
Console.WriteLine(i);
Console.WriteLine(j);
对此大家都不会有什么疑惑,输出结果是4和5;下面我们来做一个小改动:
int i = 3, j = 4;
int a=i++;
int b=++j;
Console.WriteLine(a);
Console.WriteLine(b);
结果又是多少呢?这里就开始出现++后置和++前置的区别了,结果是3和5;
1. ++后置:第一步计算返回结果,与变量相同,第二步将变量的值自增1(通俗的讲就是先返回结果并将结果赋值给变量a,然后再自增)
2. ++前置:第一步计算返回结果并且自增1,第二步将变量的值自增1(通俗的讲就是先自增1,然后返回自增1的结果,然后赋值给变量b)
很明显 a=i++,是先把i=3赋值给a,然后i再自增;
b=++j,是先把j自增为5,然后再赋值给b;
其实基本道理就是这样,但在更复杂的情况下又是如何呢,咋们来看看:
例题二:
int i = 3, j = 4;
int a=i++ + i++;
int b=++j + ++j;
Console.WriteLine(a);
Console.WriteLine(b);
上面的结果是7和11;
咋们来看下 a=i++ + i++;第一个i++ 这里返回结果为3,然后i自增为4;由于运算还没有结束,故这个时候不会立即把3赋值给a;再看第二个i++,这个时候i为4,故返回结果为4;所以a=3+4;输出7
b=++j + ++j;第一个++j,j自增为5并且返回5;第二个++j,j这时候是5自增为6并且返回6;故b=5+6;输出11;
来点复杂的
例题三:
int i = 3, j = 4;
int a=i++ + j++ + --i + ++j;
int b=--j + j++ + i-- + i++ + --i ;
Console.WriteLine(a);
Console.WriteLine(b);
上面的执行代码,解析为下面就是:
a = 3 + 4 + 3 + 6 = 16;
b = 5 + 5 + 3 + 2 + 2 = 17;
如果你的结果不是这个,希望再看下上面的例题1和2;
c#语言自增自减运算符深入剖析的更多相关文章
- 【转】 C语言自增自减运算符深入剖析
转自:http://bbs.csdn.net/topics/330189207 C语言的自增++,自减--运算符对于初学者来说一直都是个难题,甚至很多老手也会产生困惑,最近我在网上看到一个问题:#in ...
- C语言系列之自增自减运算符的用法(二)
运算符中最难理解的有自增自减运算符的使用方法,下面我将简单总结一下他们的使用方法 我们知道,C语言运行是由右向左运行的 下面我们来看一个例子 当i等于3的时候 j=++i; 由上面可知,C语言是由右向 ...
- c语言:自增自减运算符的操作详解
博主在回忆c语言的基本知识时,突然发现自增自减运算符(--.++)这个知识点有些模糊不清,故博主为了给同为小白的同学们提供一些经验,特写下这篇文章. 首先,自增自减运算符共有两种操作方式. 比如,我先 ...
- 【java从入门到精通】day-06-基本运算符-自增自减运算符
1.运算符 java语言支持如下运算符: 算术运算符:+,-,*,/,%,++,-- 赋值运算符:= 关系运算符:>,<,>=,<=,==,!=,instanceof 逻辑运算 ...
- java入门---运算符&算术运算符&自增自减运算符&关系运算符&位运算符
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 ...
- java自增(自减)运算符
自增(自减)运算符: ++ --就是可以将当前变量自我增加(减少)1 的运算符. i++, 后++, 先将 i 的值作为整个表达的值, 然后将 i 增加 1. ++i, 先++, 先将 i 增加 ...
- 2-1赋值运算符 & 2-2自增自减运算符 &2-3
2-1赋值运算符 先定义一个变量,把定义好的变量在赋值给另外一个变量.变向之间的互相赋值 2-2自增自减运算符 元素符,放在变量前和变量后的区别 先进行自增运算,再进行赋值运算.这里先进行num1的+ ...
- 023 01 Android 零基础入门 01 Java基础语法 03 Java运算符 03 算术运算符之——自增自减运算符
023 01 Android 零基础入门 01 Java基础语法 03 Java运算符 03 算术运算符之--自增自减运算符 本文知识点:Java算术运算符中的自增自减运算符 自增自减运算符 之前我们 ...
- C++学习30 重载++和--(自增自减运算符)
自增“++”和自减“--”都是一元运算符,它的前置形式和后置形式都可以被重载.请看下面的例子: #include <iostream> #include <iomanip> u ...
随机推荐
- phaser小游戏框架学习(一)
这两天由于项目的需要,所以简单学了一下phaser框架. 官网:http://phaser.io/ 还有一个phaser小站,是中文的网站,但是内容不如英文文档全,大家也可以去看这个网站,需要查阅AP ...
- FullCalendar插件的基本使用
我的另一博客地址:https://segmentfault.com/u/lyrfighting/articles 前段时间,一直在开发考勤系统,当时为满足设计的需求,选了好几个插件,最后决定采用Ful ...
- [POI2014]KUR-Couriers BZOJ3524 主席树
给一个长度为n的序列a.1≤a[i]≤n. m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0. Input 第一行两 ...
- 牛客寒假算法基础集训营5 J 炫酷数学
链接:https://ac.nowcoder.com/acm/contest/331/J来源:牛客网 小希最近想知道一个东西,就是A+B=A|B(其中|为按位或)的二元组有多少个. 当然,直接做这个式 ...
- MPI环境配置
单机多核配置:https://www.cnblogs.com/shixiangwan/p/6626156.html 多计算机配置:https://blog.csdn.net/WASEFADG/arti ...
- 老男孩python作业3-购物车程序优化
购物车优化要求:用户入口: 1.商品信息存在文件里 2.已购商品,余额记录.第一次启动程序时需要记录工资,第二次启动程序时谈出上次余额 3.允许用户根据商品编号购买商品 4.用户选择商品后,检测是否够 ...
- Django 08 Django模型基础3(关系表的数据操作、表关联对象的访问、多表查询、聚合、分组、F、Q查询)
Django 08 Django模型基础3(关系表的数据操作.表关联对象的访问.多表查询.聚合.分组.F.Q查询) 一.关系表的数据操作 #为了能方便学习,我们进入项目的idle中去执行我们的操作,通 ...
- python 批量下载 spring 的 xsd
#coding=utf-8 import os import urllib import urllib2 import re from bs4 import BeautifulSoup # 利用 ur ...
- sharepoint_study_7
描述:sharepoint网站上部署WebPart出错后,如何删除错误的WebPart?如何恢复原页面? 解决:到管理中心去将该解决方案收回并删除,可以恢复原页面,但是错误的webpart信息会保留, ...
- Codeforces Round #532 (Div. 2)- B(思维)
Arkady coordinates rounds on some not really famous competitive programming platform. Each round fea ...