C ++의 연산자

시스템 설계 면접 질문 너무 개방적이어서 올바른 준비 방법을 알기가 너무 어렵습니다. 이제 구매 후 Amazon, Microsoft 및 Adobe의 디자인 라운드를 해독할 수 있습니다. 이 책은. 매일 수정 하나 디자인 질문 그리고 나는 당신이 디자인 라운드를 깨뜨릴 수 있다고 약속합니다.

C ++는 다양한 유형의 연산자를 제공합니다. 이러한 연산자를 변수 및 리터럴과 함께 사용하여 결과를 얻을 수 있습니다. 다음과 같은 기본적인 산술 연산자를 알고 있습니다. +,-, *, / 및 %. 그러나 C ++ 프로그래밍 언어에서 제공하는 다른 많은 연산자가 있습니다. 모든 연산자는 다음 범주로 나눌 수 있습니다.

  • 산술 연산자
  • 관계 연산자
  • 논리 연산자
  • 비트 연산자
  • 할당 연산자
  • 기타 연산자

산술 연산자

이 유형의 연산자는 기사에서 논의됩니다. C ++ 변수 유형. 기본 산술 연산자는 다음과 같습니다. +,-, *, /, %. 이러한 연산자 외에도 변수 값을 늘리거나 줄이는 두 가지 연산자가 있습니다. 증분 연산자는 ++ 감소 연산자는 -. 이러한 연산자는 변수 앞 (접두사)과 변수 뒤 (접두사)와 같이 사용할 수 있습니다. 예를 들어 다음과 같은 방법으로 변수 값을 변경할 수 있습니다.

int a = 0;
++a; //now "a" is 1
cout << a << endl;
a++; //now "a" is 2 
cout << a << endl;
--a; //decrement a. it's 1 now 
cout << a << endl;
--a; //decrement a; it is 0 now 
cout << a;
cin.ignore();

프로그램의 출력은 다음과 같아야합니다.
1
2
1
0

아래 코드는 사전 증가가 먼저 값을 증가시킨 다음 값을 변수에 할당한다는 것을 설명합니다. 포스트 증분은 먼저 값을 할당 한 다음 증분합니다.

  
a = ++b; // a==4, b==4
a = b++; // a==3, b==4

아래 코드는 사전 및 사후 증분을 사용하여 변수 값을 표시합니다.
  
int main()
{
  	int i = 0;
	while(i < 10)
	{
		cout << i++; //post increment
	}
	cout << endl;
	i = 0;
	while(i<10)
	{
		cout << ++i; //pre increment
	}	
	return 0;
}

아래는 위 프로그램의 출력입니다.

0123456789
12345678910

관계 연산자

이 연산자 범주는 다른 값을 비교하는 데 사용됩니다. 작업 결과는 부울 값 (true 또는 false)입니다. 관계 연산자는 Operand1 형식으로 사용됩니다. 연산자 Operand2, 여기서 피연산자는 비교되는 일부 변수 또는 리터럴 일 수 있습니다. 다음은 관계 연산자 목록입니다.

연산자
설명
 ==  동일  피연산자가 같으면 true를 반환합니다. 그렇지 않으면 거짓입니다.
 !=  같지 않음  피연산자가 같지 않으면 true를 반환합니다. 그렇지 않으면 거짓입니다.
 <  미만  operand1이 operand2보다 작 으면 true를 반환합니다. 그렇지 않으면 거짓입니다.
 >  보다 큰  operand1이 operand2보다 크면 true를 반환합니다. 그렇지 않으면 거짓입니다.
 <=  작거나 같음  operand1이 operand2보다 작거나 피연산자 2와 같으면 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
 >=  크거나 같음  operand1이 operand2보다 크거나 피연산자 2와 같으면 true를 반환합니다. 그렇지 않으면 false를 반환합니다.

이제 이러한 연산자를 사용해 볼 수 있습니다. "cout"은 true 인 경우 1을, false 인 경우 0을 출력합니다.

