본문 바로가기
CS/프로그래밍언어론

프로그래밍 언어론 수식, 문장 내용 요약 정리 및 문제 풀이 - 방통대 기말고사 대비

by Renechoi 2023. 12. 8.

수식

  1. 수식이란 값을 나타내는 표현
  2. 수식이란 피연산자와 연산자로 구성되어 하나의 값을 나타내는 표현
  3. 피연산자는 2, 'abc' 등 데이터 표현 그대로일 수도 있고 값이 저장되어 있는 변수 일 수도 있음
  4. 연산자는 연산을 수행하는 함수로 덧셈 연산자, 곱셈 연산자 등 기본 연산자, 함수일 수도 있음
  5. 수식에서 피연산자와 연산자 모두 포함될 필요는 없음
  6. 수식은 값을 나타내는 표현이며, 문장은 처리를 나타내는 표현. 문장 안에 수식이 포함된다고 보면 됨
  7. 수식의 끝에 쌍반점을 찍으면 문장이 됨
  8. 문장의 끝에서 쌍반점을 뺀다고 항상 수식이 되진 않음
  9. 산순 연산자에서 +는 부호 유지를, -는 부호를 반대로를 나타냄
  10. 언어에 따라 추가적인 산술 연산자가 있는데 파이썬의 경우 //가 몫을 나타내고, %가 나머지를 나타내고 **이 거듭제곱을 나타냄
  11. 피연산자 개수에 대해서 단항 연산자는 1개의 피연산자가 필요하며, 이항 연산자의 경우 2개의 피연산자가 필요함
  12. 산술 연산자 우선순위
    연산자 우선순위 결합방향
    ++(후위), --(후위) 1 좌결합
    ++(전위), --(전위), + (부호), -(부호), ! 2 우결합
    +, /, % 3 좌결합
    +, - 4 좌결합
    >>, << 5 좌결합
    >, >=, <=, < 6 좌결합
    ==, != 7 좌결합
    && 8 좌결합
  1. 결합 방향이란 같은 우선 순위일 때 그 다음 우선 순위를 의미함. 예를 들어 좌결합이면 같은 우선순위에 대해 왼쪽부터 수행을 의미

  2. - i ++ -> -2 : 초기 값이 2인 경우

  3. 피연산자들의 타입이 서로 일치하지 않는 경우 타입 변환이 필요

  4. 묵시적 타입 변환이란 언어의 정책에 따라 컴파일러에 의해 자동으로 변환, 데이터 집합이 커지는 방향의 타입으로 확대 변환

  5. 명시적 타입 변환은 프로그래머가 명시한 타입으로 변환, 확대변환 및 축소변환 모두 가능

  6. 관계 연산자 우선순위는 산술 연산자 보다 우선순위가 낮음

  7. 논리 연산자 우선 순위는 관계 연산자 보다 낮으나 ! 부정 연산의 경우 우선순위 2로 높음

  8. 논리 연산의 경우 단락 평가 혹은 단축 평가를 통해 모든 논리 연산을 수행하지 않고도 수식의 값을 얻을 수 있다

  9. 그외 연산자 : 비트 단위 논리 연산자, 조건 연산자

- i ++ -> -2 :i의 초기 값이 2인 경우 -2가 나오는 이유

-i++ 표현식에서 i의 초기 값이 2인 경우의 결과를 이해하기 위해서는 후위 증가 연산자(++)와 부호 연산자(-)의 작동 방식과 우선순위를 고려해야 한다.

  1. 후위 증가 연산자 (i++): 이 연산자는 현재 값인 i를 반환하고, 그 후에 i의 값을 1 증가시킨다. 즉, 표현식이 평가되는 시점에서 i의 값은 변하지 않고, 평가 이후에 값이 증가한다.

  2. 부호 연산자 (-): 이 연산자는 피연산자의 부호를 바꾼다.

-i++의 경우, 다음과 같이 처리된다:

  • 먼저, 후위 증가 연산자가 적용되므로, i의 현재 값인 2가 이 표현식의 일부로 사용된다.
  • 그 후, 부호 연산자가 적용되어 2-2가 된다.
  • 마지막으로, i의 값은 1 증가하여 3이 된다.

따라서, 표현식 -i++의 결과는 -2이고, 이 연산 후에 i의 값은 3이 된다.

