执行程序段 int a=5;a*=a/=a++;后,a的值是多少?

来源:百度知道 编辑:UC知道 时间:2024/05/15 16:15:42

结果是2。

因为机器分如下三步骤执行表达式的:
①a=a/5 执行后a=1
②a=a*a 执行后a=1
③a++ 执行后a=2

你可以用下面这样简单的程序上机验证:

main(){
int a=5;a*=a/=a++;
printf("%d\n",a);
}

5

int a=5;a*=a/=a++;
即result *= expression,将第一个等号之后看成expression,故先执行第一个等号后面的内容。
现在看a/=a++;将a++看成expression。
设j = a++;在此,因为递增发生在表达式被求值后,所以值 a=5 直接赋给了j,而不会让j=6(j=++a才会让j=6)。这样由a/=5得到a=1;再由a*=1,得到a=5

我是用javascript来做的,不知道答案是否有出入。