int three = 3;
int five = 5;
cout << " 3 is equal to 5 = " << (three == five) << endl;
cout << " 3 is not equal to 5 = " << (three != five) << endl;
cout << " 3 is less than 5 = " << (three < five) << endl;
cout << " 3 is greater than 5 = " << (three > five) << endl;
cout << " 3 is not less than 5 = " << (three >= five) << endl;
cout << " 3 is not greater than 5 = " << (three <= five) << endl;

위 코드의 출력은 다음과 같습니다.

3은 5 = 0과 같습니다.
3은 5 = 1과 같지 않습니다.
3은 5 = 1보다 작습니다.
3은 5 = 0보다 큽니다.
3은 5 = 0 이상입니다.
3은 5 = 1보다 크지 않습니다.

논리 연산자

C ++는 부울 대수에서 3 가지 연산을 제공합니다.
및 (결합) 연산자 &&
또는 (분리) 연산자 ||
not (부정) 연산자 !

2개의 변수 x 및 y에 대한 부울 연산의 결과는 다음과 같습니다. 테이블:

X

Y

X 및 Y

X || 와이

그릇된

그릇된

그릇된

그릇된

참된

그릇된

그릇된

참된

그릇된

참된

그릇된

참된

참된

참된

참된

참된

X

!X

그릇된

참된

참된

그릇된

다음은 부울 연산자 사용의 예입니다.

//initialize x with true
bool x = true;
//initialize y with false
bool y = false;
//now x is x AND y (false)
x = x&&y;

비트 연산자

비트 연산자는 논리 연산자와 유사하지만 비트에 대해 동일한 논리 연산을 수행합니다. 메모리의 모든 데이터는 이진 형식으로 표시됩니다. 따라서 비트 형식의 변수에는 0 또는 1 만 포함됩니다. 다음 표는 비트 연산자에 대한 연산 결과를 나타냅니다.

X Y X 및 Y X | 와이 X ^ Y
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

C ++에서는 다음과 같은 비트 연산자를 사용할 수 있습니다.

이진 AND 연산자 "&"

결과 비트는 두 변수 모두 해당 비트에 1이있는 경우에만 1로 설정됩니다. 바이너리 & :

10100110 & 00101010 = 00100010

이진 OR 연산자 "|"

변수 중 하나 이상이 해당 비트에 1이있는 경우 결과 비트는 1로 설정됩니다. 바이너리의 예 | :

10100110 | 00101010 = 10101110

이진 XOR 연산자“^”

변수 중 하나만 해당 비트에 1이있는 경우 결과 비트는 1로 설정됩니다. 바이너리 xor의 예 :

10100110 ^ 00101010 =  10001100

이진 NOT 연산자 "~"

변수의 비트를 뒤집습니다. 예를 들면 :

~10100110 = 01011001

이진 왼쪽 시프트 연산자 "<< N"

'N'비트 수를 왼쪽으로 이동합니다. 간단히 말해서 왼쪽에서 N 개의 비트가 제거되고 N 개의 XNUMX이 오른쪽에 추가됩니다. 예를 들면 :

10100110 << 3 = 00110000

이진 오른쪽 시프트 연산자 ">> N"

'N'비트 수를 오른쪽으로 이동합니다. 간단히 말해서 오른쪽에서 N 개의 비트가 제거되고 N 개의 XNUMX이 왼쪽에 추가됩니다. 예를 들면 :

10100110 >> 2 = 00101001

할당 작업

연산자 "="는 C ++의 할당 연산자이며 왼쪽에있는 개체에 값을 할당합니다. C ++는 위에서 논의한 거의 모든 작업과 할당 연산자를 결합하는 기능을 제공하며 "복합 할당 연산자"를 형성합니다. 예를 들어 아래와 같이 변수에 값을 추가 할 수 있습니다.

