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 ...
随机推荐
- Scene is unreachable due to lack of entry points and does not have an identifier for runtime access via -instantiateViewControllerWithIdentifier解决办法
使用Storyboard时出现以下警告: warning: Unsupported Configuration: Scene is unreachable due to lack of entry p ...
- Codeforces Round #503 (by SIS, Div. 2)B 1020B Badge (拓扑)
题目大意:每个同学可以指定一个人,然后构成一个有向图.1-n次查询,从某个人开始并放入一个东西,然后循环,直到碰到一个人已经放过了,就输出. 思路:直接模拟就可以了,O(n^2) 但是O(n)也可以实 ...
- apache htaccess 一个 例子
<Files ~ "^.(htaccess|htpasswd)$"> deny from all </Files> DirectoryIndex index ...
- light oj 1047 - Neighbor House(贪心)
The people of Mohammadpur have decided to paint each of their houses red, green, or blue. They've al ...
- lintcode - 统计比给定整数小的数的个数(两种方法)
class Solution { public: /* * @param A: An integer array * @param queries: The query list * @return: ...
- Java StringBuffer
String是不变类,用String修改字符串会新建一个String对象,如果频繁的修改,将会产生很多的String对象,开销很大.因此java提供了一个StringBuffer类,这个类在修改字符串 ...
- rpm命令相关
### .列出所有安装过的包 rpm -qa | grep sql ### .如何获得某个软件包的文件全名. rpm -q mysql ### .rpm包中的文件安装到那里 rpm -ql lrzsz ...
- win7旗舰版+caffe+vs2013+matlab2014b(无GPU版)
参考网站: http://www.cnblogs.com/njust-ycc/p/5776286.html 无法找到gpu/mxGPUArray.h: No such file or director ...
- apply,call,bind
/*apply和call都是为了改变某个函数运行时的上下文而存在的(就是为了改变函数内部this的指向): 如果使用apply或call方法,那么this指向他们的第一个参数,apply的第二个参数是 ...
- linux 6 安装 使用 XtraBackup
帮助文档:https://www.cnblogs.com/imweihao/p/7290026.html ---Yum安装 官网地址:https://www.percona.com/doc/perco ...