기본 콘텐츠로 건너뛰기

방송대 방통대 프로그래밍언어론 11강 - 수식과 연산자의 평가 원리 - 요약 노트 시험족보 예상문제 - 올에이클래스

0-썸네일-요약노트-프로그래밍언어론-11강

프로그래밍언어론 11강 - 수식과 연산자의 평가 원리

값을 나타내는 수식과 처리를 나타내는 문장의 차이를 이해하고, 수식이 피연산자와 연산자로 구성되는 방식을 학습한다. 산술·관계·논리 연산자의 기능과 우선순위·결합 방향, 묵시적·명시적 타입 변환, 단락 회로 계산까지 예제를 통해 체계적으로 정리한다.

제1장 수식의 개요

1. 수식의 정의

수식(expression)은 값을 나타내는 표현이다. 수식이 나타내는 값에는 정수, 실수, 문자, 문자열뿐 아니라 C와 C++의 배열 표현, Python의 리스트 표현처럼 복합적인 데이터도 포함될 수 있다. 예를 들어 2, -5.3, 'abc', [2, 3, 1]은 각각 특정 값을 나타내므로 수식이다.

수식은 연산자가 피연산자에 적용된 형태일 수도 있다. 피연산자는 연산이 적용될 값이며 데이터 표현이나 변수가 될 수 있다. 연산자는 피연산자에 적용되어 연산을 수행하는 함수로 볼 수 있으며, 언어가 기본으로 제공하는 기호형 연산자뿐 아니라 일반 함수도 수식에서 연산자의 역할을 할 수 있다.

2. 피연산자와 연산자가 모두 있어야 하는가

모든 수식에 피연산자와 연산자가 함께 나타날 필요는 없다. i + 3은 변수 i와 정수 3이라는 피연산자에 덧셈 연산자가 적용된 수식이다. 그러나 -5.3처럼 결과값 자체를 직접 나타내는 표현, 4처럼 하나의 리터럴, i처럼 하나의 변수도 그 자체로 값을 나타내므로 수식이 된다.

연산 결과가 다시 하나의 값이 되면 더 큰 수식의 피연산자로 사용될 수 있다. 예를 들어 "Good" + " morning"이 문자열 연결을 지원하는 언어에서 평가되면 "Good morning"이라는 값이 된다. 함수 호출도 값을 반환하면 수식이다. f()가 정수 100을 반환하도록 정의되었다면 호출 수식 f()의 값은 100이다.

수식의 형태평가 결과 또는 의미
리터럴4, -5.3표현된 값 자체
변수i변수에 현재 저장된 값
연산자 적용i + 3피연산자에 연산을 적용한 값
함수 호출f()함수가 반환한 값
복합 데이터 표현[2, 3, 1]리스트 같은 복합 값

핵심 정의: 수식인지 판단할 때는 기호형 연산자가 있는지를 먼저 보는 것이 아니라, 그 표현이 하나의 값으로 평가되는지를 확인해야 한다. 리터럴, 변수, 값을 반환하는 함수 호출도 모두 수식이 될 수 있다.

제2장 수식과 문장의 차이

1. 값과 처리의 구분

수식은 값을 나타내는 표현이고, 문장은 처리를 나타내는 표현이다. 여기서 처리란 수식을 계산하는 일뿐 아니라 프로그램의 수행 흐름을 바꾸거나 값을 화면에 출력하는 일도 포함한다. 따라서 두 개념은 단순히 문자의 길이나 줄바꿈 여부로 나뉘지 않고, 언어에서 그 표현이 담당하는 역할로 구분된다.

Python의 3 + 2는 값 5를 계산하는 수식이면서, 독립된 한 줄로 실행될 때는 수식 문장으로도 볼 수 있다. 반면 if k > 1: k = 1은 조건에 따라 수행 흐름을 선택하고 값을 대입하는 처리이므로 문장이다.

2. C와 C++의 수식 문장

C와 C++에서는 수식 끝에 세미콜론 ;을 붙이면 수식 문장이 된다. 예를 들어 i = 3 + 2는 대입 결과를 나타내는 수식이고, i = 3 + 2;는 그 대입 수식을 실행하는 문장이다. printf("Hi")도 함수 호출의 반환값을 갖는 수식이고, printf("Hi");는 출력 함수를 호출하는 수식 문장이다.

