public class main {
public static void main(String[] args) {
int x=20,y=35;
x = y++ + x++;
y = ++y + ++x;
System.out.printf("%d %d\n",x,y);
}
//Output : 56,93
#include<stdio.h>
void main()
{
int x=20,y=35;
x = y++ + x++;
y = ++y + ++x;
printf("%d %d ",x,y);
}
//Output : 57 94
根据运算符优先级规则,我通过Java代码获得的输出是正确的,但在“C”代码中执行相同操作时,它会将输出值增加1.我使用的是ubuntu 12.04 64位操作系统。
答案 0 :(得分:1)
这不是一回事,因为Java和C是不同的语言。
Java中的后增量行为定义为在计算表达式后执行增量。
C中的行为未定义,但通常遵循优先顺序。
注意:评估和优先顺序是不同的,对于后递增/递减和快捷布尔操作,这更为明显。
e.g。
Sting s = null;
if (s == null || !(s.length() > 0))
在这种情况下,!
具有最高优先级,但实际上永远不会被评估,因为较低的优先级||
会阻止它。
优先级仅确定隐含括号的位置,但仅建议如何评估表达式。