[C] 연산자에 대한 자세한 설명


오늘은 C 언어 연산자에 대해 자세히 소개하겠습니다.C 언어에는 주로 다음과 같은 유형의 연산자가 있습니다.

1. 산술 연산자
2. 시프트 연산자
3. 비트 연산자
4. 할당 연산자
5. 단항
연산자 6. 관계 연산자
7. 논리 연산자 8.
쉼표 식
9. 조건 연산자
9. 다음 첨자 참조, 함수 호출 및 구조체 멤버

다음으로 자세한 소개를 하겠습니다!

산술 연산자

+ - * / %

그 중 덧셈과 뺄셈은 수학에서와 같고 곱셈은 C언어에서 *로 표시되며 나머지는 수학에서와 같다.
C언어에서 나눗셈은 정수 나눗셈과 십진 나눗셈으로 나뉘는데, 정수 나눗셈/두 번 모두 정수여야 하고, 십진 나눗셈/양변은 소수만 있으면 됩니다. 예를 들어:

#include <stdio.h>

int main()
{
    
    
	printf("%d\n", 2 / 3);
	printf("%lf\n", 2 / 3.0);
	printf("%lf\n", 2.0 / 3.0);
	printf("%lf\n", 2.0 / 3);
	return 0;
}

코드 실행 결과:
여기에 이미지 설명 삽입
나머지를 구하는 % 나머지 연산자도 있습니다.

시프트 연산자

<< 왼쪽 시프트 연산자
>> 오른쪽 시프트 연산자

시프트 연산자는 이진 비트에서 작동하므로 여기에 지식 포인트, 원래 코드, 역 코드 및 보완 코드를 추가합니다.
부호 있는 정수의 경우 이진에서 최상위 비트는 부호 비트입니다.
양수의 원부호, 역부호, 보수부호는 모두 같다.
음수의 원래 코드는 이진 형식으로 작성됩니다. 보수 코드는 부호 비트가 변경되지 않고 나머지 비트가 반전됨을 의미하며 보수 코드는 보수 코드에 1을 더한 것과 같습니다.

왼쪽 이동 연산자는 모든 이진 비트를 왼쪽으로 이동하고 왼쪽은 버리고 오른쪽에 0을 더하는 것을 의미합니다.
오른쪽 시프트 작업에는 두 가지 유형이 있습니다.

  1. 논리적 시프트는 왼쪽을 0으로 채우고 오른쪽을 버립니다.
  2. 산술 시프트의 왼쪽은 원래 값의 부호 비트로 채워지고 오른쪽은 버려집니다.

코드 데모

#include <stdio.h>

int main()
{
    
    
	printf("%d\n", 5 >> 1);
	printf("%d\n", 5 << 1);
	return 0;
}

코드 실행 결과:
여기에 이미지 설명 삽입
시프트 연산자의 경우 음수를 이동하지 마십시오. 이는 표준에서 정의되지 않습니다.

비트 연산자

& 비트 및
| 비트 또는
^ 비트 배타적 또는

비트 연산자는 이진 비트에서도 작동합니다.
& 연산자는 두 숫자의 이진수에 해당하며 1은 1이고 0이 있으면 0입니다.
| 연산자는 두 숫자의 이진수에 해당하며 0은 0이고 1이 있으면 1입니다.
^ 연산자에서 두 숫자는 비트가 0과 같고 차이는 1입니다.
코드 데모:

#include <stdio.h>

int main()
{
    
    
	printf("%d\n", 1 & 2);
	printf("%d\n", 1 | 2);
	printf("%d\n", 1 ^ 2);
	printf("%d\n", 1 ^ 2 ^ 1);
	printf("%d\n", 1 ^ 1 ^ 2);

	return 0;
}

실행 결과
여기에 이미지 설명 삽입
실행 결과에서 ^ 연산자가 교환법칙을 만족하는 것도 볼 수 있습니다.

대입 연산자(=)

대입 연산자는 이전에 만족하지 못했던 값을 얻을 수 있게 해주는 훌륭한 연산자입니다. 즉, 자신을 재지정할 수 있습니다.

복합 할당 연산자

+=
-=
* =
/=
%=
>>=
<<=
&=
|=
^=

이러한 연산자는 모두 복합 효과로 작성할 수 있습니다.
예를 들어 a+=b는 a=a+b와 동일합니다.

단항 연산자

!논리적 역연산

- 음수 값

+ 양수 값

& 주소 받기

sizeof 피연산자의 유형 길이(바이트)

~ 숫자의 비트 반전

– prepend, postpend –
++ prepend, postpend++ *
* 간접 액세스 연산자(역참조 연산자)
(유형) 강제

sizeof(배열 이름)는 전체 배열이 차지하는 공간의 크기를 계산합니다
.
++ 앞에 변수를 먼저 1에 더한 뒤 사용한다.
++ 다음에 변수의 값을 먼저 사용한 후 1을 더합니다.
역참조 연산자는 포인터가 가리키는 콘텐츠를 가져올 수 있습니다.

관계 연산자

>
>=
<
<=
!= "같지 않음" 테스트용

==는 "동일성을 테스트하는 데 사용됩니다.

이러한 관계 연산자는 상대적으로 간단하며 말할 것도 없습니다.

논리 연산자

&& 논리 및
|| 논리 또는

&&는 양쪽이 모두 참일 때만 참, 그렇지 않으면 거짓, 왼쪽이 거짓이면 오른쪽은 연산을 수행하지 않는다.
|| 양쪽 모두 거짓이면 거짓, 둘 다 참이면 왼쪽이 참이면 오른쪽은 연산을 수행하지 않는다.

쉼표 표현

exp1, exp2, exp3, ...expN

쉼표 식은 왼쪽에서 오른쪽으로 평가되며 마지막 식의 값이 최종 식의 값입니다.
코드 데모

#include <stdio.h>

int main()
{
    
    
	int num = 0;
	num = (3 + 2, 2 + 4, 5 + 5);
	printf("%d\n", num);
	return 0;
}

연산 결과
여기에 이미지 설명 삽입

조건 연산자

특급1 ? 특급2 : 특급3

이 연산자는 exp1이 참이면 exp2를 최종 결과로 계산하고, 그렇지 않으면 exp3을 최종 결과로 계산합니다.
예를 들어 두 숫자의 최대값을 찾습니다.

최대 = (a > b?a:b);

첨자 참조, 함수 호출 및 구조체 멤버

1.[ ] 첨자 참조 연산자
피연산자: 배열 이름 + 인덱스 값
2. ( ) 함수 호출 연산자는 하나 이상의 피연산자를 허용합니다. 첫 번째 피연산자는 함수 이름이고 나머지 피연산자는 함수에 매개변수로 전달됩니다.
3. 구조의 구성원에 액세스합니다
. 구조. 구성원 이름.
-> 구조 포인터 -> 멤버 이름.

오늘의 나눔은 여기까지입니다. 많은 관심과 성원 부탁드립니다.

추천

출처blog.csdn.net/bushibrnxiaohaij/article/details/131471216