C#中的变量赋值问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 10:39:49
int m = 8;
int a = 8;
int p = 0;
m = m++;
p = a++;
Console.WriteLine(m);
Console.WriteLine(a);
Console.WriteLine(p);
Console.ReadLine();
这个程序运行结果是898,可是为什么m和a的运行结果会不一样呢?m也只有一个内存地址,它在后面也m++了,结果是8,而a也是占的一个内存地址,它a++之后却变成了9呢?
m=m++;的确是先把m的值赋给了他自己,但是他m++后的值到哪去了呢,后面的a++后的值是把他自己加过后的值又赋给了他自己的呢??

Console.WriteLine(m);

这个输出就不用说了吧,直接输出8;

Console.WriteLine(a);
这个呢, 首先a=8; 当执行p=a++的时候, a的值,已经+1了;现在a的值是9了;

Console.WriteLine(p);
这个是先取a的值,输出8;

m = m++;
为什么要这样呢?
直接m++
不就行了吗?
这个应该是一个不正确或者有歧义的语句。

a++之后a本来的值8赋给了p,但是a自加了1所以是9
m是在自加之前就把本来的值又赋给了m

a是先++后才赋值的,m直接赋值了。