하지만 반대 방향은 언제나 성립하지 않는다. 문장 끝의 세미콜론을 제거한다고 모든 문장이 수식이 되는 것은 아니다. C/C++의 if (a > 0) printf("positive\n");는 조건에 따라 수행 흐름을 선택하는 문장이다. 마지막 세미콜론을 지워도 if 구문 전체가 값을 나타내는 수식으로 바뀌는 것이 아니라, 불완전하거나 잘못된 문장이 될 뿐이다.

“수식에 세미콜론을 붙이면 문장이 된다”는 규칙을 “모든 문장에서 세미콜론을 빼면 수식이 된다”로 역으로 적용하면 안 된다. 수식 문장은 문장의 한 종류일 뿐이며, 조건문처럼 원래부터 처리와 제어 흐름을 나타내는 문장도 있다.

구분중심 역할
수식값을 나타내거나 계산3 + 2, f(), i = 5
수식 문장수식을 하나의 처리로 실행i = 5;, printf("Hi");
제어 문장프로그램의 수행 흐름 변경if (a > 0) ...

제3장 산술 연산자와 수식 평가

1. 기본 산술 연산자

산술 연산자는 수치 피연산자에 계산을 적용한다. 대부분의 언어는 덧셈 +, 뺄셈 -, 곱셈 *, 나눗셈 /의 사칙 연산자를 제공한다. 연산 기호가 같아도 피연산자의 타입과 언어 규칙에 따라 정수 나눗셈이나 실수 나눗셈처럼 구체적인 결과가 달라질 수 있다.

언어별로 추가 연산자도 제공한다. C와 C++은 나머지 %, 전위·후위 증가 ++, 전위·후위 감소 --, 단항 부호 +-를 제공한다. Python은 몫 //, 나머지 %, 거듭제곱 **, 단항 부호 연산자를 제공한다.

언어연산자의미
C, C++%나머지
C, C++++i, --i값을 먼저 1 증가 또는 감소
C, C++i++, i--현재 값을 사용한 뒤 1 증가 또는 감소
Python//
Python**거듭제곱
공통 예+x, -x부호 유지 또는 부호 반전

2. 피연산자 개수에 따른 분류

단항 연산자는 하나의 피연산자에 적용되고, 이항 연산자는 두 개의 피연산자에 적용된다. C/C++의 전위 증가 ++i, 후위 증가 i++, 단항 부호 +i-i는 피연산자가 하나이므로 단항 연산자이다. a + b, a * b의 덧셈과 곱셈은 두 값에 적용되므로 이항 연산자이다.

전위 연산자는 연산 기호가 피연산자의 왼쪽에 있고, 후위 연산자는 피연산자의 오른쪽에 있다. 전위 증가와 감소는 값을 먼저 바꾼 뒤 바뀐 값을 수식에서 사용한다. 후위 증가와 감소는 현재 값을 수식에서 먼저 사용한 뒤 피연산자의 저장값을 바꾼다.

3. 연산자 우선순위

하나의 수식에 여러 연산자가 있으면 우선순위에 따라 어떤 연산자가 먼저 피연산자를 묶는지 정한다. C/C++ 산술 연산자의 강의 표에서는 후위 ++·--가 가장 높은 1순위, 전위 ++·--와 단항 부호가 2순위, 곱셈·나눗셈·나머지가 3순위, 덧셈·뺄셈이 4순위, 비트 이동 >>·<<이 5순위이다. 표의 숫자가 작을수록 먼저 결합한다.

예를 들어 2 + 5 * 3에서는 곱셈의 우선순위가 덧셈보다 높으므로 5 * 3을 먼저 계산한다. 따라서 2 + 15가 되어 결과는 17이다. 괄호를 사용하면 기본 우선순위와 다른 계산 순서를 명시할 수 있다.

4. 결합 방향