문장

  1. 문장이란 처리를 나타내는 표현임
  2. 문장은 선언문과 실행문이 있음
  3. 선언문은 변수나 서브프로그램을 이용할 수 있도록 준비를 해줌. 즉 변수는 선언문을 통해 변수명과 타입 등을 바인딩해야 이후에 해당 변수에 이용할 수 있음
  4. 실행문은 실제적으로 변수도 이용하고 서브프로그램도 이용하며 데이터를 처리함.
  5. 실행문에는 처리한 데이터를 변수에 저장하는 대입문도 있고 프로그램의 수행 흐름을 다양하게 처리하기 위한 제어문도 있음
  6. 대입문은 프로그램에서 가장 자주 사용되는 문장으로 변수의 값을 변경
  7. 대입 연산자 : 대입 연산자의 오른쪽 부분의 값을 대입 연산자의 왼쪽 변수 값으로 대입
  8. 수식의 끝에 쌍 반점을 찍으면 문장이 됨
  9. 다중 대입문: 하나의 값을 여러 변수에 대입, 대입 연산자의 특성을 활용 -> 우결합, 대입한 값이 수식의 값
  10. 시프트 연산자도 대입 연산자임
  11. 복합 대입 연산자 : 산술 연산자와 대입 연산자가 결합한 것
  12. 묵시적 타입 변환: 값의 타입을 변수의 타입으로 변환하여 대입 -> C, C++ : 확대 변환 및 축소 변환만 가능, Java : 확대변환만 가능
  13. 명시적 타입 변환: 확대변환 및 축소변환 모두 가능, 변환된 타입이 변수의 타입과 일치하지 않으면 추가로 묵시적 변환 필요
  14. 제어문은 프로그램의 수행흐름을 제어
  15. 반복문은 원하는 문장을 반복해서 수행하도록 제어
  16. 다음 문장 해석
    char *loop(char *b, char *a) {
    char *s = b; 
    while (*b++ = *a++)
        ;
    return s; 
    }
    3번 행의 while문은 변수 b의 값이 가리키는 주소에 저장된 문자가 null이 아닌 동안 4번 행의 빈 문장을 반복한다. 즉, a의 값이 가리키는 주소에 저장된 문자열을 한 문자씩 문자형 포인트형 변수 b의 값이 가리키는 주소로 대입하다가, 문자열의 끝을 나타내는 null이 대입되는 순간 while문의 조건이 거짓이 되어 반복문을 빠져 나가게 된다.

문제

1. 수식과 문장의 차이점에 대한 설명으로 옳지 않은 것은?

  1. 수식은 값을 나타내는 표현이고, 문장은 처리를 나타내는 표현이다.
  2. 문장의 끝에는 보통 쌍반점이 찍힌다.
  3. 수식은 피연산자와 연산자로 구성되어 있으며, 문장 안에 포함될 수 있다.
  4. 모든 수식은 문장이 될 수 있지만, 모든 문장이 수식은 아니다.

정답: 4
해설: 모든 수식이 문장이 될 수 있는 것은 아니다. 문장은 수식을 포함할 수 있지만, 모든 수식이 문장은 아니다. 수식의 끝에 쌍반점을 찍으면 문장이 될 수 있지만, 반드시 그렇지는 않다.

2. 단항 연산자와 이항 연산자에 대한 설명으로 올바른 것은?

  1. 단항 연산자는 하나의 피연산자를 필요로 한다.
  2. 이항 연산자는 세 개의 피연산자를 필요로 한다.
  3. 단항 연산자와 이항 연산자는 같은 우선순위를 가진다.
  4. 산술 연산자는 모두 이항 연산자이다.

정답: 1
해설: 단항 연산자는 하나의 피연산자가 필요하며, 이항 연산자는 두 개의 피연산자가 필요하다. 산술 연산자 중에는 단항 연산자도 있고 이항 연산자도 있다.

3. 파이썬에서 사용되는 특수한 산술 연산자에 대한 설명으로 맞는 것은?

  1. // 연산자는 나눗셈의 몫을 반환한다.
  2. % 연산자는 나눗셈의 결과를 반환한다.
  3. ** 연산자는 나머지를 반환한다.
  4. // 연산자는 항상 실수 결과를 반환한다.

정답: 1
해설: 파이썬에서 // 연산자는 나눗셈의 몫을, % 연산자는 나머지를, ** 연산자는 거듭제곱을 나타낸다. // 연산자는 항상 실수 결과를 반환하는 것은 아니다.

