자바(java) 기초연산 질문 드립니다.

자바(java) 기초연산 질문 드립니다.

작성일 2016.10.23댓글 2건
    게시물 수정 , 삭제는 로그인 필요

자바 기초를 공부하고 있는 학생입니다. 연산자 공부를 하다가 이렇게 코딩이 예제로 나왔는데
마지막 부분이 이해가 가지 않아서 질문 드립니다.
System.out.println(++a); 여기서는 a가 먼저 증감 되어서 11이 출력되었고
System.out.println(++a + b++); 여기서는 또다시 a가 증감되어 12이고, b는 그대로 20을 더하여 32가 나온 것까지 이해가 됩니다.
문제는 마지막 System.out.println((++a%3)+(a*++b)); 이 부분인데요.
(++a%3)=>여기는 증감후 나머지를 구하는 거라 1이라고 생각하고
(a*++b)=> 여기는 증감없이 12에 b의 값 21을 곱하여 출력이 될 것으로 예상했는데
답이 287로 나오네요. 제가 뭘 잘못 이해 했는지 알려주시면 감사하겠습니다~

public class First_example {

public static void main(String[ ] args) {
int a=10, b=20;
System.out.println(++a);
System.out.println(++a + b++);
System.out.println((++a%3)+(a*++b));
} //main end

}//Class end

[출력]
11
32
287



profile_image 익명 작성일 -

 안녕하세요.


두번째까지는 이해하셨다니 마지막에 조금 헷갈리셨나봅니다.



마지막  앞부분은 1이 맞구요, 뒤에 (a*++b)에서 헷갈리시는거 같은데요

위 부분에 오기전에 앞에 ++a%3 부분에서 이미 a가 증가 되었기 때문에 a는 13이 된 상태이고,


뒤에 a* ++b 에서 b는 전위 연산이기 때문에 위 문장에서 마지막에 b값이 21이었기 때문에


여기에서 b는 22가 됩니다.


따라서 287이 맞습니다.


다시 한번 살펴보세요^^




profile_image 익명 작성일 -

안녕하세요,

1. System.out.println(++a); 
에서는 생각하시는 게 맞습니다.

2. System.out.println(++a + b++);
는 다음과 같이 동작합니다.

a = a + 1;                 // 결과 => a = 12
System.out.println(a + b); // 결과 => a + b = 12 + 20 = 32
b = b + 1;                 // 결과 => b = 21

3. System.out.println((++a%3)+(a*++b));
는 다음과 같이 동작합니다.

3-1. (++a % 3);
a = a + 1; // 결과 => a = 13
a%3;       // 결과 => 13%3 = 1

3-2. (a * ++b);
b = b+1;   // 결과 => b = 22
a * b;     // 결과 => 13 * 22 = 286

3-3. (++a % 3)+(a * ++b)
1 + 286 = 287

이렇게 해서 287이 나오게 됩니다.

java(자바) 기초 질문입니다

... 잡다한 질문들이 많으므로 수고좀 하실것 같네요;; 내공 10걸겠습니다 자바는 선언문이 어떻게 됩니까? import java.io.BufferedReader; import java.io....

기초 자바(JAVA)에 대해서 질문있습니다.

... Java 를 공부하면서 나오는 몇가지만 질문하겟습니... 부탁드립니다. 네번째) int t=11; int z= myMethod(t ,10)... 엑셀같은 프로그램에서 사용하는데 자바의 %연산과...

자바(JAVA) 질문드립니다

논리연산자 출력값을 0 또는 1로 출력하려면 어떻게 해야되나요? 예를들어 1< 2 를 True 가 아닌 1로 출력하고싶습니다 안녕하세요. 자바에서는 논리값을 true 나...

java 연산 질문입니다

자바를 인터넷으로 예제와 설명을 통해서 독학 중인데 도무지 이해가 안가서 질문합니다. 현재 완전 기초부터 다지고 있어 증감연산자에 대해 공부하고 있고...