[C언어] 연산자

강지원·2024년 5월 24일

리눅스 기반 C언어

목록 보기
8/24

연산자

대입 연산자

int a = 3; //초기화

산술 연산자

int a = 10;
int b = 5;

printf("%d",a+b); // 더하기
printf("%d",a-b); // 빼기
printf("%d",a*b); // 곱하기
printf("%d",a/b); // 나누기
printf("%d",a%b); // 나머지

printf("%d",a++); // 출력 후 1 증가
printf("%d",++a); // 1 증가 후 출력
printf("%d",a--); // 출력 후 1 감소
printf("%d",a++); // 1 감소 후 출력

연산자 우선순위

우선순위가 있지만 코드를 보면 직관적으로 의도를 알 수 있도록 괄호() 사용하기 !

관계 연산자

a > b // a가 b보다 크다
a < b // a가 b보다 작다
a >= b // a가 b보다 크거나 같다
a <= b // a가 b보다 작거나 같다
a == b // a와 b는 같다
a != b // a와 b는 같지 않다

논리 연산자

맞으면 1, 틀리면 0
c언어에서 0이 아니면 전부 맞다는 것

논리연산 결과가 맞으면 1로 표시
틀리면 0으로 표시

a && b //AND 연산 : 둘 다 참이면 참
a || b //OR 연산 : 둘 중 하나이상 참이면 참
!(a > b) //NOT 연산 : 참이면 거짓, 거짓이면 참

논리 연산 버그(?)

a = 1;
b= -2;

d = a || b; // a = 1이기때문에 컴파일러는 b를 무시하고 d에 1을 넣음

if(isRunning() || isHot()){
	turnOffHeater();
}
-> isHot() 을 확인하지 않는 버그가 생길 수도 있다

할당 연산자

// 자신에 오른쪽 값을 더해 넣는다
a += 1;
a = a + 1;

// 자신에 오른쪽 값을 빼 넣는다
a -= 1;
a = a - 1;

// 자신에 오른쪽 값을 곱해 넣는다
a *= 2;
a = a * 2;

// 자신에 오른쪽 값을 나눠 넣는다
a /= 2;
a = a / 2;

// 자신에 오른쪽 값을 나누어 나머지를 넣는다
a %= 2;
a = a % 2;

비트 연산자

임베디드는 레지스터 값을 수정하는 경우가 많기 때문에 비트연산자를 알고 있어야 한다

a & b // and 연산
a | b // or 연산
a ^ b // xor 연산
~ a // not 연산
a << 1 // 오른쪽으로 1비트 shift
a >> 1 // 왼쪽으로 1비트 shift

비트 연산이 cpu 연산 속도가 훨씬 빠르다

a << 1   // a * 2랑 같다
a >> 1   // a / 2랑 같다

삼항 연산자

if문 대신 간단하게 사용 가능하다

조건 ? 참일 때 값 : 거짓일 때 값
#include <stdio.h>

int isRunning();

int main(){

        //참은 0이 아니면 참이다
        //거짓은 0이다

        (1) ? printf("print 1\n") : printf("not\n");

        (0) ? printf("print 1\n") : printf("not\n");

        (isRunning()) ? printf("참\n") : printf("거짓\n");

        return 1;

}
int isRunning(){

        int a = 3;
        int b = 2;

        if(a > b){
                return 1;
        }else{
                return 0;
        }
}

형 변환

명시적 형 변환

int i = 3;
double d = 3.4;

printf("%d\n",((int)d + i);

자동 형 변환

int i = 3;
double d = 3.4;

printf("%f\n",(d + i);
// 자동으로 int i가 double로 바뀜

0개의 댓글