C 언어 수업 11--------연산자의 사용 및 분류-----기본 연산

저자 서문

         저자 소개:

          저자 id : Old Qin Bao you will ,

간략한 소개:

             C언어, 파이썬 등 프로그래밍 언어를 배우는 것을 좋아하고 공유하기를 좋아하는 블로거입니다.

                                개인 홈페이지:: 작은 페이지

                                  gitee 페이지: David Qin


                        공유하기를 좋아하는 작은 블로거가 귀염둥이를 환영합니다
.

______________________________________________________________________

목차

        연산자 클래스

        연산자 사용        

——————————————————————————————————

산술 연산자

+    -   *   /   %

* - +와 같은 연산자는 수학과 동일하게 사용되므로 여기서는 다루지 않겠습니다.

/는 두 가지 용도가 있습니다. 하나는 정수 나눗셈이고 다른 하나는 소수 나눗셈입니다.

#include <stdio.h>
int main()
{
	int a = 20;
	printf("%d\n", a / 5);
	printf("%lf\n", a / 5.0);
	return 0;
}

%는 양쪽 모두 정수일 수 있습니다. 

시프트 연산자(숫자의 2의 보수)

<< 왼쪽 시프트 연산자
>> 오른쪽 시프트 연산자
참고: 시프트 연산자의 피연산자는 정수만 될 수 있습니다.
이 두 가지 유형의 연산자는 주로 2의 보수를 위한 것입니다.
지식을 전파하자
이진수로 정수를 표현하는 세 가지 형식이 있습니다: 소스 코드, 역 코드 및 보완 코드
원래 코드 : 값의 부호에 따라 정수 이진수를 직접 쓰고 양수 부호 비트는 0이고 음수 부호 비트는 1입니다.
C 언어에서 정수의 크기는 4바이트, 즉 32비트입니다. 
부호 있는 정수의 경우 가장 높은 비트는 부호 비트이고, 부호 비트는 음수의 경우 1이고, 부호 비트는 양수의 경우 10입니다.
부호 없는 정수(양수)의 경우 모든 비트가 중요합니다. 0 부호 없는 비트
역코드 : 양수의 역코드는 원래의 양수코드와 같고, 음수의 역코드의 부호비트는 변하지 않고 나머지 비트는 반전된다.
여 부호 : 양수의 여 부호는 양수의 원래 부호와 같고, 음수의 여 부호는 역 부호에 1을 더한 것을 기준으로 함

 

 컴퓨터가 사용하는 것은 반전과 1을 더하는 루틴입니다.

 

 C 언어에서 메모리에 정수를 저장하는 것은 보수(정수는 보수로 메모리에 저장됨)이며 정수도 보수를 사용하여 계산됩니다.

>> 오른쪽 시프트 연산자

범주: 1. 논리적 오른쪽 시프트

            2. 산술 오른쪽 시프트

이 두 개의 오른쪽 시프트는 개인이 아니라 컴파일러에 의해 결정됩니다. vs 컴파일러는 산술 오른쪽 시프트입니다.

#include <stdio.h>
int main()
{
	int m = 7;
	int n = 7 >> 1;
	printf("%d", n);
	return 0;
}

산술 오른쪽 시프트:

 이동하려는 자릿수에 따라 맨 오른쪽에 몇 자릿수를 버리고 맨 왼쪽에 0을 추가하고 음수의 경우 맨 왼쪽에 1을 추가합니다.

논리적 오른쪽 시프트:

 이동하려는 자릿수에 따라 맨 오른쪽에 몇 자릿수를 버리고 맨 왼쪽에 0을 추가합니다.

<< 왼쪽 연산자

이동하려는 자릿수는 맨 왼쪽에서 버리고 맨 오른쪽에서 0으로 채우고,

비트 연산자(숫자의 2의 보수)

& // 비트 AND
| // 비트 또는
^ // 비트별 XOR
참고: 해당 피연산자는 정수여야 합니다.
        이 연산자는 피연산자의 여집합에서도 작동합니다.
#include <stdio.h>
int main()
{
	int a = -5;
	int b = 3;
	printf("%d\n", a & b);
	printf("%d\n", a | b);
	printf("%d\n", a ^ b);
	return 0;
}

 & // 비트 AND

수학의 지식으로, 그것들이 모두 참일 때만 참이며, 두 숫자의 해당 이진수는 모두 1에서 1이고 나머지는 모두 0입니다.

-5 & 3==》00000000 00000000 00000000 00000011 (보완 코드)

| // 비트 또는

수학이나 지인으로 참이 있으면 참이고, 모두 거짓이면 거짓이다 두 수에 해당하는 이진 비트 중 하나만 1이면 1이고 모두 0~ 0이 되다

-5 |3==》111111111111111111111111111010(보완 부호)==》1 0000000 00000000 00000000 00000101(원본 부호)

^ // 비트별 XOR