우선순위가 같은 연산자들이 한 수식에 섞이면 결합 방향에 따라 피연산자를 묶는다. 덧셈과 뺄셈은 좌결합이므로 7 - 4 + 2 - 5를 왼쪽부터 ((7 - 4) + 2) - 5로 평가하여 결과 0을 얻는다.

후위 증가·감소, 곱셈·나눗셈·나머지, 덧셈·뺄셈, 비트 이동은 강의 표에서 좌결합이다. 전위 증가·감소와 단항 부호는 우결합이다. 결합 방향은 연산자들의 우선순위가 같을 때 적용된다는 점이 중요하다. 우선순위가 다르면 먼저 우선순위로 묶고, 같은 순위에서만 결합 방향을 사용한다.

5. 전위·후위 증가와 단항 부호의 결합

변수 i의 초기값이 2일 때 - ++i는 전위 증가와 단항 음수가 같은 우선순위의 우결합 연산자이므로 오른쪽의 ++i부터 평가한다. i가 먼저 3이 되고, 그 값에 단항 음수를 적용하여 수식 결과는 -3이 된다. 평가 뒤 변수 i에는 3이 저장된다.

같은 초기값에서 - i++는 후위 증가의 우선순위가 단항 음수보다 높다. 후위 증가 수식은 현재 값 2를 먼저 제공하고, 변수 i를 3으로 증가시킨다. 제공된 값 2에 단항 음수를 적용하므로 전체 수식 결과는 -2이고, 평가 뒤 i는 3이다.

시험 포인트: - ++i- i++는 모두 최종적으로 i를 1 증가시키지만 수식이 사용하는 값의 시점이 다르다. 초기값이 2이면 전자는 -3, 후자는 -2이다.

제4장 타입 변환

1. 타입 변환이 필요한 이유

타입 변환은 주어진 타입의 값을 다른 타입의 값으로 바꾸는 것이다. 하나의 연산에 참여하는 피연산자들의 타입이 서로 다르면 연산 규칙을 적용하기 위해 타입을 맞출 필요가 있다. 예를 들어 7.5 * 4는 실수와 정수의 곱셈이므로 두 값을 어떤 공통 타입으로 계산할지 결정해야 한다.

타입 변환은 묵시적 타입 변환과 명시적 타입 변환으로 나뉜다. 묵시적 변환은 언어 정책과 컴파일러가 자동으로 수행하고, 명시적 변환은 프로그래머가 변환할 타입을 직접 지정한다.

2. 묵시적 타입 변환

묵시적 타입 변환에서는 대부분의 언어가 표현 가능한 데이터 집합이 더 커지는 타입으로 값을 확대한다. 7.5 * 4에서 정수 4를 실수 4.0으로 바꾸면 두 피연산자를 실수 연산으로 처리할 수 있고 결과는 30.0이 된다.

확대 변환은 일반적으로 값의 정보를 유지하면서 표현 범위를 넓히려는 방향이다. 다만 구체적인 자동 변환 규칙은 언어 정책에 의해 정해지므로, 모든 언어가 언제나 같은 결과와 타입을 만드는 것은 아니다.

3. 명시적 타입 변환

명시적 타입 변환 또는 타입 캐스팅은 프로그래머가 원하는 타입을 직접 지정하는 방식이다. 7.5 * (double)4에서는 정수 4를 실수 4.0으로 확대하여 결과 30.0을 얻는다. 이 변환은 자동으로도 일어날 수 있지만 프로그래머가 의도를 분명히 나타낸 것이다.

(int)7.5 * 4에서는 실수 7.5를 정수 7로 축소한 뒤 정수 곱셈을 수행하여 결과 28을 얻는다. 축소 변환은 소수 부분처럼 원래 값의 정보를 잃을 수 있으므로 결과를 주의해야 한다. 명시적 타입 변환은 확대와 축소를 모두 표현할 수 있다.

구분결정 주체결과
묵시적 변환언어 정책에 따라 컴파일러가 자동 수행7.5 * 47.5 * 4.0 = 30.0
명시적 확대프로그래머7.5 * (double)430.0
명시적 축소프로그래머(int)7.5 * 47 * 4 = 28

제5장 관계 연산자와 논리 연산자

