산술 연산자 : 전치연산/후치연산
a = 1;
b = ++a +1; //먼저 증가시키고 치환한다, 2+1=3을 b에 넣는다, a=2이다
c = a++ +1; //연산 후에 치환한다, c=3, 그 다음에 a=3
a | b | c |
2 | ||
1 | ||
2 | 4 (1과 3을 더한 것) | |
3 | 6 (a에 1을 더한 3에 3을 더한 것) | |
3 | 4 | 6 |
프로그래밍은 적으면서 해야 편하다(디버깅)
처음에는 낯설지만 하다 보면 점점 쉬워진다
하지만 반드시 디버깅 해야한다
안다고 머리로 풀면 백퍼센트 틀린다. 한 줄 한 줄 시키는대로 그대로 추적해서 그대로 써야 한다
C언어의 관계 연산자와 비트 연산자, 논리연산자
관계 연산자는 두 수의 대소를 비교하고, 비트 연산자는 컴퓨터가 저장하는 최소 단위인 비트끼리 연산하는 것이다
우선순위는 산술 연산자 > 관계 연산자 > 논리 연산자 ( not > and > or)
a | b | c | d | e | f |
5 | 7 | ||||
5 | |||||
7 | |||||
2 | |||||
-8 | |||||
2 | |||||
56 |
- c언어는 정수형이 4바이트, 즉 32비트까지 나타낼 수 있다
- a를 1바이트(8비트)로 나타내면 00000101 이다
- b를 1바이트(8비트)로 나타내면 00000111 이다
- a & b 는 00000101 = 5
- a | b 는 00000111 = 7
- a ^ b는 00000010 = 2
- ~b는 비트 부정이기 때문에 반대로 바꿔준다 즉, -8이 된다
- 11111000 ⇒ 앞자리는 부호비트, 원래 값은 2의 보수로 표현된 것을 다시 2의 보수로 만든다(1의 보수에 1을 더한다) 오른쪽부터 처음 1이 나올때까지는 그대로 써주고, 그 다음부터는 반대로 써준다
- a >> 1은 오른쪽으로 1비트씩 이동한다
- 00000101 → 00000010 = 2
- b << 3은 왼쪽으로 3비트씩 이동한다
- 00000111 → 00111000 = 56
a | b | c | d | e |
2 | 3 | |||
0 | ||||
1 | ||||
1 |
- false는 0, true는 1이다
- c = a > 3 && b > 2
- a는 2이므로 false이고 and 연산이므로 0이다
- a는 2이므로 false이지만 b는 3으로 true이고 or 연산이므로 1이다
- e는 !c이므로 1이다
대입 연산자
a | b | c |
2 | 3 | 4 |
4 | 6 | 0 |
- a+=2는 a+2를 한 것을 대입한 것이다
- b*=2는 b*2를 한 것을 대입한 것이다
- c%=2는 2로 나눈 것의 나머지를 대입한 것이다
조건 연산자
말 그대로 조건에 맞는 것을 수행하며 항이 3개라 삼항 연산자라고도 한다.
형식 : 조건 ? 수식1 : 수식2;
조건이 참이면 수식1이, 조건이 거짓이면 수식2가 실행된다
a | b | c | d |
10 | 20 | ||
20 | |||
10 |
- c = a>b? a : b; //a가 b보다 크다면 a를, 그렇지 않다면 b를 대입한다
- b = a>b? a-b : b-a; //a가 b보다 크다면 a-b를, 그렇지 않다면 b-a를 대입한다
'컴퓨터 일반 > 프로그래밍언어론' 카테고리의 다른 글
프로그래밍언어 문제(2) (2) | 2024.10.21 |
---|---|
프로그래밍언어 문제(1) (0) | 2024.10.21 |
프로그래밍(4) C언어 포인터, 배열 (6) | 2024.10.17 |
프로그래밍(3) 제어문 (1) | 2024.10.16 |
프로그래밍(1) 순서도, C언어 기초 (3) | 2024.10.16 |