두 수의 값이 같으면 0, 다르면 1이다.

-5^3==> 11111111111111111111111111000(보완코드) ==》1 0000000 00000000 00000000 00001000(원본코드)

아^아=아

0^a=a

두 숫자의 교호작용을 계산할 때 이 방법을 사용하면 변수를 하나 줄일 수 있는데 이 방법은 가독성이 높지 않으므로 너무 많이 사용하지 않는 것이 좋습니다.

#include <stdio.h>
int main()
{
	int a = 5;
	int b = 6;
	printf("a=%d b=%d\n", a, b);
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	printf("a=%d b=%d\n", a, b);
	return 0;
}

이 연산자는 정수에 적용됩니다.

할당 연산자

=

오른쪽에서 왼쪽으로 할당


복합 할당 연산자


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

이들의 사용은 a = a+b===> a+=b와 동일합니다.

단항 연산자

! 참을 거짓으로, 거짓을 참으로 바꾸는 것으로 거짓이 되면 0이 되고 참이 되면 1이 된다.

 & 주소,

* 역참조 연산자

#include <stdio.h>

int main()
{
	int a = 0;
	printf("%p\n", &a);
	int* p = &a;
	int arr[10];
	int* pa = arr;
	printf("%p\n", pa);
	printf("%p\n", &pa);
	*p = 15;//对p解引用操作,*p是通过p中存放的地址,找到p指向的对象,*p就是a
	printf("%d\n", a);
	return 0;
}

sizeof 계산 결과는 unsigned int(부호 없는 정수)인 size_t 유형을 반환하고 출력 형식은 %zd입니다.

#include <stdio.h>
int main()
{
	int arr[10];
	printf("%zd\n", sizeof arr);
	printf("%zd\n", sizeof (arr));
	printf("%zd\n", sizeof (int));
	printf("%zd\n", sizeof arr / sizeof(int));
	return 0;
}

sizeof는 함수가 아니다. 함수 참조의 ()를 생략할 수 없기 때문이다.

계산 유형 또는 변수의 크기(바이트)입니다.

계산 변수의 크기는 생략 가능(), 계산식을 예약해야 하는 경우()

~           숫자의 비트 반전(부호 비트 포함)
#include <stdio.h>
int main()
{
	int a = 0;
	printf("%d\n", ~a);
	return 0;
}

결과는 -1, 0의 보수 코드는 0000000000000000000000000000000, ~0은 1111111111111111111111111111, 역수에 1을 더하면 원래 코드는 100000000000000000000000000입니다. 00001

즉 -1
#include <stdio.h>
int main()
{
	int a = 2;
	printf("%d", a | (1 << 2));
	printf("%d", (a | (1 << 2)) & (1 << 2));
	return 0;
}

++, -- 사전 위치와 사후 위치의 두 가지 용도가 있습니다.

++

접두사 ++: 먼저 1을 추가한 다음 사용

사후 위치 ++, 처음 사용 + 1

#include <stdio.h>
int main()
{
	int a = 0;
	int b = ++a;
	printf("a=%d  b=%d\n", a, b);
	b = a++; 
	printf("a=%d  b=%d\n", a, b);
	return 0;
}
--

Pre--: 사용하기 전에 1 감소

post--; 먼저 사용한 다음 1을 뺍니다.

#include <stdio.h>
int main()
{
	int a = 0;
	int b = --a;
	printf("a=%d  b=%d\n", a, b);
	b = a--; 
	printf("a=%d  b=%d\n", a, b);
	return 0;
}
( 유형 )       캐스트
#include <stdio.h>
int main()
{
	int a = (int)3.14;
	printf("%d", a);
	return 0;
}

유형 변환은 가능한 많이 사용하지 않아야 합니다.

관계 연산자

> , >= , < , <= , !=   (  " 같지 않음 " 테스트용 ), ==     (   " 같음 " 테스트용 )
프로그래밍 과정에서 == =가 실수로 잘못 작성되어 오류가 발생합니다.

논리 연산자

&&     논리 AND
||           논리적 OR
#include <stdio.h>
int main()
{
	int a = 1;
	int b = 0;
	printf("%d", a && b);
	printf("%d", a || b);
	return 0;
}

단락 동작

#include <stdio.h>
int main()
{
    int i = 0,a=0,b=2,c =3,d=4;
    i = a++ && ++b && d++;
    //i = a++||++b||d++;
    printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
    return 0;
}

&&를 사용할 때 한쪽이 거짓이면 다른 쪽은 셀 필요가 없습니다.

|| 한쪽이 참이면 다른 쪽은 중요하지 않습니다.

요약하다:

여기에 운영자가 표시되며 아래에 소개가 있습니다. 귀염둥이를 이해하지 못하면 개인적으로 채팅 할 수 있습니다

추천

출처blog.csdn.net/m0_69984273/article/details/131989387