1. 관계 연산자

관계 연산자는 두 피연산자를 비교하여 두 값의 관계가 연산자가 나타내는 의미와 일치하는지 확인한다. 결과값은 참 또는 거짓이다. >는 보다 큼, >=는 크거나 같음, ==는 같음, <=는 작거나 같음, <는 보다 작음, !=는 다름을 검사한다.

2 > 1은 두 값의 관계가 조건과 맞으므로 참이고, 7 != 7은 두 값이 같아 “다르다”는 조건과 맞지 않으므로 거짓이다. 관계 연산은 값을 바꾸는 연산이 아니라 비교 결과를 논리값으로 만드는 연산이다.

2. 관계 연산자의 우선순위

관계 연산자는 산술 연산자보다 우선순위가 낮다. 강의의 C/C++ 표에서 대소 비교 >, >=, <=, <는 6순위이고, 동등 비교 ==, !=는 7순위이다. 따라서 산술 계산과 비트 이동을 먼저 묶고 관계를 비교한다.

3 > 2 == 7 - 4 > 1에서는 뺄셈을 먼저 계산해 3 > 2 == 3 > 1이 된다. 대소 비교가 동등 비교보다 우선하므로 양쪽의 3 > 23 > 1이 각각 참이 되고, 마지막에 true == true를 평가하여 전체 결과는 참이다.

3. 관계 연산과 타입 변환

관계 연산에서도 서로 다른 타입의 피연산자를 비교하려면 묵시적 또는 명시적 타입 변환이 일어날 수 있다. C의 정수 나눗셈을 가정한 7 / 2 >= 3.2에서는 먼저 정수 나눗셈 결과 3을 얻는다. 실수 3.2와 비교하기 위해 3이 3.0으로 묵시적으로 확대되고, 3.0 >= 3.2는 거짓이다.

7 / 2 >= (int)3.2에서는 오른쪽 3.2를 정수 3으로 명시적으로 축소한다. 왼쪽 정수 나눗셈 결과도 3이므로 3 >= 3은 참이다. 타입 변환의 위치와 시점이 비교 결과를 바꿀 수 있음을 보여 주는 예이다.

7 / 2의 결과를 바로 3.5로 생각하면 강의 예제를 잘못 해석하게 된다. 두 피연산자가 정수인 C의 정수 나눗셈에서는 먼저 3을 얻고, 그 뒤 관계 비교에 필요하면 3을 3.0으로 확대한다.

4. 논리 연산자

논리 연산자는 참과 거짓을 피연산자로 받아 논리값을 만든다. 논리곱 &&는 두 조건이 모두 참일 때만 참이고, 논리합 ||는 하나 이상이 참이면 참이다. 논리부정 !는 하나의 논리값을 반대로 바꾸는 단항 연산자이다. 따라서 true && false는 거짓이고 !true도 거짓이다.

5. 논리 연산자의 우선순위

C/C++의 강의 표에서는 논리부정 !가 전위 증가·감소와 단항 부호와 같은 높은 2순위이며 우결합한다. 논리곱 &&는 8순위, 논리합 ||는 9순위이며 둘 다 좌결합한다. 즉 논리곱이 논리합보다 먼저 평가된다.

3 > 2 || 5 >= 2 && 3 <= 2에서는 관계 비교를 먼저 적용하여 true || true && false가 된다. 논리곱을 먼저 계산하면 true || false이고, 전체 결과는 참이다.

6. 단락 회로 계산

단락 회로 계산(short-circuit evaluation)은 단축 평가라고도 하며, 일부 피연산자를 계산하지 않고도 전체 수식값을 결정하는 계산법이다. 논리합에서 왼쪽이 참이면 오른쪽 값과 관계없이 전체가 참이므로 오른쪽을 평가하지 않아도 된다. 논리곱에서 왼쪽이 거짓이면 오른쪽 값과 관계없이 전체가 거짓이므로 마찬가지로 평가를 멈출 수 있다.

