192페이지
⑧systemout.printf("a*3=%d\n", a*3);
⑨systemout.println("a/2="+(a/2));
⑩systemout.printf("a-1="+(a-1));
제가 궁금한거는
1. 9번 10번처럼 ,(쉼표) 대신 +를 사용할 수 있나요?
예를 들면
printf(%d, %d+3+5)
+ 기호를 붙이는 조건과 어떻게 해석해야하는지가 궁금합니다.
2. 9번의 println은 줄바꿈 기능이 있으니까 \n을 적으면 안되나요?
3. 8번에서 systemout.printf("a*3=%d\n", a*3); 이게 아닌
systemout.printf("a*3="%d\n, a*3); 이렇게
"(쌍따옴표)의 위치가 = 바로 뒤쪽으로 앞으로 이동하게 되면 출력 결과가 달라지나요?
4. ⑨systemout.println("a/2="+(a/2));
⑩systemout.printf("a-1="+(a-1)); 의 형식을
⑨systemout.println("a/2=%d", a/2);
⑩systemout.printf("a-1=%d", a-1);
이렇게 바꿔도 같나요?
---------------
5.. 194페이지 연산자 우선순위에
단항연산자에 있는 ! ~ 는 비트연산자로 알고 있는데 비트연산자의 우선순위가 아닌
단항연산자로 가장 높음으로 연산하면 되나요?
안녕하세요 길벗수험서 운영팀입니다.
[1]
9번 10번과 같은 활용은 가능합니다.
"printf(%d, %d+3+5)"는 어떤 의도로 작성하신 건가요? 오류인 코드입니다.
printf("%d, %d+3+5", 11, 22); 와 같은 형태라면 "11, 22+3+5"와 같이 출력될 것입니다.
[2]
제어문자 \n을 사용할 수는 있습니다. 다만 이 경우 줄나눔이 2번 발생하게 되겠죠.
[3]
아예 수행되지 않습니다.
제어문자, 서식문자열은 쌍따옴표 안에 작성되어야 합니다.
[4]
⑨systemout.println("a/2=%d", a/2);
⑩systemout.printf("a-1=%d", a-1);
9번은 안되며 10번은 됩니다.
%d 등의 서식문자열을 이용한 출력방식은 printf에서만 가능합니다.
[5]
!, ~는 단항연산자이자 비트연산자입니다.
둘 중 우선순위가 높은 비트연산자를 기준으로 우선순위를 판단하시면 됩니다.
행복한 하루되세요 :)
-
관리자2021-04-02 12:04:27
안녕하세요 길벗수험서 운영팀입니다.
[1]
9번 10번과 같은 활용은 가능합니다.
"printf(%d, %d+3+5)"는 어떤 의도로 작성하신 건가요? 오류인 코드입니다.
printf("%d, %d+3+5", 11, 22); 와 같은 형태라면 "11, 22+3+5"와 같이 출력될 것입니다.
[2]
제어문자 \n을 사용할 수는 있습니다. 다만 이 경우 줄나눔이 2번 발생하게 되겠죠.
[3]
아예 수행되지 않습니다.
제어문자, 서식문자열은 쌍따옴표 안에 작성되어야 합니다.
[4]
⑨systemout.println("a/2=%d", a/2);
⑩systemout.printf("a-1=%d", a-1);
9번은 안되며 10번은 됩니다.
%d 등의 서식문자열을 이용한 출력방식은 printf에서만 가능합니다.
[5]
!, ~는 단항연산자이자 비트연산자입니다.
둘 중 우선순위가 높은 비트연산자를 기준으로 우선순위를 판단하시면 됩니다.
행복한 하루되세요 :)
-
관리자2021-04-05 14:58:52
안녕하세요 길벗수험서 운영팀입니다.
! 와 ~은 단항연산자이자 비트연산자인데
연산은 단항연산자의 우선순위로 ++, --와 같은 우선순위로 연산하면 되는건가요?
[답변]
예, 단항연산자이면서 비트연산자인 경우 우선순위는 빠른 것을 따릅니다.
즉 단항연산자에 따르면 되는 것이죠.
1. systemout.printf("a-1="+(a-1)); 이걸
systemout.printf("a-1="+a-1); 이걸로 출력할 수 있나요?
어떻게 출력이 되나요?
[답변]
printf에서 서식지정자 없이 값이 삽입되면 오류가 납니다.
정상적으로 출력하고자 한다면,
System.out.printf("a-1=%d", a-1); 이렇게 사용해야 하고,
이 경우에는 System.out.printf("a-1=%d", (a-1)); 처럼 뒤쪽에 괄호가 들어간다고 해서 값이 변하지는 않습니다.
print나 println이라면
System.out.print("a-1="+(a-1)); 는 사용할 수 있지만,
System.out.print("a-1="+a-1); 는 사용하지 못합니다.
사칙연산의 경우 +, -는 왼쪽부터 연산됩니다.
"a-1="+a를 먼저 수행하여 문자열 "a-1=a"가 되고, 다음으로 "a-1=a"-1을 수행해야 하는데, 문자열에서는 감산연산을 수행하지 못하므로 오류가 발생하게 되죠.
systemout.println("5+2="+3+4);
systemout.println("5+2="+(3+4);
이게 있었는데 아직 잘 이해가 가지 않아서 위와 같은 질문을 하였습니다.
[답변]
이건 위의 해설을 참고하세요.
systemout.println("5+2="+3+4); 은 문자+3=문자, 문자+4=문자 가 된 것이고,
systemout.println("5+2="+(3+4); 은 3+4를 먼저 수행하게 되어 7이라는 숫자 결과에다가 문자+7=문자 가 된 것입니다.
2. printf 와 println 둘 다 +를 이용한 출력이 되는지 궁금하고,
[답변]
숫자의 덧셈 연산이라는 개념에서는 둘 모두에서 사용 가능하지만,
문자, 숫자 등의 순차적 출력이라는 개념은 printf에서 사용하지 못합니다.
3. systemout.println("5+2="+3+4); 에서 +3 +4 는 3과 4를 그냥 연결시키는 의미인건지도 궁금합니다
[답변]
위에서 설명드린 것과 같이 '문자+숫자'의 경우 두 데이터가 이어진 '문자'가 나오게 됩니다.
4. systemout.println("5+2="+3+4); 에서 systemout.println("5+2="+3-4); +4에서 -4로 바껴도 연산이 가능한지 궁금하고
가능하다면 어떻게 출력이 되는지 궁금합니다.
[답변]
앞에서 답변드린 것과 같이 '문자-숫자'라는 연산은 수행될 수 없어 오류가 발생합니다.
5. systemout.println("5+2="+(3+4)); 이런 형식으로 있으면
앞에 있는 +는 값을 갖다붙이는 용도, 뒤에 괄호() 안에 있는 +는 괄호 안에 있는 값들을 연산(더하기)한다 라고 생각하고 있는데 맞나요?
[답변]
예, 맞습니다.
'숫자+숫자' 는 단순 덧셈 연산, '문자+숫자' 또는 '문자+문자'는 순차출력이라는 점만 기억하시고, 연산자 우선순위의 결합규칙을 기억해두세요.
행복한 하루되세요 :)
-
*2021-04-02 14:32:32
[5]번에 대한 추가 질문입니다.
! 와 ~이 단항연산자이자 비트연산자라고 하셨는데 아직 잘 모르겠는게 우선순위입니다.
교재에서는
단항연산자
산술연산자
시프트연산자
관계연산자
비트연산자 라고 했을 때 우선순위가 위로 갈수록 높다고 나와있는데
! 와 ~은 단항연산자이자 비트연산자인데
연산은 단항연산자의 우선순위로 ++, --와 같은 우선순위로 연산하면 되는건가요?
또 추가질문 있습니다.
1. systemout.printf("a-1="+(a-1)); 이걸
systemout.printf("a-1="+a-1); 이걸로 출력할 수 있나요?
어떻게 출력이 되나요?
* 이번 필기 1회 문제에서
systemout.println("5+2="+3+4);
systemout.println("5+2="+(3+4);
이게 있었는데 아직 잘 이해가 가지 않아서 위와 같은 질문을 하였습니다.
2. printf 와 println 둘 다 +를 이용한 출력이 되는지 궁금하고,
3. systemout.println("5+2="+3+4); 에서 +3 +4 는 3과 4를 그냥 연결시키는 의미인건지도 궁금합니다
4. systemout.println("5+2="+3+4); 에서 systemout.println("5+2="+3-4); +4에서 -4로 바껴도 연산이 가능한지 궁금하고
가능하다면 어떻게 출력이 되는지 궁금합니다.
5. systemout.println("5+2="+(3+4)); 이런 형식으로 있으면
앞에 있는 +는 값을 갖다붙이는 용도, 뒤에 괄호() 안에 있는 +는 괄호 안에 있는 값들을 연산(더하기)한다 라고 생각하고 있는데 맞나요?
아직 제가 확실히 몰라서 여러가지 질문을 드렸는데,
질문이 많아도 상세히 답변해주셔서 감사합니다