[ C언어 ] C언어의 연산자

Dongchan Alex Kim·2024년 4월 3일
post-thumbnail

대입 연산자 '=' : 왼쪽 변수에 오른쪽 값을 대입해준다.

산술 연산자(+, -, *, /, %)

int main(){
	int a = 5;
    int b = 3;
    printf("%d\n", a+b)
    printf("%d\n", a-b)
    printf("%d\n", a*b)
    printf("%d\n", a/b)
    printf("%d\n", a%b)
    return 0;
}

%(나머지 연산자)의 메커니즘 : a%b에서 a가 음수라면 결과도 음수

#include <stdio.h>

int main(){
	int n1 = 5;
    int n2 = 3;
    printf("%d %d\n", n1/n2, n1%n2);
    n1 = 5;
    n2 = -3;
    printf("%d %d\n", n1/n2, n1%n2);
    n1 = -5;
    n2 = -3;
    printf("%d %d\n", n1/n2, n1%n2);
    return 0;
}

복합 대입 연산자: 왼쪽 변수에 오른쪽에 계산된 값을 연산하여 대입한다.

  • += : 오른쪽 값을 더해 왼쪽에 대입 (a+=b는 a=a+b와 같다.)
  • -= : 오른쪽 값을 빼 왼쪽에 대입 (a-=b는 a=a-b와 같다.)
  • = : 오른쪽 값을 곱해 왼쪽에 대입 (a=b는 a=a*b와 같다.)
  • /= : 오른쪽 값을 나눈 몫을 왼쪽에 대입 (a/=b는 a=a/b와 같다.)
  • %= : 오른쪽 값으로 나눈 나머지를 왼쪽에 대입 (a%=b는 a=a%b와 같다.)
#include <stdio.h>
int main(){
	int a=5;
    int b=3;
    a+=b;
    printf("%d\n", a);
    a*=b;
    printf("%d\n", a);
    b-=a;
    printf("%d\n", b);
    
    return 0;
}
#include <stdio.h>
int main(){
	int a=5;
    int b=3;
    a*=(b+2)*3;
    printf("%d\n", a);
    return 0;
}

a++, ++a: a에 1을 더해 저장 (a=a+1, a+=1)

a--, --a: a에 1을 빼 저장 (a=a-1, a-=1)

차이점? => 우선순위!
연산자가 앞에 붙으면(전위 연산자) -> 연산 먼저 실행 후 대입
연산자다 뒤에 붙으면(후위 연산자) -> 대입 후 연산 실행

#include <stdio.h>
int main(){
	int a=5;
    int b=3;
    int c = a++;
    int d= --b
    printf('%d %d %d %d", a,b,c,d);
    
    return 0;
}
  • 변수에만 사용가능
  • a++ 는 a를 먼저 할당 후 ++
  • ++a 는 증가한 다음에 할당

관계 연산자 : 두 값의 크기를 비교하는 연산(참이면 1, 거짓말이면 0 반환)

##잘못된 사용법!!!
#include <stdio.h>

int main(){
	int a=10;
    printf("%d", 1<= a <= 5);
    return 0;
}

논리연산자 : 조건식을 논리적으로 판단 (참이면 1, 거짓이면 0 반환)

#include <stdio.h>

int main(){
	int a = 1, b = 2, c = 3;
    int res1 = a<b && b>c;
    int res2 = a!=b || c < b;
    int res3 = !(c==b);
    printf("%d %d %d", res1, res2, res3);
    return 0
}

논리연산자의 메커니즘

  • 순서대로 연산하여 왼쪽 연산 수행 이후 오른쪽 연산 수행
  • &&: 순서대로 연산하여 왼쪽 수식이 거짓인 경우 연산을 멈춘 후 거짓(0)으로 취급
  • || : 순서대로 연산하여 왼쪽 수식이 참인 경우 연산을 멈춘 후 참(1)으로 취급

비트 연산자 : 2진수 비트(bit)단위의 연산 수행

#include <stdio.h>

int main(){ 
	char a = 9; // 0000 1010
    char b = 5; // 0000 0101
    char a2 = -9; // 1111 0111
    
    printf("a & b = %d\n", a&b);
    printf("a | b = %d\n", a|b);
    printf("~a = %d\n", ~a);
    printf("a ^ b = %d\n", a^b);
    printf("a >> b = %d\n", a>>2);
    printf("a2 >> 2 = %d\n", a2>>2);
    printf("b << 1 = %d\n", b<<2);
    return 0;
}

삼항 연산자: 항이 3개인 연산자

사용방법 - (조건)?(참일 때 반환값):(거짓일 때 반환값)

#include <stdio.h>
int main(){
	int a = 3;
    int b = 5;
    int res1 = (a<b) ? 11: 22;
    int res2 = (a==b) ? a:a+b;
    int res3 = a?b*b : a*b;
    printf("%d %d %d", res1, res2, res3);
    return 0;
}

콤마 연산자 : 두개의 표현식을 하나로 결합하는 연산자

#include <stdio.h>

int main(){
	int n = (12,23);
    printf("%d", n);
    return 0;
}
profile
Disciplined, Be systemic

0개의 댓글