연산자 소개 테이블
산술 연산자
산술 연산자에는 다음 기호가 포함됩니다.
1: +(더하기 기호)
2: -(빼기 기호)
3: *(곱하기 기호)
4: /(나누기 기호)
5: %(나머지 기호
) C 언어 연산이 중요한 역할을 합니다. 아래에서 소개하도록 하겠습니다
1.1: + 및 -
+와 -의 기능은 우리가 수학에서 배운 것과 동일하며 다음과 같은 코드와 같이 덧셈과 뺄셈을 완성하는 데 사용됩니다.
#include<stdio.h>
int main()
{
int a=3+2,b=5-6;
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
여기서 a와 b의 최종 인쇄 결과는 각각 5와 -1입니다.
1.2:*
*수학에서 ×와 같은 의미이며 알고리즘도 같다.
#include<stdio.h>
int main()
{
int a = 3 + 2, b = 5 - 6;
int c = a * b;
printf("%d\n", c);
return 0;
}
앞의 코드를 간단히 수정하여 계산을 통해 c의 값을 -5로 얻고 최종 실행 결과도 -5가 됩니다.
1.3:/
/는 수식을 나누는 것입니다.
#include<stdio.h>
int main()
{
float a = 6 / 4;
int b = 6 / 4;
printf("%f\n", a); //输出 1.000000
printf("%d\n", b); //输出 1
return 0;
}
출력이 1.5가 아닌 이유는 무엇입니까?
사실 나눗셈 부호의 양 끝이 정수이면 정수 나눗셈을 해서 결과도 정수라는 규칙이 있는데,
변수 x의 타입은 float(부동소수점 수)이지만, 의 결과는 6/4는 1.5가 아니라 1.0입니다. 그 이유는 C언어에서 정수 나눗셈은 정수 나눗셈으로 정수 부분만 반환하고 소수 부분은 버려지기 때문입니다.
소수 부분 뒤의 몇 자릿수를 얻으려면 피연산자 중 적어도 하나를 부동 소수점 숫자로 만들 수 있습니다.
#include <stdio.h>
int main()
{
float x = 6.0 / 4; // 或者写成 6 / 4.0
printf("%f\n", x); // 输出 1.500000
return 0;
}
6.0 / 4는 부동 소수점 나눗셈을 하라는 뜻이고 결과는 1.5입니다.
다른 상황을 생각해 봅시다.
include <stdio.h>
int main()
{
int score = 5;
score = (score / 20) * 100;
return 0;
}
위의 코드에서 계산 후 점수가 25가 될 것이라고 생각할 수 있지만 실제로는 점수가 0입니다. 점수
/ 20은 나눌 수 있고 정수 값이 0이 되므로 100을 곱해도 0이 됩니다.
예상 결과를 얻으려면 정수 나누기가 부동 소수점 숫자 나누기가 되도록 제수 20을 20.0으로 변경할 수 있습니다.
include <stdio.h>
int main()
{
int score = 5;
score = (score / 20.0) * 100;
return 0;
}
1.4:%
%는 수학에서는 모듈로 연산이지만 C 언어에서는 두 정수를 나눈 나머지를 반환합니다. 이 연산자는 정수에만 사용할 수 있으며 부동 소수점 숫자에는 사용할 수 없습니다.
#include <stdio.h>
int main()
{
int x = 6 % 4; // 2
return 0;
}
다른 상황을 살펴보겠습니다.
#include <stdio.h>
int main()
{
printf("%d\n", 11 % -5); //结果为 1
printf("%d\n",-11 % -5); //结果为-1
printf("%d\n",-11 % 5); //结果为-1
return 0;
}
이 결과는 일반적인 수학 연산의 결과와 다릅니다
음수의 모듈로에는 규칙이 있습니다: 결과의 부호는 첫 번째 피연산자의 부호에 의해 결정됩니다.
할당 연산자
변수가 생성될 때 초기값을 주는 것을 초기화라고 하고, 변수가 생성된 후에 값을 주는 것을 대입(assignment)이라고 합니다.
int a = 100;//初始化
a = 200;//赋值,这⾥使⽤的就是赋值操作符
할당 연산자 =는 언제든지 변수에 값을 할당할 수 있는 연산자입니다.
2.1: 연속 할당
예를 들어 할당은 연속적일 수 있습니다.
int a = 3;
int b = 5;
int c = 0;
c = b = a+3;//连续赋值,从右向左依次赋值的。
이 코드는 또한
int a = 3;
int b = 5;
int c = 0;
b = a+3;
c = b;
하지만 이해하고 관찰하기 더 쉽기 때문에 개인적으로 두 번째 코드를 추천합니다.
2.2: 복합 대입 연산자
코드를 작성할 때 다음 코드와 같이 숫자에 대해 자체 증가 및 자체 감소 작업을 수행하는 경우가 많습니다.
int a = 10;
a = a+3;
a = a-2;
이 코드는 또한
int a = 10;
a += 3;
a -= 2;
따라서 이 두 코드를 통해 a=a+3을 a+=3으로 작성할 수 있음을 알 수 있습니다
. C 언어는 코드 작성에 편리한 복합 대입 기호를 제공합니다.
+= -=
*= /= %=
>>= <<=
&= |= ^=
단항 연산자
위에서 설명한 연산자는 모두 이항 연산자입니다. 단항 연산자라고 하는 피연산자가 하나만 있는 C 언어의 일부 연산자도 있습니다.
즉 ++, –, +, -입니다.
3.1++ 및 –
++도 자기증가 연산자로 pre-++와 post-++로 나뉜다. –도 자기감소 연산자로 pre-–와 post-–
3.1.1: 접두사 ++ 및 접두사 –
전면 ++(먼저 +1한 다음 사용):
int a = 10;
int b = ++a;//++的操作数是a,是放在a的前⾯的,就是前置++
printf("a=%d b=%d\n",a , b);
1
다른 예를 살펴보겠습니다.
int a = 10;
a = a+1;
b = a;
printf("a=%d b=%d\n",a , b);
프로세스는 다음과 같습니다. a는 원래 10, 먼저 +1, 다음 a가 11이 된 다음 b에 할당되고 b는 11을 얻습니다.
앞에 추가 – (먼저 -1을 사용한 다음 사용):
int a = 10;
int b = --a;//--的操作数是a,是放在a的前⾯的,就是前置--
printf("a=%d b=%d\n",a , b);//输出的结果是:9 9
3.1.2: 포스트 ++ 및 포스트 –
뒤로 ++(먼저 사용한 다음 +1 사용):
int a = 10;
int b = a++;//++的操作数是a,是放在a的后⾯的,就是后置++
printf("a=%d b=%d\n",a , b);
다른 예를 살펴보겠습니다.
int a = 10;
int b = a;
a = a+1;
printf("a=%d b=%d\n",a , b);
프로세스는 다음과 같습니다. a는 원래 10이고 먼저 사용됩니다. 즉, 먼저 b에 할당되고 b가 10을 얻은 다음 +1을 얻은 다음 a가 11이 됩니다.
접미사 – (먼저 사용하고 -1을 사용):
int a = 10;
int b = a--;//--的操作数是a,是放在a的后⾯的,就是后置--
printf("a=%d b=%d\n",a , b);//输出的结果是:9 1
3.2: + 및 -
여기서 +는 양수 부호이고 -는 음수 부호이며 둘 다 단항 연산자입니다.
연산자 +는 양수, 음수 값에 영향을 주지 않으며, 완전히 생략할 수 있는 연산자이지만 쓰면 오류가 발생하지 않습니다.
int a = +10; 等价于 int a = 10;
연산자 - 값의 부호를 변경하는 데 사용됩니다. 음수 앞에 -를 더하면 양수가 되고, 양수 앞에 -를 더하면 음수가 됩니다.
int a = 10;
int b = -a;
int c = -10;
printf("b=%d c=%d\n", b, c);//这⾥的b和c都是-10
int a = -10;
int b = -a;
printf("b=%d\n", b); //这⾥的b是10