4. 묵시적 타입 변환에 대한 설명으로 올바른 것은?

  1. 묵시적 타입 변환은 항상 데이터 집합을 축소시킨다.
  2. 묵시적 타입 변환은 프로그래머가 직접 지정한다.
  3. 묵시적 타입 변환은 언어의 정책에 따라 컴파일러가 자동으로 수행한다.
  4. 묵시적 타입 변환은 타입이 일치하지 않는 경우에 발생하지 않는다.

정답: 3
해설: 묵시적 타입 변환은 컴파일러가 언어의 정책에 따라 자동으로 수행하는 것으로, 데이터 집합이 커지는 방향으로 타입이 확대 변환된다. 이는 프로그래머가 직접 지정하는 것이 아니며, 타입이 일치하지 않는 경우에 필요하다.

5. 다중 대입문에 대한 설명으로 맞

는 것은?

  1. 다중 대입문은 하나의 값만을 여러 변수에 대입할 수 있다.
  2. 다중 대입문은 대입 연산자의 좌결합 특성을 활용한다.
  3. 다중 대입문은 대입 연산자의 우결합 특성을 활용한다.
  4. 다중 대입문은 복수의 값을 동시에 여러 변수에 대입할 수 있다.

정답: 3
해설: 다중 대입문은 하나의 값을 여러 변수에 대입할 수 있으며, 이는 대입 연산자의 우결합 특성을 활용한다. 이는 복수의 값을 동시에 여러 변수에 대입하는 것이 아니다.

6. 산술 연산자의 결합 방향에 대한 설명으로 맞는 것은?

  1. ++, --와 같은 후위 연산자는 우결합이다.
  2. +, /, %와 같은 연산자는 우결합이다.
  3. , <<와 같은 연산자는 우결합이다.

  4. +, -와 같은 연산자는 좌결합이다.

정답: 4
해설: 산술 연산자 중 +, -, *, /, %는 좌결합을 가지며, 이는 같은 우선 순위의 연산자가 나열될 때 왼쪽부터 수행된다는 것을 의미한다. 후위 연산자 ++, --는 좌결합이다.

7. 문장 중 대입문에 대한 설명으로 올바른 것은?

  1. 대입문은 변수의 값을 변경하지 않는다.
  2. 대입 연산자는 오른쪽 부분의 값을 왼쪽 변수 값으로 복사한다.
  3. 대입문은 프로그램에서 사용되지 않는다.
  4. 대입 연산자는 왼쪽 부분의 값을 오른쪽 변수 값으로 복사한다.

정답: 2
해설: 대입문은 프로그램에서 가장 자주 사용되는 문장 중 하나로, 대입 연산자를 통해 오른쪽 부분의 값을 왼쪽 변수 값으로 복사하여 변수의 값을 변경한다.

8. 제어문에 대한 설명으로 올바른 것은?

  1. 제어문은 프로그램의 수행 흐름을 제어하지 않는다.
  2. 반복문은 프로그램의 수행 흐름을 한 번만 제어한다.
  3. 제어문에는 조건문과 반복문이 포함된다.
  4. 제어문은 데이터를 처리하는 데 사용된다.

정답: 3
해설: 제어문은 프로그램의 수행 흐름을 제어하는 데 사용되며, 조건문과 반복문을 포함한다. 이는 데이터 처리보다는 프로그램의 흐름을 제어하는 데 중점을 둔다.

9. 명시적 타입 변환에 대한 설명으로 올바른 것은?

  1. 명시적 타입 변환은 자동으로 이루어진다.
  2. 명시적 타입 변환은 확대 변환만 가능하다.
  3. 명시적 타입 변환은 프로그래머가 지정한 타입으로 변환한다.
  4. 명시적 타입 변환은 묵시적 타입 변환과 동일하다.

정답: 3
해설: 명시적 타입 변환은 프로그래머가 명시적으로 지정한 타입으로 변환

10. 시프트 연산자에 대한 설명으로 옳지 않은 것은?

  1. 시프트 연산자는 비트 단위로 연산을 수행한다.
  2. '<<' 연산자는 비트를 왼쪽으로 이동시킨다.
  3. '>>' 연산자는 부호를 유지하며 비트를 오른쪽으로 이동시킨다.
  4. 시프트 연산자는 관계 연산자보다 우선순위가 높다.

