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. 亿级PV请求的三种负载均衡技术(转)

    http://www.360doc.com/content/17/1126/23/50145453_707419125.shtml       目录 DNS轮询 LVS负载均衡 DR模式 NAT模式 ...

  2. asp.net core 简化模型验证 modelState.IsValid不用每一个写

    第一种:直接在执行action之前验证模型 实现 IActionFilter public class ModelStateFilter : IActionFilter { public void O ...

  3. manjaro linux KDE桌面网易云音乐点击托盘图标无反应

    这是一个很奇怪的问题,它的解决方法更奇怪... 找到网易云,右键,选择“编辑应用程序” 在打开的窗口中选中应用程序一栏 将“命令”的内容替换为: 1 env XDG_CURRENT_DESKTOP=D ...

  4. Nginx01---简单使用

    基于腾讯云--ubuntu系统 1.安装nginx sudo apt-get install nginx 2.启动,停止nginx nginx -c /usr/local/nginx/conf/ngi ...

  5. vue.js组件之j间的通讯一 子组件接受父祖件数据

    Vue2.0的三种常用传值方式.父传子.子传父.非父子组件传值 在Vue的框架开发的项目过程中,经常会用到组件来管理不同的功能,有一些公共的组件会被提取出来.这时必然会产生一些疑问和需求?比如一个组件 ...

  6. css3 box-shadow 用法

    第1个值水平偏移值 第2个值垂直偏移值 第3个值设置对象的阴影模糊值 第4个值设置对象的阴影外延值 外阴影常规效果box-shadow:5px 5px rgba(0,0,0,.6); 外阴影模糊效果b ...

  7. Vue.js-----轻量高效的MVVM框架(一、初识Vue.js)

    1.什么是Vue.js? 众所周知,最近几年前端发展非常的迅猛,除各种框架如:backbone.angular.reactjs外,还有模块化开发思想的实现库:sea.js .require.js .w ...

  8. 转:zookeeper配置运行——较为详细的教程

    zookeeper:http://blog.csdn.net/morning99/article/details/40426133 dubbo+zookeeper详细:http://www.cnblo ...

  9. 进入BIOS的步骤

    查看自己的BIOS版本 $ systeminfo 对号入座,电脑进入BIOS的两种实用方法

  10. Spark为什么比Hadoop好?

    (1)Spark计算速度远胜于Hadoop的原因之一就在于中间结果是缓存在内存而不是直接写入到disk Hadoop每次计算先写磁盘,下次计算先从磁盘读,计算结果再写磁盘,如此往复.这对于迭代计算,是 ...