你有没觉得C#的结果更好理解?
这跟编译器有关,同是C,编译器不同也可能出现不同结果。
我感觉C/C++的结果更好理解,但盼阁下的理解方式,
还有我的两种结果是在同一个编译器下产生的
@JYsharp:
C/C++貌似是先统计一个表达式里有多少个++,是放在变量前面还是后面,放前面就在计算表达式前就先加好,否则就在计算完表达式后再加。
而C#则是遇到一个变量才临时去计算。
所以,C/C++:n=i+(++i),先把i加1,然后再去计算n=i+i=1+1。
C#:n=i+(++i),先遇到i,i=0,n=0+(++i);然后遇到++i,计算出++i的值为1,n=0+1;
同样:n=(i++)+i; c/c++的结果是0,C#的结果是1,也是一样的道理。
我就觉得是编译顺序的原因,是不是C从右往左,C#从左往右。。。
n=(i++)+(i++)
要是从左还是从右,这个就应该从左和从右都是一样的结果。
但C结果就是0,C#结果是1。
所以C是在表达式计算前统一计算++i,表达式计算完后统一计算i++。