생활
자바 기초 문법 질문 해봅니다
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)답변이 도움이 됐으면 좋겠습니다. 좋은 하루 되세요!