JS를 통해 알고있던 내용은 최대한 덜어냈습니다
다른 점이나 중요한 점, 애매하게 알고있던 점만 복습 차원에서 올림!
프로그램에 실행시 빌드 옵션 있음
+a, -a...
b = a+c, b+=a...
condition ? A : B
JS에도 있는 삼항연산자가 C#에도 있구나?
++a
와 a++
의 차이는 뭘까?
먼저 ++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
&
: 둘 다 참이면 참|
: 둘 중 하나만 참이어도 참^
: 두 값이 같으면 거짓, 두 값이 다르면 참<<
: 비트를 왼쪽으로 한 칸씩 옮김.>>
: 비트를 오른쪽으로 한 칸씩 옮김.