怎么计算坡度系数:请问编程高手:关于a++与++a的问题

来源:百度文库 编辑:高考问答 时间:2024/04/30 14:41:22
a=3;
b=a++*++a;
请问a 和b 结果为多少?怎么算?

这是一个前加加与后加加的问题。
结果是:
a=5,b=15
因为a初始值等于3,a++是后加加,所以a等于3.
++a,是前加加、上面那个a后加加以后是等于4,所以前加加以后a就等于5;
b=a++*++a;
这是运算符的优先级造成的,相当于b=(a++)*(++a),
所以b=3*5;

用事实来证明一切吧!
using System;

namespace ConsoleDemo
{

class Class1
{

[STAThread]
static void Main(string[] args)
{
int a=3;
int b;
b=a++*++a;
Console.WriteLine(b);

}
}
}

运行结果是b=15
上面是用C#做的,下面用Java做结果还是b=15
class Demo
{
public static void main(String[] args){
int a=3;
int b=a++*++a;
System.out.println(b);
}
}

++为前置自增运算符
就拿你的例子来说吧

++前置时 其值为变量的值+1 而且会使变量的值+1
对于表达式++a,其值为4,a的值变为4

++后置时 其值为变量的值 而且会使变量的值+1
对于表达式++a,其值为3,a的值变为4
对于"--"来说 运算方式一样

那我们来分析一下这个表达式:b=a++*++a;

这个式子的意思就是将a++*++a的运算结果赋给变量b;
因为++的运算优先于* 所以运算顺序为(a++)*(++a)
我们先来算a++
此时由于++在右,所以a的值变为a+1,其值也为a+1
即此时:a=4,,,,,运算顺序变为4*(++a)
好累 休息下 继续打 - -!

那么++a呢,,由于第一个式子将它的值变为4了,,所以++a中,其值为4(变量的值),但此时a变为5了(提外话了);
也就是此时b=4*4;
因此 最后a=5,b=16;

QQ:418704044
(楼上有问题, 运算顺序是从左到右...你凭什么先执行++a?)

这个表达式比较繁琐,可以这样理解:

a=3;
a=a+1;//也就是++a先执行,这样a=4;
b=a*a;//这样b=16;
a=a+1;//也就是a++,这样a=5

所以最后b=16,a=5,楼上错误。

这里应该是从右到左,拜托,先运行++a,a=4,所以a++=4
b=4*4=16,然后a=5