int k = 9;
//normal way of adding value
k = k + 7;
//you can add value in a more compact way by combining two operators
//Composite assignment will be
k += 7; // this is equal to k = k + 7

복합 할당은 다음 형식으로 나타낼 수 있습니다.
Expression1

복합 할당 연산자
 Expression2

어디에 복합 할당 연산자 다음 중 하나 일 수 있습니다.

아래 예제에서 X = 10으로 설정하십시오.

복합 할당
운영자
다음과 같음
산출
 +=  X + = 2  X = X + 2  12
 -=  X-= 2  X = X – 2  8
 *=  X * = 2  X = X * 2  20
 /=  X / = 2  X = X / 2  5
 %=  X % = 2  X = X % 2  0
 << =  X << = 2  X = X << 2  40
 >> =  X >> = 2  X = X >> 2  2
 &=  X & = 2  X = X 및 2  2
 ^=  X ^ = 2  X = X ^ 2  8
 |=  X | = 2  X = X | 2  10

보다 효율적인 코드를 위해 Composite Assignment Operator를 사용하는 것이 좋습니다.

X +=10; // will be faster than X = X + 10
X = X + 10; // will be slower than X += 10

기타 연산자

위에 나열된 범주에 포함되지 않은 일부 연산자가 있지만 유용하고 프로그램에서 사용할 수 있습니다.

"sizeof"연산자

sizeof 연산자는 변수 또는 유형의 크기를 반환합니다. 여기서 "크기"는 변수 또는 유형이 사용중인 메모리 바이트 수를 의미합니다.

cout << sizeof(int) << endl; // will print 4
cout << sizeof(x) << endl; // will print size of x

혼수 상태 (“,”) 연산자

Coma ","연산자는 일련의 작업을 수행해야 할 때 사용됩니다. 동일한 유형의 변수 목록을 초기화 할 때 사용했습니다.

double a = 2.0,
       b = 4.3,
       c = 2;

C ++의 연산자 우선 순위

연산자 우선 순위는식이 평가되는 방식을 결정합니다. 일부 연산자는 다른 연산자보다 우선 순위가 높습니다. 예를 들어 곱셈 연산자는 더하기 연산자보다 우선 순위가 높습니다.

예를 들어 a = 2 + 3 * 5; 여기서 a는 연산자 *가 +보다 우선 순위가 높기 때문에 17가 아닌 25이 할당됩니다. 따라서 3 * 5가 먼저 곱해진 다음 2 * 3의 곱셈 결과에 5가 더해집니다.

아래 표에서 우선 순위가 가장 높은 연산자가 테이블 맨 위에 표시되고 가장 낮은 우선 순위를 가진 연산자가 맨 아래에 나타납니다. 식에서 우선 순위가 더 높은 연산자가 먼저 평가됩니다.

운영자
범주
연관성
상위
 () []->. ++ – – 후위 왼쪽에서 오른쪽으로
최고
 + –! ~ ++ – – (유형) * & sizeof 단항 오른쪽에서 왼쪽으로
 * / % Multiplicative 왼쪽에서 오른쪽으로
 +- 첨가제 왼쪽에서 오른쪽으로
 << >> 변화 왼쪽에서 오른쪽으로
 <<=>> = 관계형 왼쪽에서 오른쪽으로
 ==! = 평등 왼쪽에서 오른쪽으로
 & 비트 AND 왼쪽에서 오른쪽으로
 ^ 비트 XOR 왼쪽에서 오른쪽으로
 | 비트 OR 왼쪽에서 오른쪽으로
 && 논리적 AND 왼쪽에서 오른쪽으로
 || 논리적 OR 왼쪽에서 오른쪽으로
 ?: 가정 어구 오른쪽에서 왼쪽으로
 = + =-= * = / = % = >> = << = & = ^ = | = 할당 오른쪽에서 왼쪽으로
 , 콤마 왼쪽에서 오른쪽으로
최저
균열 시스템 설계 인터뷰
Translate »