C言語에서의 단항 연산자
안녕하세요, 미래의 코딩 슈퍼스타들! 오늘, 우리는 C言語에서의 단항 연산자의 세계로 흥미진진한 여정을 떠날 거예요. 프로그래밍에 새로운 사람이라도 걱정하지 마세요 – 저는 여러분의 친절한 가이드가 될 거고, 이 주제를 단계별로 탐험할 거예요. 그럼, 가상의 배낭을 준비하고, 시작해볼까요!
C言語에서의 증가 연산자
우리는 증가 연산자로 시작해볼게요. 이 연산자는 우리의 변수에 대한 마법의 "+1" 버튼 같아요. C言語에서는 "++"를 사용하여 값을 증가시킵니다. 우리가 물건을 세우거나 시퀀스를 이동하고 싶을 때 매우 유용해요.
증가 연산자를 사용하는 방법이 두 가지 있어요:
- 전위 증가: ++변수
- 후위 증가: 변수++
이제 몇 가지 예제를 살펴보죠:
#include <stdio.h>
int main() {
int cookies = 5;
printf("저는 %d 개의 쿠키가 있어요.\n", cookies);
// 전위 증가
printf("하나 먹고 나면: %d\n", ++cookies);
// 후위 증가
printf("현재 개수: %d\n", cookies++);
printf("계산 후: %d\n", cookies);
return 0;
}
출력:
저는 5 개의 쿠키가 있어요.
하나 먹고 나면: 6
현재 개수: 6
계산 후: 7
이 예제에서, 우리는 5개의 쿠키로 시작해요. 전위 증가(++cookies)를 사용하면, 사용하기 전에 즉시 값이 증가합니다. 후위 증가(cookies++)는 현재 값이 사용된 후에 값이 증가합니다.
C言語에서의 감소 연산자
이제, 감소 연산자를 만나보죠. 이 연산자는 증가 연산자의 깊은 복제라고 할 수 있죠. 반대로 – 우리의 변수에서 1을 뺍니다. 이 연산자는 "--"를 사용합니다.
증가 연산자처럼, 이도 두 가지 형태가 있어요:
- 전위 감소: --변수
- 후위 감소: 변수--
이제 실제로 보죠:
#include <stdio.h>
int main() {
int lives = 3;
printf("당신은 %d 개의 목숨이 있어요.\n", lives);
// 전위 감소
printf("이런! 하나 잃었어요: %d\n", --lives);
// 후위 감소
printf("현재 목숨: %d\n", lives--);
printf("게임 오버: %d\n", lives);
return 0;
}
출력:
당신은 3 개의 목숨이 있어요.
이런! 하나 잃었어요: 2
현재 목숨: 2
게임 오버: 1
이 예제에서, 우리는 가상의 게임에서 3개의 목숨으로 시작해요. 전위 감소(--lives)는 즉시 수를 줄이고, 후위 감소(lives--)는 현재 값이 사용된 후에 수를 줄입니다.
C言語에서의 단항 더하기 연산자(+)
단항 더하기 연산자는 처음에는 좀 충분하지 않을 수 있습니다. 결국, 양수는 이미... 양수니까요? 하지만, 이 연산자는 다른 데이터형식들과 작업할 때 특히 유용합니다.
#include <stdio.h>
int main() {
int num = 42;
float pi = 3.14;
printf("양수 int: %d\n", +num);
printf("양수 float: %f\n", +pi);
return 0;
}
출력:
양수 int: 42
양수 float: 3.140000
이 예제에서, 단항 더하기는 값들을 변경하지 않지만, 그들이 양수로 취급되도록 보장합니다. 이는 우리의 변수에 대한 좀 더 큰 격려를 줄 수 있습니다: "양수를 지켜, 친구!"
C言語에서의 단항 마이너스 연산자(-)
단항 마이너스 연산자는 마법의 지팡이처럼 양수를 음수로 (그리고 반대로) 전환합니다. 우리가 값의 부호를 뒤집고 싶을 때 매우 유용합니다.
#include <stdio.h>
int main() {
int temperature = 25;
float balance = -100.50;
printf("원래 온도: %d\n", temperature);
printf("영점 아래: %d\n", -temperature);
printf("원래 잔고: %.2f\n", balance);
printf("채무 청산: %.2f\n", -balance);
return 0;
}
출력:
원래 온도: 25
영점 아래: -25
원래 잔고: -100.50
채무 청산: 100.50
보시죠? 따뜻한 날을 추위로, 그리고 채무를 작은 마이너스 기호 하나로 청산할 수 있죠? 그게 단항 마이너스 연산자의 힘!
C言語에서의 주소 연산자(&)
이제, 약간 더 고급한 주제에 들어가볼게요 – 주소 연산자. 이 작은 앰퍼센트(&)는 우리의 변수가 컴퓨터 메모리의 어느 곳에 위치하는지 정확히 알려줍니다.
#include <stdio.h>
int main() {
int age = 25;
float height = 1.75;
printf("나이 값: %d\n", age);
printf("나이 주소: %p\n", (void*)&age);
printf("키 값: %.2f\n", height);
printf("키 주소: %p\n", (void*)&height);
return 0;
}
출력 (주의: 실제 주소는 다를 수 있습니다):
나이 값: 25
나이 주소: 0x7ffd5e8e3994
키 값: 1.75
키 주소: 0x7ffd5e8e3998
이 예제에서, 우리는 단지 변수의 값을 보는 것이 아니라, 메모리의 특정 위치에 숨겨진 가치를 훔쳐보고 있습니다. 멋지죠?
C言語에서의 참조 연산자(*)
참조 연산자는 트레asure 맵처럼 – 특정 메모리 주소에 숨겨진 가치를 찾는 데 도움을 주는 것입니다. 이는 우리의 주소 연산자의 친구입니다.
#include <stdio.h>
int main() {
int treasure = 1000;
int *map = &treasure;
printf("보물 값: %d\n", treasure);
printf("지도가 가리키는 곳: %p\n", (void*)map);
printf("찾은 보물: %d\n", *map);
*map = 2000; // 보물을 변경하자!
printf("새로운 보물 값: %d\n", treasure);
return 0;
}
출력:
보물 값: 1000
지도가 가리키는 곳: 0x7ffd5e8e3994
찾은 보물: 1000
새로운 보물 값: 2000
이 예제에서, 우리의 '지도'(포인터)는 보물을 가리키며, 참조 연산자를 사용하여 보물의 값을 변경할 수 있습니다. 마법 같죠?
C言語에서의 논리 NOT 연산자(!)
논리 NOT 연산자는rebels 같아 – 참을 거짓으로, 거짓을 참으로 전환합니다. C言語에서는 0이 아닌 모든 값은 참으로 간주되고, 0은 거짓입니다.
#include <stdio.h>
int main() {
int sunny = 1; // 1은 참
int rainy = 0; // 0은 거짓
printf("비가 내리나요? %d\n", sunny);
printf("비가 내리지 않나요? %d\n", !sunny);
printf("햇살이 나나요? %d\n", rainy);
printf("햇살이 아니라나요? %d\n", !rainy);
return 0;
}
출력:
비가 내리나요? 1
비가 내리지 않나요? 0
햇살이 나나요? 0
햇살이 아니라나요? 1
보시죠? 논리 NOT 연산자가 날씨 조건을 뒤집어버리죠? 이는 "반대일" 버튼을 가지는 것 같아!
C言語에서의 1의 보수 연산자(~)
마지막으로, 1의 보수 연산자에 대해 이야기해볼게요. 이 연산자는 숫자의 모든 비트를 뒤집어 – 0을 1로, 1을 0으로 전환합니다. 이는 바이너리 숫자에 완벽한 개행을 주는 것 같아요!
#include <stdio.h>
int main() {
unsigned char a = 5; // 바이너리: 00000101
unsigned char b = ~a; // 바이너리: 11111010
printf("원래 값: %d\n", a);
printf("보수 값: %d\n", b);
printf("바이너리 표현:\n");
printf("a: ");
for (int i = 7; i >= 0; i--) {
printf("%d", (a >> i) & 1);
}
printf("\nb: ");
for (int i = 7; i >= 0; i--) {
printf("%d", (b >> i) & 1);
}
printf("\n");
return 0;
}
출력:
원래 값: 5
보수 값: 250
바이너리 표현:
a: 00000101
b: 11111010
이 예제에서, 우리는 1의 보수 연산자가 모든 비트를 뒤집는 것을 볼 수 있습니다. 이는 바이너리 숫자를 내부로 뒤집는 것 같아요!
그리고 그렇습니다! 우리는 C言語에서의 모든 단항 연산자를 탐험했습니다. 기억해요, 연습만큼이나 완벽한 것이 있습니다. 그래서 이 연산자들을 자신의 코드에서 실험해보는 것을怕하지 마세요. 코딩 잘하고, 단항 연산자가 도와드릴 거예요!
연산자 | 이름 | 설명 |
---|---|---|
++ | 증가 | 값에 1을 추가 |
-- | 감소 | 값에서 1을 뺍니다 |
+ | 단항 더하기 | 양수 값을 나타냅니다 (가끔 사용) |
- | 단항 마이너스 | 표현식을 부정합니다 |
& | 주소-of | 변수의 메모리 주소를 반환합니다 |
* | 참조 | 포인터 주소에 있는 값을 접근합니다 |
! | 논리 NOT | 표현식의 논리 상태를 반전합니다 |
~ | 비트별 NOT (1의 보수) | 모든 비트를 뒤집습니다 |
Credits: Image by storyset