C#을 배워보자 (2) - 연산자

김영현·2024년 11월 15일
0

C#

목록 보기
2/5

서론

JS를 통해 알고있던 내용은 최대한 덜어냈습니다
다른 점이나 중요한 점, 애매하게 알고있던 점만 복습 차원에서 올림!


VisualStudio에서 빌드 없이 실행 가능한 이유(숙제)

프로그램에 실행시 빌드 옵션 있음


연산자 종류

  • 단항 연산자 : +a, -a...
  • 이항 연산자 : b = a+c, b+=a...
  • 삼항 연산자 : condition ? A : B
    condition이 참이면 A 아니면 B

JS에도 있는 삼항연산자가 C#에도 있구나?

번외) 전위 연산자 vs 후위 연산자

++aa++의 차이는 뭘까?

먼저 ++a는 값을 미리 증가시켜 사용할 수 있다. 이를 어셈블리로 나타내면 다음과 같다

INC a    ; a 값을 증가시킴
MOV result, a ; 증가된 값을 반환

위처럼 단순하게 a의 값을 증가시킨 후 반환한다.

하지만 a++은 어떨까?

MOV temp, a   ; 현재 값을 임시 변수에 저장
INC a         ; a 값을 증가시킴
MOV result, temp ; 원래 값을 반환

위처럼 a라는 변수의 원본 값을 저장한뒤, 그것을 반환한다.

따라서 결과값이 같을때 극한의 최적화를 위해선 ++a처럼 전위연산자를 사용하도록 하자.

대입 연산자

int a = 5;
int b = 6;

int c = a-b; // -1

우측 값을 좌측에 대입한다.
항상 원시타입과 참조타입을 헷갈려하지말자!!

원시타입은 변수에 저장. 참조타입은 변수에 메모리 주소저장
=> call by value, call by reference

비교 연산자

C#의 비교연산자는 ==, !=만 있다. 타입이 달라도 값만 같으면 참이다.

문자열 비교도 지원한다.

참조타입은 다음 시간에 다뤄보자

조건부 논리 연산자

!논리부정 : 부울 반대값 (true => false, false => true)
&&논리곱 : true&&true일 경우만 true고 그외 false
||논리합 : false||false일 경우만 false 그외 true

비트 연산자(2진수)

  • & : 둘 다 참이면 참
  • | : 둘 중 하나만 참이어도 참
  • ^ : 두 값이 같으면 거짓, 두 값이 다르면 참
  • << : 비트를 왼쪽으로 한 칸씩 옮김.

    뒤에 숫자를 사용해서 더 많이 옮길 수 있다.
  • >> : 비트를 오른쪽으로 한 칸씩 옮김.
profile
모르는 것을 모른다고 하기

0개의 댓글