정답: 4
해설: 시프트 연산자는 관계 연산자보다 우선순위가 낮다. 이는 비트 단위로 왼쪽 또는 오른쪽으로 이동시키는 연산을 수행한다.

11. 묵시적 타입 변환에 대한 설명으로 옳은 것은?

  1. 묵시적 타입 변환은 데이터 집합을 확대하는 방향으로만 이루어진다.
  2. 묵시적 타입 변환은 항상 안전하고 오류가 발생하지 않는다.
  3. 묵시적 타입 변환은 프로그래머가 직접 명시해야 한다.
  4. 묵시적 타입 변환은 두 피연산자의 타입이 일치하지 않을 때 발생한다.

정답: 4
해설: 묵시적 타입 변환은 두 피연산자의 타입이 일치하지 않을 때 발생하며, 컴파일러에 의해 자동으로 이루어진다. 이 변환은 데이터 집합이 확대되는 방향으로만 이루어질 수 있으나, 항상 안전하다고 볼 수는 없다.

12. 복합 대입 연산자에 대한 설명으로 맞는 것은?

  1. 복합 대입 연산자는 산술 연산 후 대입을 동시에 수행한다.
  2. 복합 대입 연산자는 논리 연산과 대입을 결합한 것이다.
  3. 복합 대입 연산자는 대입 연산자와 관계 연산자의 결합이다.
  4. 복합 대입 연산자는 프로그래밍에서 사용되지 않는다.

정답: 1
해설: 복합 대입 연산자는 산술 연산과 대입을 결합하여, 예를 들어 'a += b'는 'a = a + b'와 동일한 작업을 수행한다.

13. 논리 연산자의 우선순위에 대한 설명으로 옳은 것은?

  1. 논리 연산자는 산술 연산자보다 우선순위가 높다.
  2. '&&'와 '||'는 같은 우선순위를 가진다.
  3. '!' 연산자는 다른 논리 연산자보다 우선순위가 낮다.
  4. 논리 연산자 중 '!'는 다른 논리 연산자보다 우선순위가 높다.

정답: 4
해설:

14. 후위 증가 연산자와 전위 증가 연산자의 차이점에 대한 설명으로 맞는 것은?

  1. 후위 증가 연산자는 값이 증가한 후에 연산을 수행한다.
  2. 전위 증가 연산자는 연산을 수행한 후 값이 증가한다.
  3. 후위 증가 연산자와 전위 증가 연산자는 동일하게 작동한다.
  4. 전위 증가 연산자는 연산을 수행하기 전에 값을 증가시킨다.

정답: 4
해설: 후위 증가 연산자는 연산을 수행한 후 값이 증가하고, 전위 증가 연산자는 값이 증가한 후에 연산을 수행한다.

15. 산술 연산자의 우선순위에 대한 설명으로 옳은 것은?

  1. -, + 연산자는 *, / 연산자보다 우선순위가 높다.
  2. *, /, % 연산자는 +, - 연산자와 동일한 우선순위를 갖는다.
  3. +, /, % 연산자는 ++, -- 연산자보다 우선순위가 낮다.
  4. *, /, % 연산자는 +, - 연산자보다 우선순위가 높다.

정답: 4
해설: 산술 연산자 중 *, /, %는 +, -보다 우선순위가 높다. 이는 더 복잡한 연산을 우선적으로 처리함을 의미한다.

16. 논리 연산자 &&와 ||의 우선순위에 대한 설명으로 옳은 것은?

  1. && 연산자는 || 연산자보다 우선순위가 낮다.
  2. &&와 || 연산자는 같은 우선순위를 갖는다.
  3. || 연산자는 && 연산자보다 우선순위가 높다.
  4. && 연산자는 || 연산자보다 우선순위가 높다.

정답: 4
해설: 논리 연산자 중 &&는 ||보다 우선순위가 높으며, 이는 && 연산을 먼저 처리하고 그 결과를 || 연산에 사용함을 의미한다.

17. 관계 연산자의 우선순위에 대한 설명으로 옳지 않은 것은?

  1. 관계 연산자는 산술 연산자보다 우선순위가 낮다.
  2. 관계 연산자는 논리 연산자보다 우선순위가 높다.
  3. ==, != 연산자는 >, <, >=, <= 연산자보다 우선순위가 낮다.
  4. 관계 연산자는 대입 연산자보다 우선순위가 높다.

