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#语言自增自减运算符深入剖析的更多相关文章

  1. 【转】 C语言自增自减运算符深入剖析

    转自:http://bbs.csdn.net/topics/330189207 C语言的自增++,自减--运算符对于初学者来说一直都是个难题,甚至很多老手也会产生困惑,最近我在网上看到一个问题:#in ...

  2. C语言系列之自增自减运算符的用法(二)

    运算符中最难理解的有自增自减运算符的使用方法,下面我将简单总结一下他们的使用方法 我们知道,C语言运行是由右向左运行的 下面我们来看一个例子 当i等于3的时候 j=++i; 由上面可知,C语言是由右向 ...

  3. c语言:自增自减运算符的操作详解

    博主在回忆c语言的基本知识时,突然发现自增自减运算符(--.++)这个知识点有些模糊不清,故博主为了给同为小白的同学们提供一些经验,特写下这篇文章. 首先,自增自减运算符共有两种操作方式. 比如,我先 ...

  4. 【java从入门到精通】day-06-基本运算符-自增自减运算符

    1.运算符 java语言支持如下运算符: 算术运算符:+,-,*,/,%,++,-- 赋值运算符:= 关系运算符:>,<,>=,<=,==,!=,instanceof 逻辑运算 ...

  5. java入门---运算符&算术运算符&自增自减运算符&关系运算符&位运算符

        计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 ...

  6. java自增(自减)运算符

    自增(自减)运算符: ++ --就是可以将当前变量自我增加(减少)1 的运算符. i++, 后++, 先将 i 的值作为整个表达的值, 然后将 i 增加 1. ++i, 先++, 先将 i 增加 ...

  7. 2-1赋值运算符 & 2-2自增自减运算符 &2-3

    2-1赋值运算符 先定义一个变量,把定义好的变量在赋值给另外一个变量.变向之间的互相赋值 2-2自增自减运算符 元素符,放在变量前和变量后的区别 先进行自增运算,再进行赋值运算.这里先进行num1的+ ...

  8. 023 01 Android 零基础入门 01 Java基础语法 03 Java运算符 03 算术运算符之——自增自减运算符

    023 01 Android 零基础入门 01 Java基础语法 03 Java运算符 03 算术运算符之--自增自减运算符 本文知识点:Java算术运算符中的自增自减运算符 自增自减运算符 之前我们 ...

  9. C++学习30 重载++和--(自增自减运算符)

    自增“++”和自减“--”都是一元运算符,它的前置形式和后置形式都可以被重载.请看下面的例子: #include <iostream> #include <iomanip> u ...

随机推荐

  1. 《图解HTTP》阅读笔记---第一章网络基础

    第一章.网络基础TCP/IP:----------传输控制协议Transmission Control Protocol / 网络协议Internet Protocol是一种用于Internet(因特 ...

  2. P3240 [HNOI2015]实验比较 树形DP

    \(\color{#0066ff}{ 题目描述 }\) 小D 被邀请到实验室,做一个跟图片质量评价相关的主观实验.实验用到的图片集一共有 \(N\) 张图片,编号为 \(1\) 到\(N\).实验分若 ...

  3. STL用法

    map.find(key) 获取map容器中指定键值x的元素,如果找到,返回此元素的迭代器,否则返回map::end()的迭代器(即查找到容器的末尾都没有找到此元素).

  4. [SDOI2008]烧水问题 规律

    题目描述 把总质量为1kg的水分装在n个杯子里,每杯水的质量均为(1/n)kg,初始温度均为0℃.现需要把每一杯水都烧开.我们可以对任意一杯水进行加热.把一杯水的温度升高t℃所需的能量为(4200*t ...

  5. Android studio 混淆打包

    AndroidStudio中的项目可以用compile的形式引入github上的开源项目,可以引用module,而不一定都要用libs文件夹中添加jar包的形式. 在最终realease打包时,混淆的 ...

  6. 【预警通告】Apache Struts2 远程代码执行漏洞

    Apache Structs2的Jakarta Multipart parser插件存在远程代码执行漏洞,漏洞编号为CVE-2017-5638.攻击者可以在使用该插件上传文件时,修改HTTP请求头中的 ...

  7. for别名

    name:for(int i =0 ;i< a.length;i++){ System.out.println(i); for(int j =0;j<i;j++){ continue na ...

  8. ie7,ie8 js中变量名和页面元素ID重名,报错

    js变量名和一个div的id重名,报错.不知所以然...做个标记

  9. Kibana6.2.x 插件理解

    官方地址:https://www.elastic.co/guide/en/kibana/current/development-uiexports.html Type Purpose hacks An ...

  10. HDU-Big Number (斯特林公式)

    In many applications very large integers numbers are required. Some of these applications are using ...