LINUX - C 성장 의 길 (4): 연산 자
산술 연산 자
연산 자
기능 설명
예 를 들다
+
덧셈
a+b, +n
-
마이너스
a-b, -n
*
곱셈
a * b
/
나눗셈
a / b
%
모형 을 뜨다.
a % b
++
더하기 1
a++,++b
--
덜다
a--, --b
설명: 모델 링% 의 좌우 양쪽 의 조작 수 는 모두 정형 이 어야 한다.추가 와 자동 감 소 는 접두사 와 접두사 두 가지 로 나 뉘 어 있 습 니 다. 아래 코드 를 보 세 요.
int a = 100, b;
int x = 200, y;
b = ++a; // , a 1, , a b 101
x = y++; // , y , 1, x 200, y 201
관계 연산 자
연산 자
기능 설명
예 를 들다
>
... 보다 크다
a > b
>=
... 보다 크다
a >= b
<
... 보다 작다
a < b
<=
이하
a <= b
!=
같 지 않다
a != b
==
... 과 같다
a == b
설명: 관계 연산 자로 구 성 된 표현 식 을 관계 표현 식 이 라 고 합 니 다. 모든 관계 표현 식 의 값 은 불 값 입 니 다. 즉, 진실 이 아니면 가짜 입 니 다.주의해 야 할 것 은 마지막 은 = = 과 같은 번호 이다. 예 를 들 어 a = = b. 만약 에 a 가 b 와 확실히 같다 면 이 표현 식 의 값 은 진실 이 고 그렇지 않 으 면 가짜 이 며 같은 번 호 는 좌우 양쪽 이 똑 같은 지 아 닌 지 를 판단 하 는 데 쓰 이 며 수학 적 의미 의 '같은 번호' 가 아니다.
다시:
논리 연산 자
연산 자
기능 설명
예 를 들다
!
논리
!(a == 100)
&&
논리 와
a==100 && b==200
||
논리
a==100 || b==200
설명:
1. 논리 적 으로 반대 되 는 것 은 표현 식 의 불 값 의 반대 값 입 니 다. 예 를 들 어!(a = = = b) 표현 식 (a = = b) 의 값 이 사실 이 라면 !(a==b) 값 은 가짜 이 고, 반대로 도 마찬가지다.
2. 논리 와, 즉 양쪽 의 표현 식 이 모두 진실 일 때 만 전체 표현 식 이 진실 입 니 다. 예 를 들 어 (a = = 100 & b = = 200) ,... 밖 에 없다 a = = 100 그리고 b = = 200 이 동시에 진짜 일 때 전체 표현 식 이 진짜 입 니 다.논리 와 표현 식 에서 한쪽 표현 식 이 가짜 라면 전체 표현 식 은 가짜 라 는 것 이다.
3. 논리 적 이거 나 양쪽 의 표현 식 이 모두 가짜 일 때 만 전체 표현 식 이 가짜 입 니 다. 예 를 들 어 (a = = 100 & b = = 200) ,... 밖 에 없다 a = = 100 그리고 b = = 200 이 동시에 가짜 일 때 전체 표현 식 이 가짜 입 니 다.논리 나 표현 식 에서 한쪽 표현 식 이 진실 이 라면 전체 표현 식 이 진실 이 어야 한 다 는 것 이다.
위의 설명 을 통 해 알 수 있 듯 이 첫 번 째 표현 식 의 불 값 은 전체 논리 표현 식 의 값 을 결정 할 수 있 습 니 다. 사실은 논리 와 표현 식 의 왼쪽 표현 식 의 불 값 이 가짜 일 때 오른쪽 표현 식 은 무시 되 고 논리 나 표현 식 의 왼쪽 표현 식 의 불 값 이 진짜 일 때 오른쪽 표현 식 도 무시 됩 니 다.
비트 연산 자
연산 자
기능 설명
예 를 들다
~
비트 논리
~a
&
비트 논리 와
a & b
|
비트 논리
a | b
^
비트 논리
a ^ b
<<
왼쪽으로 이동
a<<2
>>
오른쪽으로 이동 하 다
b>>2
비트 연산 자 에서 앞의 세 가 지 는 논리 연산 자 와 대체적으로 일치 합 니 다. 다만 그들의 조작 대상 이 다 를 뿐 논리 연산 자 조작 대상 은 표현 식 이 고 비트 연산 자의 조작 대상 은 위치 입 니 다. 예 를 들 어 ~ a 결 과 는 a 의 모든 사람 에 게 반 대 를 구 하 는 것 입 니 다. a & b 또는 a | b 는 a 와 b 의 모든 사람 에 게 해당 하 는 조작 과 또는 조작 을 합 니 다.비트 차이 또는 논 리 는 똑 같이 0 이 고 다 르 면 1 이다. 예 를 들 어 a = 0000 1001 이다. , b = 0000 1100, 그러면 a ^ b 의 결 과 는 0000 0101 입 니 다.
왼쪽으로 이동 하고 오른쪽으로 이동 하 는 것 은 각각 숫자 를 이동 하 는 작업 이다. 이동 하 는 숫자 를 잃 어 버 리 고 비 운 것 은 0 을 보충 하 는 것 이다. 예 를 들 어 원래 와 같다. a 의 이 진 은 0000 1001 을 표시 합 니 다. a = a < 2;그렇다면 결 과 는? a 의 바 이 너 리 는 (00) 00 100100 맨 왼쪽 에 있 는 두 분 은 버 려 지고 맨 오른쪽 에 0 두 개 를 채 우 며 오른쪽으로 이동 하 는 것 은 똑 같은 이치 입 니 다. 예 를 들 어 b 의 바 이 너 리 는 0001 0110 이 고 b = b > 2 를 실행 하면;그러면 결 과 는 b 의 바 이 너 리 표시 가 됩 니 다. 0000 0101(10) 。
한 가지 예 외 는 이동 하 는 수가 기호 수 이 고 음수 일 때 이다.우 리 는 음수 가 메모리 에 저장 되 어 있 는 것 은 패 치 방식 으로 저장 되 어 있다 는 것 을 알 고 있다. 즉, 그들의 가장 높 은 위 치 는 1 이다. 이때 오른쪽으로 이동 하면 원래 의 양음 번 호 를 유지 하기 위해 시스템 은 0 을 보충 하 는 것 이 아니 라 1 을 보충 할 것 이다. 예 를 들 어 기호 수 c 가 있 는 바 이 너 리 는 1000 1001 이 라 고 표시 하면 c = c > > 2 를 집행 한다. 그렇다면 결 과 는 c 의 이 진 표시 가 111010 (01) 으로 바 뀌 었 다.
이 몇 가지 연산 자 를 제외 하고 C 언어 는 다음 과 같은 몇 가지 특수 한 연산 자 를 포함한다.
1, 할당 연산 자 = 할당 연산 자 는 int a 와 같은 가장 자주 사용 되 는 가장 간단 한 연산 자 입 니 다. a = 100; 여기 = 바로 할당 연산 자 입 니 다. 오른쪽 값 을 왼쪽 변수 에 할당 하 는 것 을 의미 합 니 다.논리 와 동일시 하지 않도록 주의해 라.
2. 메모리 크기 연산 자 sizeof 를 계산 합 니 다. 이 연산 자 는 하나의 변수 나 데이터 형식 이 메모리 에서 차지 하 는 바이트 수 를 계산 하 는 데 사 용 됩 니 다. 예 를 들 어 sizeof (int) 는 int 형식 이 차지 하 는 바이트 수 를 계산 하고 sizeof (a) 는 변수 a 가 차지 하 는 바이트 수 를 계산 합 니 다.
3, 조건 연산 자?: 이 연산 자 는 비교적 특수 하 다. 그것 은 유일한 세 개의 연산 자 이다. 즉, 세 개의 목표 표현 식 이 있다 는 것 이다. 예 를 들 어 (a>b) ? ( a ) : ( b ); 그 속 (a > b), (a) 와 (b) 는 각각 세 개의 목표 표현 식 입 니 다. 그 논 리 는 매우 간단 합 니 다. 먼저 첫 번 째 표현 식 (즉 (a > b) 에 대해 물 어보 세 요. 만약 그것 이 사실 이 라면 두 번 째 표현 식 (a) 의 값 을 전체 표현 식 의 값 으로 합 니 다. 그렇지 않 으 면 세 번 째 표현 식 (즉 (b) 을 전체 표현 식 의 값 으로 값 을 표시 합 니 다.
4, 쉼표 연산 자, 쉼표 는 다른 표현 식 을 분할 하 는 데 사용 되 기 때문에 우선 순위 가 가장 낮 습 니 다. 예 를 들 어 int. a = (x = 100, y = 200, z = x + y, z + 1); 쉼표 로 연 결 된 표현 식 에 대해 서 는 세 가 지 를 기억 하면 됩 니 다. 첫째, 쉼표 의 우선 순위 가 가장 낮 습 니 다. 모두 계산 한 다음 에 다시 고려 하 십시오. 둘째, 계산 순 서 는 왼쪽 에서 오른쪽으로 x = 100, y = 200, 다시 z = x + y, 그리고 z + 1 까지 입 니 다. 셋째, 전체 쉼표 표현 식 의 값 은 맨 오른쪽 표현 식 의 값, 즉 마지막 a 의 값 에 달 려 있 습 니 다. z + 1。
5, 복합 할당 연산 자: += -= *= /= %= >>= <<= &= ^= |=
이 연산 자 들 의 용법 은 a + = b 이다. a = a + b 와 같다 。 a -= (x * y) a = a - (x * y) 이러한 식 으로 유추 합 니 다. 복합 할당 연산 자 를 사용 할 수 있 는 상황 에서 가능 한 한 사용 하 는 것 을 추천 합 니 다. 예 를 들 어 a + = b 비 를 사용 하 는 것 을 추천 합 니 다.
a = a + b 가 좋 습 니 다. 프로그램 이 기계 명령 을 하나 줄 일 수 있 기 때 문 입 니 다.
그리고 몇 가지 흔히 볼 수 있 는 키 워드 를 말 합 니 다.
1, return
이 연산 자 는 함수 에서 사용 합 니 다. 아래 의 설명 을 보십시오.
int func(void)
{
...
...
return 100; // ,
}
int main(void)
{
...
...
return 0; // main ,
}
이 예제 에서 알 수 있 듯 이 return 은 두 가지 역할 을 합 니 다. 일반 함수 에서 사용 하 는 것 과 주 함수 에서 사용 하 는 것 은 다 릅 니 다. 주 함수 에서 의 반환 값 은 부모 프로 세 스 에 전 달 됩 니 다. 비 다 중 프로 세 스 프로그램 에서 이 값 은 의미 가 없습니다. 다 중 프로 세 스 프로그램 에서 main 함수 의 반환 값 은 일반적으로 이렇게 약 정 됩 니 다. 0 으로 돌아 가 는 것 은 정상 이 고 0 세대 가 아 닌 것 으로 돌아 갑 니 다.이상 하 다또한 LINUX 에서 C 프로 그래 밍 은 GNU 확장 문법 을 사용 하고 gcc 는 다음 과 같은 키 워드 를 지원 합 니 다.
2, typeof
변수의 형식 을 가 져 옵 니 다. 예 를 들 어
int a;
typeof(a) b; // int b;
type of 는 복잡 한 매크로 에서 많이 사용 합 니 다. 예 를 들 어 전형 적 으로 최대 치 를 구 하 는 '표준 매크로' 는 다음 과 같 습 니 다.#define MAX(a, b) ({ \
typeof(a) _a = a; \
typeof(b) _b = b; \
(void)( &_a == &_b); \
_a > _b ? _a : _b; \
)}
이 매크로 가 다섯 번 째 줄 을 직접 쓰 는 것 이 아니 라 매크로 매개 변수 가 a + + 와 같은 자체 감소 문자 가 나타 날 때의 부작용 을 피해 야 하기 때 문 입 니 다. 직접 쓰 면 (a > b)? (a): (b)이 경우 자체 마이너스 부 호 를 두 번 연산 할 수 있 으 며, type: of 로 각각 a 와 b 의 유형 을 얻 고, 다른 두 변 수 를 정의 하여 a 와 b 를 교체 하면 이러한 부작용 을 피 할 수 있 습 니 다. 아래 의 예 를 보 세 요.#define MAX_BAD(a, b) ((a>b)?(a):(b))
int a = 100, b = 1, c;
c = MAX_BAD(a++, b); // , c 100, a 101, , a++
위의 예 에서 우리 가 MAX () 를 사용한다 면 MAX BAD () 가 아니 라 상황 이 좋아 질 것 이다.또한 MAX () 의 문 구 는 다음 과 같 습 니 다. (void) (& a = & b) 는 a 와 b 의 유형 이 일치 하 는 지 판단 하 는 데 사 용 됩 니 다. 만약 에 그들의 유형 이 일치 하지 않 으 면 그들의 지침 도 일치 하지 않 을 것 입 니 다. 서로 다른 유형의 지침 을 비교 하면 컴 파일 러 가 경 고 를 보 냅 니 다. 이것 이 바로 표현 식 입 니 다. (& a = = & b) 의 역할 은 컴 파일 러 가 표현 식 때문에 (& a = = & b) "no effect" 경 고 를 보 내 는 데 사 용 됩 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부이 기사에서는 Entity Framework Core Code First 접근 방식을 사용하는 ASP.NET Core 6.0 WEP API의 CRUD(만들기, 읽기, 업데이트 및 삭제) 작업에 대해 설명합니다. 웹 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.