자바 기초 문법 질문 해봅니다

int a = 1

system.out.println(a++)

이거 왜 2가 안나오고 1이 나오는거죠?

더하기 두개하면 1이 올라간다는데 2나와야 하는거 아닌가요ㅜㅜ

이해가 안가서 질문드립니다

    13개의 답변이 있어요!

    • 적어주신 아래와 같은 경우 1이 찍히고

      int a = 1

      system.out.println(a++)

      아래와 같은 경우 2가 찍힙니다.

      int a = 1

      system.out.println(++a)

      이유는 ++의 위치가 변수의 앞에 있는 경우 a에 +1을 한 후 system.out.println 문이 실행되고

      ++의 위치가 변수의 뒤에 있는 경우 system.out.println 문이 실행되고 a에 +1을 실행합니다.

      아래와 같이 출력하시면 첫 줄에 1 다음 줄에 2가 출력 됩니다.

      int a = 1

      system.out.println(a++)

      system.out.println(a)

    • 안녕하세요. 아하에서 활동하고 있는 개발자입니다.

      a++ 는 코드가 한번 돌고 나서 +1이 됩니다. 즉, 다음 system.out.println(a)에서는 2가 찍히게 되는거죠.

      ++를 자주 쓰는 for문을 생각하시면 이해하기 쉬울겁니다.

      먼저 더해서 쓰고 싶으시면 '++a' 를 쓰시면 출력하기전에 더해지기 때문에 2가 출력 되게 됩니다.

      즉, a++는 a를 호출 후에 +가 되는 구조랍니다.

    • a++는 후처리가 됩니다.

      반대로 ++a는 전처리가 되기에 a+1의 결과를 사용할 수 있게 됩니다.

      증감연산자 사용방법에 대해서는 아래 블로그를 참고해서 보시면 더 도움이 될 것 같아요.

      https://studymake.tistory.com/417

      처음에는 하다보면 생각한 것과 다른 결과가 많이 나올때가 있을 수 있습니다.

    • 안녕하세요 현직 웹개발자 입니다.

      int a = 1; ---------------------------------------- a 는 1입니다.

      system.out.println(a++); ---------------- 함수에 대해 a 를 먼저 수행하고 ++ 1카운트 증가시킵니다.

      이렇게 이해해주시면 되겠습니다.

      system.out.println(++a); ---------------- a 를 먼저 1카운트 증가시키고 함수를 진행합니다.

      ++a = 해당 라인전에 1카운트 증가

      a++ = 해당 라인 마치고 1카운트 증가

      이상입니다.

    • 안녕하세요~

      ++ 의 위치에 따라 다릅니다.

      앞에 있을경우 먼저 ++를 한다음 값을 출력한다는 거고

      뒤에 있을경우 값을 먼저 출력하고 값을 변경하겠다는 겁니다.

      예를 들면

      int a = 1; System.out.println(a++); <--- ++이 뒤에있으므로 먼저 a값을 출력하고 (1출력) System.out.println(a); <--- 다음출력값에 변경 (2출력 int a = 1; System.out.println(++a); <--- ++이 앞에 있으니까 먼저 ++한 값을 출력 (2출력) System.out.println(a); <--- 똑같이 2출력

      이상입니다~

    • ++ 연산자나 -- 연산자를 사용할 때 순서가 중요합니다

      int i = 1;

      System.out.println(a++); 일 때 a를 출력하고 1을 더합니다.

      println 이 끝난후 i값은 2가 되어있습니다.

      아래처럼 두줄을 쓴다면 출력값은

      System.out.println(a++);

      System.out.println(a);

      1

      2

      가 될 것 입니다.

      int i = 1;

      System.out.println(a++);

      가 2가 출력되어야한다면

      int i = 1;

      System.out.println(++a); 를 해서 1을 더한 후 출력하게 하면 됩니다

    • 원하는 값은

      system.out.println(++a)

      하면 나오겠죠?

      보통 배울때 ++a, a++, --a,a-- 같이 배울텐데....

      ++a = a를 증가 시킨 후 출력

      a++ = a를 출력 후 증가

      가장 기본적인건데 for문 아직 안들어가셨나요..

      배열 for문 돌릴때 i++ 하고 안에서 빼올때 생각하세요 보통 0번째 부터 뽑아오려고 돌리자나요

    • a++과 ++a의 차이를 아실필요가 있습니다.

      전자와 후자는 동일하게 값이 1이증가하는것이지만,

      전자의 경우 일단 a값으로 특정 동작이 수행된후 1이 증가합니다. 반면 후자의 경우는 특정동작이 수행되기전 1을 증가시키고 수행합니다.

      즉 만약 a++대신 ++a를 해당구문에 넣으신다면 1이출력될 겁니다.

    • 안녕하세요

      지금 사용하시는 것이 증감연산자라고 부르는 것으로

      ++ 가 있고 -- 가 있습니다. 해당 연산자는 사용하는 위치에 따라서 좀 차이가 있는데요.

      많이들 헷갈려 하십니다. 간단히 설명을 드리자면..

      int a = 0; System.out.println(a++); // 0 System.out.println(a); // 1 a = 0; //초기화 System.out.println(++a); // 1 System.out.println(a); // 1 a = 1; //초기화 System.out.println(a--); // 1 System.out.println(a); // 0 a = 1; //초기화 System.out.println(--a); // 0 System.out.println(a); // 0

      위와 같은 형태로 출력이 됩니다. 결과값을 보면 예상이 되시겠지만

      ++가 변수의 뒤에 붙어 있으면 후행 연산으로 해당 줄이 끝난 뒤에 1이 증가합니다.

      ++가 변수의 앞에 붙어 있으면 선행 연산으로 해당 줄이 수행되기 전에 1이 증가합니다.

      즉 출력하라는 2번째 줄의 코드는 a의 뒤에 ++가 있기때문에 출력을 수행한 뒤부터 1이 증가한 상태로 있어서

      그 이후에는 3번째 줄에서 출력만 했는데 1로 나오죠.

      -- 도 마찬가지 입니다. 해당 코드를 보고 도움이 되셨으면 하네요.

    • 자바 연산자에 대해서 검색을 해보시면 좋을 것 같습니다.

      해당 질문은 정확히 증감연산자 이구요.

      a++은 해당 변수에 있는 값을 가져와 참조 후에 플러스

      ++a는 해당 변수의 값을 플러스 이후에 참조

      차례대로 후위형, 전위형 이라고도 합니다.

      말로 쉽게 설명하자면 콘솔에 a값을 보여주고 더한다가 a++

      콘솔에 a값을 일단 더하고 보여준다가 ++a 입니다.

      ex)

      int a = 1
      system.out.println(a++) //1 콘솔로 일단 a값을 찍는다. 그리고 a값을 1 증가시킨다.

      system.out.println(a) //2

      ex)

      int a = 1

      a++; // a값에 1을 증가시킨 이후 아무런 명령이 없음
      system.out.println(a)

      이렇게 하면 a값은 2가 나왔겠죠;

      보통 for문 쓸 때 습관적으로 i++; 이런걸 많이 하는데

      위의 한줄 명령어 자체는 ++i와 차이가 없어서 그런 겁니다.

      이 처럼 자료구조나 연산자 등 순서가 참 중요합니다.

    • 증감연산자로 변수뒤에 증감연산자가 붙을 경우 현재 시점이 아닌 다음 시점에 해당값이 증가됩니다.

      값을 2로 찍고 싶은거면 System.out.println(++a); 으로 하시거나 변수 a+1 이런식으로 하셔야 합니다.

      증감연산자는 코드의 길이를 줄여주어서 간단히 코딩을 할 수 있지만, 잘못 이해하고 사용시 큰 버그가 발생할 수 있으니 코딩에 익숙하지 않으시면 a+1처럼 가독성 있는 코딩을 하시길 추천합니다.

    • system.out.println(a++) 여기서 쓰인 a++ 증감 연산자는 a를 먼저 출력한 후에 값이 증가하게 됩니다.

      숫자 2가 나오게 하려면 증감 연산자를 앞에 써야 할 것으로 보입니다.

      즉, system.out.println(a++)는 a를 출력하고 난 뒤에 a의 값이 증가하게 되는 소스 코드라고 보시면 되며

      질문자께서 의도하신 값을 출력하기 위해서는

      system.out.println(++a)로 쓰셔야 의도하신 값이 출력되게 됩니다.

    • 안녕하세요. 아하(a-ha) 프로그래밍 지식 답변자 입니다.

      후행 계산이기 때문에 1이 나오며, 한번 더 a 를 프린트 해보면 2가 나올 것 입니다.

      2를 바로 출력하고 싶은 경우 아래와 같이 작성해주세요.

      int a = 1 system.out.println(++a)

      답변이 도움이 됐으면 좋겠습니다. 좋은 하루 되세요!