앞의 수식은 첫 관계식 3 > 2가 참이므로 true || ...가 된다. 단락 회로 계산을 적용하면 오른쪽의 5 >= 2 && 3 <= 2를 계산하지 않고 전체 결과를 참으로 결정할 수 있다. 오른쪽 수식에 함수 호출이나 상태 변경이 있다면 그 동작 자체가 실행되지 않을 수 있으므로, 단축 평가는 결과뿐 아니라 프로그램의 동작에도 영향을 줄 수 있다.

단축 평가 규칙: true || ...는 항상 참이고 false && ...는 항상 거짓이므로, 오른쪽 피연산자를 평가하지 않아도 결과를 확정할 수 있다.

제6장 그 밖의 기본 연산자

프로그래밍 언어는 산술·관계·논리 연산자 외에도 다양한 기본 연산자를 제공할 수 있다. C와 C++의 비트별 논리곱 &, 비트별 배타적 논리합 ^, 비트별 논리합 |는 두 피연산자의 각 비트 위치에 논리 연산을 적용하는 이항 연산자이다. 비트별 논리부정 ~는 하나의 피연산자의 각 비트를 반전하는 단항 연산자이다.

조건 연산자 ?:는 조건, 참일 때의 값, 거짓일 때의 값이라는 세 피연산자를 갖는 삼항 연산자이다. 오른쪽 비트 이동 >>와 왼쪽 비트 이동 <<은 값과 이동할 비트 수라는 두 피연산자를 갖는 이항 연산자이다.

연산자의미피연산자 수
&비트별 논리곱2
^비트별 배타적 논리합2
|비트별 논리합2
~비트별 논리부정1
?:조건 연산3
>>, <<오른쪽·왼쪽 비트 이동2

논리 연산자 &&, ||, !는 참과 거짓을 다루고, 비트 연산자 &, |, ~는 정수 표현의 개별 비트를 다룬다. 기호가 비슷하므로 피연산자의 종류와 연산 목적을 구분해야 한다.

핵심 개념 정리

수식은 값을 나타내는 표현이다. 리터럴이나 변수만으로도 수식이 될 수 있고, 연산자가 피연산자에 적용된 형태나 값을 반환하는 함수 호출도 수식이다. 문장은 수식 계산, 출력, 수행 흐름 변경과 같은 처리를 나타낸다.

C/C++에서는 수식 뒤에 세미콜론을 붙여 수식 문장을 만들 수 있지만, 모든 문장에서 세미콜론을 뺀다고 수식이 되는 것은 아니다. 조건문과 같은 제어 문장은 값을 나타내는 수식과 역할이 다르다.

여러 연산자가 있는 수식은 먼저 우선순위로 묶고, 우선순위가 같을 때 결합 방향으로 묶는다. 전위 증가는 값을 먼저 바꾸어 사용하고 후위 증가는 현재 값을 먼저 사용한 뒤 값을 바꾼다.

타입 변환에는 컴파일러가 언어 정책에 따라 자동으로 수행하는 묵시적 변환과 프로그래머가 직접 지정하는 명시적 변환이 있다. 명시적 변환은 확대와 축소 모두 가능하며 축소 시 값의 일부가 손실될 수 있다.

관계 연산자는 두 값을 비교해 참 또는 거짓을 만들고, 논리 연산자는 논리값들을 결합하거나 부정한다. 논리합의 왼쪽이 참이거나 논리곱의 왼쪽이 거짓이면 단락 회로 계산으로 오른쪽을 평가하지 않고 결과를 확정할 수 있다.

복합 수식을 정확히 평가하려면 피연산자의 현재 값과 타입을 확인하고, 연산자 우선순위, 같은 순위의 결합 방향, 전위·후위 연산의 값 사용 시점, 필요한 타입 변환을 순서대로 적용해야 한다. 논리 수식에서는 마지막으로 단축 평가 때문에 실제로 계산되지 않는 부분이 있는지도 확인해야 한다.

예상문제 20선

1. 수식의 정의로 가장 적절한 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
수식은 하나의 값으로 평가되는 표현이다. 리터럴, 변수, 연산자 적용, 값을 반환하는 함수 호출이 모두 수식이 될 수 있다.

