using System;
namespace OperatorsAppl
{
class Program
{
static void Main(string[] args)
{
int a = 21;
int b = 10;
int c;
c = a + b;
Console.WriteLine("Line 1 - c 的值是 {0}", c);
c = a - b;
Console.WriteLine("Line 2 - c 的值是 {0}", c);
c = a * b;
Console.WriteLine("Line 3 - c 的值是 {0}", c);
c = a / b;
Console.WriteLine("Line 4 - c 的值是 {0}", c);
c = a % b;
Console.WriteLine("Line 5 - c 的值是 {0}", c);
c = a++;
Console.WriteLine("Line 6 - c 的值是 {0}", c);
c = a--;
Console.WriteLine("Line 7 - c 的值是 {0}", c);
Console.ReadLine();
}
}
}
运行结果为:
Line 1 - c 的值是 31
Line 2 - c 的值是 11
Line 3 - c 的值是 210
Line 4 - c 的值是 2
Line 5 - c 的值是 1
Line 6 - c 的值是 21
Line 7 - c 的值是 22
为什么:line6-c的值是21而不是22
line7-c的值是22而不是20
a++和a--是先赋值后运算。++a和--a是先运算后赋值。后面那几行相当于
c = a;//c=21
a=a+1;//a=22
Console.WriteLine("Line 6 - c 的值是 {0}", c);//输出21
c = a//c=22,因为a=22
a=a-1;//a=21
Console.WriteLine("Line 7 - c 的值是 {0}", c);//输出22
自减-- 自增++的理解使用,跟语言无关
这个你跟踪一下就理解了
Line 1 - c 的值是: 31 a的值:21 b的值:10
Line 2 - c 的值是: 11 a的值:21 b的值:10
Line 3 - c 的值是: 210 a的值:21 b的值:10
Line 4 - c 的值是: 2 a的值:21 b的值:10
Line 5 - c 的值是: 1 a的值:21 b的值:10
Line 6 - c 的值是: 21 a的值:22 b的值:10
Line 7 - c 的值是: 22 a的值:21 b的值:10
以上是加上同步输出 a b值
在第五步结束可知, a = 21;(后两步与 b 无关就不说了)
执行下面第六步时,a ++;++在后面,先执行语句在自增一;
c= a;a = a+1;
所以 c :21 a :22
c = a++;
Console.WriteLine("Line 6 - c 的值是 {0}", c);
第六步结果 c: 22 a: 21 b: 10
执行第七步
同样,-- 在后面,先执行赋值,在自减;
c= a; a= a-1;
所以 c: 22 a : 21
c = a--;
Console.WriteLine("Line 7 - c 的值是 {0}", c);
理解不变,a++ 与++a 都是a = a+1;
只不过前者是在所在语句执行之后执行;
后者在语句中,先执行自增。
如楼上,如果把a++改成++a。就会输出你要的22