정답: 3
해설: 관계 연산자 중 ==, !=는 >, <, >=, <=와 동일한 우선순위를 갖는다. 이들은 산술 연산자 후에, 논리 연산자 전에 평가된다.

18. 시프트 연산자 <<, >>의 기능에 대한 설명으로 옳은 것은?

  1. << 연산자는 비트를 오른쪽으로 이동시킨다.
  2. 연산자는 비트를 왼쪽으로 이동시키고, 왼쪽의 비트는 0으로 채워진다.

  3. << 연산자는 비트를 왼쪽으로 이동시키고, 오른쪽의 비트는 0으로 채워진다.
  4. 연산자는 비트를 오른쪽으로 이동시키고, 왼쪽의 비트는 유지된다.

정답: 3
해설: 시프트 연산자 <<는 비트를 왼쪽으로 이동시키고, 오른쪽의 빈 자리를 0으로 채운다. >> 연산자는 비트를 오른쪽으로 이동시키며, 부호에 따라 왼쪽의 빈 자리를 채운다.

19. 변수 선언과 관련된 설명으로 올바른 것은?

  1. 변수 선언은 프로그램에서 사용되지 않는다.
  2. 변수 선언은 실행문에 속한다.
  3. 변수 선언은 변수에 메모리 공간을 할당하지 않는다.
  4. 변수 선언은 변수를 사용하기 전에 변수의 타입과 이름을 정의한다.

정답: 4
해설: 변수 선언은 프로그램에서 변수를 사용하기 전에 해당 변수의 타입과 이름을 정의하며, 이를 통해 메모리에 공간을 할당받는다.

20. 제어문 중 조건문에 대한 설명으로 맞는 것은?

  1. 조건문은 반복적인 작업을 수행하는 데 사용된다.
  2. 조건문은 프로그램의 실행 흐름을 무조건적으로 변경한다.
  3. 조건문은 주어진 조건에 따라 프로그램의 실행 흐름을 분기시킨다.
  4. 조건문은 프로그램의 실행 흐름에 영향을 미치지 않는다.

정답: 3
해설: 조건문은 주어진 조건의 참, 거짓에 따라 프로그램의 실행 흐름을 다르게 분기시키는 역할을 한다.

21. 비트 단위 논리 연산자에 대한 설명으로 맞는 것은?

  1. 비트 단위 논리 연산자는 숫자의 크기를 비교하는 데 사용된다.
  2. 비트 단위 논리 연산자는 피연산자들의 각 비트를 논리적으로 연산한다.
  3. 비트 단위 논리 연산자는 항상 두 개의 피연산자를 필요로 한다.
  4. 비트 단위 논리 연산자는 산술 연산에 주로 사용된다.

정답: 2
해설: 비트 단위 논리 연산자는 피연산자들의 각 비트를 대상으로 AND, OR, XOR과 같은 논리 연산을 수행한다.

22. 전위 증가 연산자와 후위 증가 연산자의 우선순위에 대한 설명으로 옳지 않은 것은?

  1. 전위 증가 연산자와 후위 증가 연산자의 우선순위는 같다.
  2. 전위 증가 연산자는 후위 증가 연산자보다 우선순위가 높다.
  3. 후위 증가 연산자는 연산자 우선순위 표에서 1위를 차지한다.
  4. 전위 증가 연산자는 연산자 우선순위 표에서 2위를 차지한다.

정답: 2
해설: 전위 증가 연산자와 후위 증가 연산자는 우선순위가 다르다. 후위 증가 연산자(++(후위), --(후위))는 연산자 우선순위 표에서 1위를 차지하는 반면, 전위 증가 연산자(++(전위), --(전위))는 2위를 차지한다. 따라서, 옳지 않은 설명은 2번이다.

23. 산술 연산자 중 후위 증가 연산자와 전위 증가 연산자의 차이에 대한 설명으로 올바른 것은?

  1. 후위 증가 연산자는 값을 증가시킨 후 현재 값을 반환한다.
  2. 전위 증가 연산자는 현재 값을 반환한 후 값을 증가시킨다.
  3. 후위 증가 연산자와 전위 증가 연산자는 동일하게 작동한다.
  4. 전위 증가 연산자와 후위 증가 연산자 모두 현재 값을 반환하고 난 후 값을 증가시킨다.

