책 내용 질문하기
[2021 정보처리기사 실기] 2권 192p java 질문
도서
2021 시나공 정보처리기사 실기
페이지
192
조회수
373
작성일
2021-04-02
작성자
탈퇴*원
첨부파일

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페이지 연산자 우선순위에

단항연산자에 있는 ! ~ 는 비트연산자로 알고 있는데 비트연산자의 우선순위가 아닌

단항연산자로 가장 높음으로 연산하면 되나요?

답변
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-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)); 이런 형식으로 있으면 

    앞에 있는 +는 값을 갖다붙이는 용도, 뒤에 괄호() 안에 있는 +는 괄호 안에 있는 값들을 연산(더하기)한다 라고 생각하고 있는데 맞나요?

     

     

    아직 제가 확실히 몰라서 여러가지 질문을 드렸는데, 

    질문이 많아도 상세히 답변해주셔서 감사합니다

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.