一段代码读懂加加减减(最后有大招儿哦!)
很多同学在学习程序开发之初都会遇到这烦人的++和–
这个玩意儿确实让人头疼。所以文武老司机分享一端带有注释的代码。
希望能够帮到大家!
最后有大招儿哦!
using System;
namespace _加加减减
{
class Program
{
static void Main(string[] args)
{
//总原则:单一变量进行++和——运算,都属于一元变量,其计算优先级最高
//1. 无论是++还是——,如果处于单一变量左侧(左置),则先进行自增1或自减1运算(该行为会修改该单一变量内存中的值),之后再进行二元运算或者赋值
//例如:
int number01 = 5;
int number02 = 10 + ++number01;
Console.WriteLine(number01);
Console.WriteLine(number02);
//输出结果是:6和16
/*
分析:
1. 运算式10 + ++number01,是二元运算式。其中++number01是一元变量运算式。
2. 基于总原则,应该先对一元变量运算式进行计算。即完成number01的自增1,之后number01内存中的数值为6,所以number01最后输出也是6
3. 再将number01内存中的值6与10进行算数加运算。因此number02的最后输出是16
注:关于--number01的计算:
int number01 = 5;
int number02 = 10 + --number01;
Console.WriteLine(number01);
Console.WriteLine(number02);
其输出结果是:4和14
*/
//2. 无论是++还是——,如果处于单一变量右侧(右置),则先进行二元运算或者赋值,之后再进行自增1或自减1运算(该行为会修改该单一变量内存中的值)
//例如:
int number03 = 5;
int number04 = 10 + number03++;
Console.WriteLine(number03);
Console.WriteLine(number04);
//输出结果是:6和15
/*
分析:
1. 运算式10 + number03++,是二元运算式。其中number03++是一元变量运算式。
2. 基于总原则,应该先对一元变量运算式进行计算。由于一元变量运算式是number03++,因此应该先将number03内存中的值5与number04内存中的值10进行算数加运算。进行所以number04最后输出也是15
3. 再将number03内存中的值5完成自增1运算。因此number03的最后输出是6
注:关于number03——的计算:
int number03 = 5;
int number04 = 10 + number03--;
Console.WriteLine(number03);
Console.WriteLine(number04);
其输出结果是:4和15
*/
/*
总结:
1. 如果++或--在左(左置),则先自增或自减再运算或赋值(取值)
2. 如果++或--在右(右置),则先运算或赋值(取值)再自增或自减
*/
//没事开个大!
//当运算式中出现多个一元变量的++或--(无论左置还是右置),将一元变量看做单一变量,然后按照"()"优于"乘除取余"优于"加减"的顺序执行运算。总原则依然是从左向右。
int a = 5;
int b = a++ + ++a * 2 + --a + a++;
Console.WriteLine(a);
Console.WriteLine(b);
/*
运算式为:int b = a++ + ++a * 2 + --a + a++;
可理解为:int b = (a++) + (++a) * 2 + (--a) + (a++);
基于从左向右的总原则:
step01:a++,右置,先赋值(取值)后自增。此时a内存中的值为5,取值为5,自增1后a的内存值为6
step02:++a,左置,先自增后赋值(取值)。此时a自增1后内存中的值为7,7*2为14,取值为14
step03:--a,左置,先自减后赋值(取值)。此时a自减1后内存中的值为6,取值为6
step04:a++,右置,先赋值(取值)后自增。此时a内存中的值为6,取值为6,自增1后a的内存值为7
综上:int a的值为a最后内存中的值7。 int b的值为前面四步所有取值之和。即5+14+6+6=31。
输出结果应为:7和31
*/
}
}
}
That is all!