0
사실 저는 C로 킥복싱입니다. 방금 자바를 배우기 시작했습니다. 그리고 직접 OCJP6 인증을 준비하십시오. Kathy-Sierra 서적뿐만 아니라 시험 요강에서도 마찬가지로 운영자의 우선 순위 문제는 없습니다. 그러나 orablce-sun Documentation의 Java Operators 우선 순위 테이블을 보았을 때 완전히 혼란스러워졌습니다.C 언어 관점에서 Java Operators 우선 순위가 작동합니까?
From my C-Language: Operators(44) precedence table
1)() [] .(dot)
2)Unary: ++pre/--pre, -, +, (cast)
3)Arithmetic:
4)bitshift
5)relational:
6)bitwise:
7)logical:
8)ternary Operator ?:
9)Assignment operators = += -== etc
10) unary post++/post--
//In C if i say..
int main()
{
int i = 1, j;
j = i++;
/*
The above expression is solved based on the operators precedence!
2 operators i have used!
one is unary post, another is assignment.
here, assignment is higher precedence then unary post.
So, first i value is assigned to j.
then, i value is incremented because of post increment operator!
*/
printf("i = %d, j = %d", i, j);// i = 2, j = 1
return 0;
}
Java Operators precedence table
1)postfix expr++ expr--
2)unary ++expr --expr +expr -expr ~ !
3) arithmetic
4)shift << >> >>>
5)relational < > <= >= instanceof
equality == !=
6)bitwise AND &
bitwise exclusive OR^
bitwise inclusive OR |
7)logical AND &&
logical OR ||
8)ternary ? :
9)assignment = += -= *= /= %= &= ^= |= <<= >>= >>>=
//What my biggest doubt is...!
class Test
{
public static void main(String[] args)
{
int i = 1, j;
j = i++;
/*
according to the operators precedence table!
unary post operator is 1st precedence than assignment operator!
This way first i value should be increment!
then after assignment should happen!
How come here also i am getting the same values as in C language?
*/
//System.out.printf("i = %d, j= %d", i, j); //i = 2, j = 1
System.out.println("i = "+i+", j = "+j); // i = 2, j = 1
}
}
제발 좀 명확히 해주세요!
이 답변은 맞습니다. 언급해야 할 중요한 것은 후위 연산자로 '++'가 돌연변이를하기 전에 원래 값을 반환한다는 것입니다. 이것은 OP에게 언급하는 것이 중요 할 수 있습니다. –
@ Peter Lawrey, 나는이 방법을 이해했다. 실제로 평가와 우선 순위의 차이는 무엇인가! 이 점에 대해 자세히 설명해 주시겠습니까? 저는 교실에서만 그런 식으로 C 언어를 배웠습니다. 내 모든 결과물은이 관점에 따라 정확합니다. 표현식 int a = 2-7 + 3 * 4; * 연산자는 + 및 -보다 높은 우선 순위를가집니다. 연산자 우선 순위 표현식을 기반으로 생각했습니다. 나는 지금 다른 것을 말했다! 우선 순위와 평가 순서가 무엇인지 명확하게 설명해 주시겠습니까? – Omkar
predendence는 순서 연산자가 파싱되어 적용 할 순서를 결정합니다. 이것은 부작용이있는 지점까지의 가장 단순한 경우의 평가 순서와 동일합니다. Java의 경우 post ++와 -는 결국 개념적으로 평가되며 언제든지 (실제로 C에서 수행 할 수 있습니다.) –