JAVA기초 질문합니다. 증감연산자문제

JAVA기초 질문합니다. 증감연산자문제

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


5. int i=1;
   int j=i++;                     
   if((i>++j) && (i++==j)) i+=j;
   System.out.println("i=" + i + ", j=" + j);

6. int i=1;
   int j=i++;                     
   if((i>++j) & (i++==j)) i+=j;
   System.out.println("i=" + i + ", j=" + j);

7. int i=1;
   int j=i++;                     
   if((i>j++)||(i++==j)) {
 i+=j;
   }
   System.out.println("i=" + i + ", j=" + j);

8. int i=1;
   int j=i++;                     
   if((i>j++)|(i++==j)) {
 i+=j;
   }
   System.out.println("i=" + i + ", j=" + j);

---------------------------------------

기초 문제인데요 도저히 이해가 안가네요

각 문제 결과값과 그 결과값의 이유좀 알려주세요

한시간째 봐도 안되겟네요 도움청합니다.



profile_image 익명 작성일 -

사실 저런 식으로 증감연산자를 잘 안사용해서 저도 직접 출력해보고 실험해봤습니다.


int i=1;       // i=1;
int j=i++;    // j=1;  i=2;
if((i>++j) && (i++==j)) i+=j;  // j =2 ;

 System.out.println("i=" + i + ", j=" + j);


저도 굉장히 혼란스러웠는데 증감연산자는 ++i 과 i++ 은 차이가 있습니다.

int j=i++; ++ 이 붙을 때 어떤 식이 있다면 일단 대입이 먼저 진행이되고 ++가 진행이됩니다.

따라서 j  = 1 이 들어간 것입니다. 물론 식이 끝나면서 i = 2 가 되었습니다.

if((i>++j) && (i++==j)) i+=j;  인 부분에서 ++j 부분은 식이 시작할때 먼저 더하고 시작합니다.

따라서 j = 2 가 되고, i++==j 부분에서는 식 이후 증가이지만 if 조건식의 (i>++j) 의 부분이 거짓이기

때문에 오른쪽 조건은 실행하지 않고 바로 나오는 모습을 보입니다. && 은 두 조건이 참이어야 if 문이

실행되는데 어느쪽 하나라도 거짓이면 바로 탈출하는 모습을 보이는것 같습니다.

따라서 출력은 i=2, j=2 입니다.


   int i=1;
   int j=i++;                     
  if((i>++j) & (i++==j)) i+=j;
  System.out.println("i=" + i + ", j=" + j);


두번째입니다. 2번째 줄까지는 위와 같습니다.


이번에 if 안에서는 ++이 더해지는 것을 알 수 있는데 아마 & 연산자로 바뀌어서 그런것 같습니다.


& 연산자는 두 식이 참 참 = 참 ,참 거짓 = 참 , 거짓 참 = 참 , 거짓 거짓 = 거짓 으로 나타내기 때문에


위에있는 두 조건식을 읽습니다. 따라서  (i>++j) & (i++==j) 이 두식이 실행이 모두 됩니다. 그 이유는


두 식의 참 거짓을 알아야 참인지 거짓인지 판단할 수 있기 때문입니다.


는 것을 알 수 있습니다. 결과는  i=2, j=1 입니다.


     int i=1;
     int j=i++;                    
     if((i>j++)||(i++==j)) {
      i+=j;
     }
     System.out.println("i=" + i + ", j=" + j);


이제 첫번째 두번째를 하면서 익숙해졋습니다. 물론 저도 그렇고 질문자분께서도 그럴지도 모르겠네요


자 해석해보면 (i>j++) 은 식이 실행되고 나서 증가 연산이 이루어지는것을 알 수 있습니다.


비교한 따라서 i = 2 j =1 이기 때문에 참이네요. || 연산자는 둘 중 하나만 참이여도 실행이되기 때문에


오른쪽 조건식을 읽지않고 if 문으로 들어갑니다. 들어가면서 j 는 2가 됩니다. 그리고 i+=j 를 실행하면서


i = 2 j =2 엿던 값이 i=4 가 됩니다.


출력결과 i=4, j=2


 int i=1;
int j=i++;                     
 if((i>j++)|(i++==j)) {
 i+=j;
 System.out.println("i=" + i + ", j=" + j);


이것도 두 식을 다 읽게되는데 위와 같은 이유이기 때문입니다.


따라서 if((i>j++)|(i++==j))


 식이 지나면 i 는 3 j =2 가 돕니다


그리고  i+=j; 의 실행으로 i 는 5 j =2 가 됩니다.


실행 결과는 i=5, j=2 이 되겠습니다.

JAVA기초 질문합니다. 증감연산자문제

... --------------------------------------- 기초 문제인데요... 사실 저런 식으로 증감연산자를 잘 안사용해서... 물론 저도 그렇고 질문자분께서도 그럴지도...

java 기초 증감연산자 질문좀요!

++b는 21이죠? 그래서 ++a + ++b는 33 이잖아요 그런데 b++로 바꾸면 이해가 안돼요 c값이 왜 32죠? 아주아주 쉽게 설명해주세요 !ㅠㅠ 앞에 ++ 붙으면 선증가 / 뒤에++ 붙으면...

Java관련 개념 기초 문제 질문... 5개

아래 자바 문제 답변 부탁드립니다..! 1. 인스턴스... 2) 하나의 java 파일에는 하나의 클래스를 두는 것이... 4) 메서드로 구현한다 4) 대입 연산자와 다른 연산자를...

java 연산 질문입니다

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

java 기초 질문좀 드릴꼐요..

안녕하세요 풀다가 이상한 문제가 보여서 질문좀 드리려고 합니다.... x가 5니까 4 == 5는 거짓이니 false가 되곘고 &&연산자의 특성상 앞에 것이...

활용한 Java 언어에 대한 질문입니다.

... 예제문제들을 보고 풀어보면서 실무감을 익히고... [초급] Java 프로그래밍 기초 다지기 022 진수(2, 8... 연산자 026 증감 연산자(+`+, -`-) 027 관계 연산자...