정답: 1
해설: 후위 증가 연산자는 현재 값을 반환한 후 그 값을 증가시키고, 전위 증가 연산자는 값을 먼저 증가시킨 후 그 증가된 값을 반환한다. 따라서, 후위 증가 연산자는 연산에 사용되는 현재 값을 사용하고 그 후에 값을 증가시킨다.

24. 연산자 우선순위 표에서 +, /, % 연산자의 결합 방향에 대한 설명으로 옳지 않은 것은?

  1. +, /, % 연산자는 좌결합이다.
  2. +, /, % 연산자는 우결합이다.
  3. 이들 연산자는 동일한 우선순위를 가진 다른 연산자들과 비교했을 때 왼쪽부터 계산된다.
  4. 이들 연산자는 동일한 우선순위의 연산자가 나열될 때 오른쪽부터 수행된다.

정답: 2
해설: +, /, % 연산자는 좌결합 성질을 가지고 있어, 동일한 우선순위의 다른 연산자들과 비교했을 때 왼쪽부터 계산된다. 따라서, 우결합이라는 2번 옵션은 옳지 않은 설명이다.

25. 산술 연산자 '++(후위)'와 '++(전위)'의 우선순위에 대한 설명으로 올바른 것은?

  1. '++(후위)'와 '++(전위)'의 우선순위는 동일하다.
  2. '++(후위)'는 '++(전위)'보다 우선순위가 높다.
  3. '++(전위)'는 '++(후위)'보다 우선순위가 낮다.
  4. '++(전위)'는 '++(후위)'보다 우선순위가 높다.

정답: 4
해설: 산술 연산자 우선순위 표에 따르면, '++(전위)'의 우선순위는 2이며, '++(후위)'의 우선순위는 1이다. 따라서, '++(전위)'는 '++(후위)'보다 우선순위가 높다.

26. 산술 연산자 '>>'와 '<<'의 결합 방향에 대한 설명으로 맞는 것은?

  1. '>>'와 '<<' 연산자는 우결합이다.
  2. '>>'와 '<<' 연산자는 좌결합이다.
  3. '>>'와 '<<' 연산자는 결합 방향이 없다.
  4. '>>' 연산자는 좌결합, '<<' 연산자는 우결합이다.

정답: 2
해설: 산술 연산자 우선순위 표에 따르면, '>>'와 '<<' 연산자는 결합 방향이 좌결합이다. 이는 동일한 우선순위의 연산자들이 나열될 때 왼쪽부터 계산된다는 것을 의미한다.

27. 묵시적 타입 변환에 대한 설명으로 올바르지 않은 것은?

  1. 묵시적 타입 변환은 변수의 타입에 맞추어 값의 타입을 자동으로 변환한다.
  2. 묵시적 타입 변환은 Java에서 확대 변환만 가능하다.
  3. C++에서 묵시적 타입 변환은 축소 변환도 가능하다.
  4. 모든 프로그래밍 언어에서 묵시적 타입 변환은 데이터 손실 없이 안전하게 이루어진다.

정답: 4
해설: 묵시적 타입 변환은 프로그래밍 언어에 따라 다르게 작동한다. Java에서는 확대 변환만 가능하며, C와 C++에서는 확대 변환 및 축소 변환 모두 가능하다. 그러나 모든 프로그래밍 언어에서 묵시적 타입 변환 과정이 항상 데이터 손실 없이 안전하게 이루어진다고 말할 수는 없다. 특히 축소 변환의 경우 데이터 손실의 위험이 있다.

28. C 언어의 포인터 연산에 대한 설명으로 맞는 것은?

  1. 포인터 연산에서 덧셈 연산자는 메모리 주소의 절대값을 증가시킨다.
  2. 포인터 간의 뺄셈 연산은 두 포인터 사이의 메모리 주소 차이를 반환한다.
  3. 포인터 연산에서 곱셈 연산자는 사용될 수 없다.
  4. 포인터 연산은 배열의 인덱스와 동일하게 작동한다.

정답: 2
해설: 포인터 연산에서 뺄셈 연산자는 두 포인터 사이의 메모리 주소 차이를 반환하며, 이는 두 객체 사이에 몇 개의 객체가 존재하는지를 알 수 있게 한다. 덧셈 연산자는 메모리 주소의 절대값을 증가시키지 않으며, 포인터 연산에서 곱셈 연산자는 사용되지 않는다. 포인터 연산은 배열의 인덱스와 유사하게 작동할 수 있지만 동일하게 작동하는 것은 아니다.

반응형