鉴于这一守则:
int p,k=8;
p=k*(++k-8);
System.out.println(p);
当++k
被求值时,k=9
,然后变成k*(9-8)
给予9*1
int p,k=8;
p=(++k-8)*k;
System.out.println(p);
但是这提供了9作为输出。
发布于 2019-01-05 09:25:23
这是您的代码编译的类文件:
int k = 8;
byte var10000 = k;
int k = k + 1;
int p = var10000 * (k - 8);
System.out.println(p);
发布于 2019-01-05 09:15:16
你有一个乘法
left side: k
right side: (++k-8)
正如您正确地指出的,大括号有优先权。然而,您的程序仍然运行“从左到右”。首先对左侧进行计算,即k = 8
。然后对右侧进行评估,即(++k-8) = 1
。现在,我们已经确定了双方,并可以将它们相乘:8*1 = 8
。
https://stackoverflow.com/questions/54050525
复制相似问题