2. 다음 중 수식에 대한 설명으로 옳지 않은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
4, i, f()처럼 기호형 연산자 없이도 값을 나타내는 표현은 수식이다.

3. 수식과 문장의 차이를 바르게 설명한 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
수식의 중심은 값이고 문장의 중심은 계산·출력·흐름 변경 같은 처리이다. 수식 문장처럼 두 역할이 연결되는 경우도 있다.

4. C/C++의 수식과 세미콜론에 대한 설명으로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
i = 5 같은 수식에 세미콜론을 붙이면 실행할 수식 문장이 된다. 그러나 조건문 같은 모든 문장을 역으로 수식으로 바꿀 수 있는 것은 아니다.

5. Python에서 거듭제곱을 나타내는 산술 연산자는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
Python의 **는 거듭제곱 연산자이다. //는 몫, %는 나머지를 구한다.

6. C/C++에서 후위 증가 수식 i++의 의미는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
후위 증가는 증가 전 값을 수식의 결과로 제공하고, 그 뒤 변수에 저장된 값을 1 증가시킨다.

7. 수식 2 + 5 * 3의 평가 결과는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
곱셈이 덧셈보다 우선하므로 5 * 3을 먼저 계산해 15를 얻고, 2를 더해 17이 된다.

8. 7 - 4 + 2 - 5가 왼쪽부터 평가되는 이유는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
우선순위가 같은 덧셈과 뺄셈은 좌결합이므로 왼쪽에서 오른쪽으로 피연산자를 묶는다.

9. i의 초기값이 2일 때 - ++i의 결과와 평가 뒤 i의 값은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
전위 증가로 i가 먼저 3이 되고, 단항 음수가 그 값에 적용되어 수식 결과는 -3이다.

10. i의 초기값이 2일 때 - i++의 결과와 평가 뒤 i의 값은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
후위 증가는 현재 값 2를 먼저 제공하고 i를 3으로 바꾼다. 제공된 2에 음수를 적용해 결과는 -2이다.

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

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
묵시적 변환은 프로그래머가 직접 쓰지 않아도 언어의 타입 정책에 따라 자동으로 일어난다. 많은 언어가 확대 방향을 기본으로 사용한다.

12. 강의 예제에서 (int)7.5 * 4의 결과는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
실수 7.5를 정수로 명시적 축소하면 7이 되고, 7 * 4를 계산하여 28을 얻는다.

13. 관계 연산자의 일반적인 결과 타입에 해당하는 값은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
관계 연산은 두 피연산자의 관계가 조건에 맞는지 검사하므로 결과는 논리값 참 또는 거짓이다.

14. 수식 3 > 2 == 7 - 4 > 1의 평가 결과는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
뺄셈 뒤 두 대소 비교가 각각 참이 되고, 마지막에 true == true를 평가하므로 전체가 참이다.

15. C의 정수 나눗셈을 기준으로 7 / 2 >= 3.2의 결과가 거짓인 이유는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
7 / 2는 정수 3이고, 관계 비교에서 실수 3.0으로 확대된다. 3.0 >= 3.2는 거짓이다.

16. 논리 연산자와 의미를 바르게 연결한 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
!는 하나의 논리값을 반대로 바꾸는 논리부정 연산자이다. &&는 논리곱, ||는 논리합이다.

17. true || true && false의 결과는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
&&||보다 우선하므로 오른쪽이 먼저 거짓이 되고, true || false의 결과는 참이다.

18. 단락 회로 계산에서 오른쪽 피연산자를 평가하지 않아도 되는 경우는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
논리합의 왼쪽이 참이면 전체가 참이고, 논리곱의 왼쪽이 거짓이면 전체가 거짓이므로 오른쪽이 결과를 바꿀 수 없다.

19. C/C++의 조건 연산자 ?:가 갖는 피연산자 수는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
조건 연산자는 조건, 참일 때 선택할 값, 거짓일 때 선택할 값의 세 피연산자를 사용하는 삼항 연산자이다.

20. 논리 연산자와 비트 연산자를 바르게 구분한 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
&&는 참·거짓 조건을 결합하고, &는 정수 표현의 대응 비트에 논리곱을 적용한다.

댓글