-
다시한번 개발자도전! 3일차 (외부입력받기,연산자,형변환)다시한번 개발자도전! 2026. 1. 6. 17:14
어제 일찍잔 덕분에 오늘은 완전 개운하게 수업시작!
다이소에서 새로산 캠도 설치하고
오늘두 아좌좌!


⌨️사용자 입력 받기 (Console.ReadLine)
- 사용자가 키보드로 입력한 내용을 문자열(String)로 받아오는 방법
- Console.ReadLine()은 모든 입력을 문자열로만 받아옴. 숫자로 계산을 하고 싶다면 반드시 형식 변환을 거쳐야 한다.
- 방법: int.Parse() 또는 Convert.ToInt32() 사용
static void Main(string[] args) { Console.WriteLine("이름을 입력해 주새요"); string name = Console.ReadLine(); //인풋 Console.WriteLine($"안녕하세요 {name} 님"); //아웃풋 Console.WriteLine("나이를 입력해 주세요"); string input = Console.ReadLine(); int age = int.Parse(input); Console.WriteLine($"내년에는 {age+1}살이 됩니다."); }
0️⃣1️⃣이진수(Binary) 다루기
- 컴퓨터의 언어인 2진수를 사람이 쓰는 10진수로 변환할 때는 Convert 클래스를 사용.
- 핵심 코드: Convert.ToInt32(입력값, 2); (뒤의 숫자 '2'가 2진수임을 알려줌.)
static void Main(string[] args) { Console.Write("2진수를 입력하세요: "); string binaryInput = Console.ReadLine(); int decimalVaue = Convert.ToInt32(binaryInput,2); //2진수를 10진수ㅜ로 변환 Console.WriteLine($"입력한 2진수: {binaryInput}"); Console.WriteLine($"10진수로 변환: {decimalVaue}"); }💡2진수란?
더보기컴퓨터는 전기가 흐르는지(1) 안 흐르는지(0)만 구분할 수 있습니다. 이 두 상태를 조합해 숫자를 표현하는 것이 바로 2진수입니다.
- 비트(Bit): 0 또는 1이 들어가는 가장 작은 정보 단위
- 읽는 법: 맨 뒷자리(1)부터 왼쪽으로 갈수록 자릿수 값이 2배씩(1, 2, 4, 8, 16...) 커진다.
- 예시: 2진수 **1101**은 = (8x1)+(4x1)+(2x0)+(1x1) =13 이 된다.
🔥실습예제🔥
{캐릭터 이름을 입력하세요: 홍길동
환영합니다. 홍길동님!
시작 레벨을 입력하세요: 5
홍길동님의 시작레벨은 5입니다.}
⬇️ 실습결과

static void Main(string[] args) { Console.Write("캐릭터 이름을 입력하세요: "); string name = Console.ReadLine(); Console.WriteLine($"환영 합니다. {name} 님!"); Console.Write("시작 레벨을 입력해주세요: "); string inputLevel = Console.ReadLine(); int startLevel = int.Parse(inputLevel); Console.WriteLine($"{name} 님의 시작 레벨은 {startLevel} 입니다."); }
📋 형식 변환의 종류
구분 특징 변환 방향 데이터 안전성 암시적 변환 (Implicit) 컴파일러가 자동으로 변환 작은 타입 → 큰 타입 안전 (데이터 손실 없음) 명시적 변환 (Explicit) 개발자가 코드로 직접 지정 큰 타입 → 작은 타입 위험 (데이터 손실 가능성) ⬇️암시적,명시적 변환 예시
static void Main(string[] args) { // 1. 암시적 변환: 데이터 범위가 넓은 쪽으로 자동 이동 int smallNumber = 100; long bigNumber = smallNumber; // int -> long (자동) double doubleNumber = smallNumber; // int -> double (자동) // 2. 명시적 변환: 데이터 범위가 좁은 쪽으로 강제 이동 (캐스팅) double pi = 3.14159; int intPi = (int)pi; // 소수점 아래 숫자가 버려짐! Console.WriteLine($"double {pi}를 int로 변환하면: {intPi}"); // 출력: 3 }🔢문자열과 숫자 간의 변환
ㄴ사용자로부터 입력받은 문자열을 계산에 사용하려면 반드시 변환 과정을 거쳐야 합니다.
- 문자열 → 숫자: int.Parse(), double.Parse() 등을 사용
- 숫자 → 문자열: 모든 객체에 포함된 .ToString() 메서드 사용
⬇️문자열,숫자 변환 예
static void Main(string[] args) { // 문자열을 숫자로 string scoreText = "95"; int score = int.Parse(scoreText); // 숫자를 문자열로 int playerLevel = 50; string levelText = playerLevel.ToString(); }⚠️ 형식 변환 시 주의사항 (오류 방지)
- 데이터 손실: 실수를 정수로 변환 시 소수점이 버려집니다. (9.8 → 9)
- 오버플로우: 작은 그릇에 너무 큰 숫자를 담으면 값이 왜곡됩니다.
- 런타임 오류: 숫자가 아닌 문자열(예: "abc")을 int.Parse하면 에러가 발생합니다.
✅ 해결책: int.TryParse 사용
static void Main(string[] args) { string text = "abc"; if (int.TryParse(text, out int num)) { Console.WriteLine($"성공: {num}"); } else { Console.WriteLine("변환 실패: 숫자가 아닙니다."); } }
😊편리한 키워드
1. var (암시적 로컬 변수)
- 컴파일러가 대입되는 값을 보고 타입을 자동으로 정해준다. 선언 시 반드시 초기화가 필요함.
static void Main(string[] args) { //var가 자동으로 데이터 타입을 맞춰중 var name = "Alice"; //문자열 var age = 25; //정수형 var isStudant = true;//논리형 }2. default (기본값 설정)
해당 데이터 형식의 초기값을 자동으로 넣어줌.
- 정수형: 0
- 논리형: false
- 참조형(문자열 등): null
static void Main(string[] args) { int defaultInt = default; //0 string defaultString = default; //null bool defaultBool = default; //false }
연산자(Operator)
1. 산술 연산자: 사칙연산과 나머지
가장 기본이 되는 연산자, 캐릭터의 공격력 계산이나 아이템 분배 등 수치 계산에 사용.
연산자 기능 예시 (a=10, b=3) 결과 + 더하기 a + b 13 - 빼기 a - b 7 ***** 곱하기 a * b 30 / 나누기 a / b 3 (몫) % 나머지 a % b 1 (나머지 static void Main(string[] args) { int a = 10, b = 3; Console.WriteLine(a + b); Console.WriteLine(a - b); Console.WriteLine(a * b); Console.WriteLine(a / b); Console.WriteLine(a % b); }2. 증감 연산자: 전위 vs 후위의 차이
변수의 값을 1씩 증가(++)시키거나 감소(--). 위치에 따라 실행 순서가 달라지니 주의.
🔍 전위/후위 비교
- 후위 증가 (count++): 현재 값을 먼저 사용하고, 그다음에 1을 증가.
- 전위 증가 (++count): 1을 먼저 증가시키고, 그 결과를 사용.
static void Main(string[] args) { int b = 3; Console.WriteLine(b++); //후위 증가 값은 3가나옴 int b = 3; Console.WriteLine(++b); //후위 증가 값은 4이나옴 }🔥실습예제🔥
===몬스터 처치===
고블린 처치! (킬 카운트:1)
오크 처치! (킬 카운트:2)
드래곤 처치! (킬 카운트:3)
총 처치 수:
=== 사격 ===
남은 탄약:30
발사! 남은 탄약:29
발사! 남은 탄약:28
발사! 남은 탄약:27=== 카운트다운 ===
// 3
// 2
// 1발사!
⬇️실습결과
더보기static void Main(string[] args) { // 실전 예제: 게임 카운터 int killCount = 0; Console.WriteLine("\n=== 몬스터 처치 ==="); Console.WriteLine($"고블린 처치! (킬 카운트: {++killCount})"); Console.WriteLine($"오크 처치! (킬 카운트: {++killCount})"); Console.WriteLine($"드래곤 처치! (킬 카운트: {++killCount})"); Console.WriteLine($"총 처치 수: {killCount}마리"); // 남은 탄약 int ammo = 30; Console.WriteLine($"\n=== 사격 ==="); Console.WriteLine($"남은 탄약: {ammo}"); Console.WriteLine($"발사! 남은 탄약: {--ammo}"); Console.WriteLine($"발사! 남은 탄약: {--ammo}"); Console.WriteLine($"발사! 남은 탄약: {--ammo}"); // 루프 카운터 (간단한 예) Console.WriteLine("\n=== 카운트다운 ==="); int countdown = 3; Console.WriteLine(countdown--); // 3 Console.WriteLine(countdown--); // 2 Console.WriteLine(countdown--); // 1 Console.WriteLine("발사!"); }3. 비교 및 논리 연산자: 조건문의 핵심
데이터의 크기를 비교하거나 여러 조건을 조합할 때 사용. 결과값은 항상 **bool(True/False)**로 나옴.
① 비교 연산자 (관계형)
- == (같다), != (다르다), >, <, >=, <=
static void Main(string[] args) { //관계형 연산자 int x = 5; int y = 10; Console.WriteLine(x < y); Console.WriteLine(x > y); Console.WriteLine(x <= y); Console.WriteLine(x >= y); Console.WriteLine(x == y); //같냐? f Console.WriteLine(x != y); //같지않지않냐? t }② 논리 연산자
- && (AND): 둘 다 True여야 True (깐깐한 조건)
- || (OR): 하나만 True여도 True (너그러운 조건)
- ! (NOT): True ↔ False 상태 반전
static void Main(string[] args) { bool a = true; bool b = false; Console.WriteLine(a && b); // 둘중 하나가 false이기 때문에 false가 나옴 Console.WriteLine(a || b); // 둘중 하나라도 true 이기 때문에 true가 나옴 Console.WriteLine(!a); //true의 반대인 false가 나옴 }4. 비트 연산자: 메모리 효율의 극대화
데이터를 가장 작은 단위인 비트(0, 1) 수준에서 직접 제어.
연산자 이름 규칙 & AND 둘 다 1일 때만 1 ** ** OR ^ XOR 서로 다를 때만 1 ~ NOT 0과 1을 반전 static void Main(string[] args) { int x = 5; // 0101 int y = 3; // 0011 string binary = Convert.ToString(x & y, 2); Console.WriteLine($"8비트 : {binary.PadLeft(8, '0')}"); //서로를 곱함 binary = Convert.ToString(x | y, 2); Console.WriteLine($"8비트 : {binary.PadLeft(8, '0')}");//서로를 더함 binary = Convert.ToString(x ^ y, 2); Console.WriteLine($"8비트 : {binary.PadLeft(8, '0')}");//같은건 0 다른건 1 binary = Convert.ToString(~x, 2); Console.WriteLine($"8비트 : {binary.PadLeft(8, '0')}"); //0과 1을 바꿈 }🚀 시프트(Shift) 연산
- << (왼쪽): 비트를 왼쪽으로 밀기 (값 2배 증가)
- >> (오른쪽): 비트를 오른쪽으로 밀기 (값 1/2 감소)
- 비트를 통째로 옆으로 밀어버리는 연산, 매우 빠른 곱셈/나눗셈 효과가 있다.
static void Main(string[] args) { int value = 4; //0100 string binary = Convert.ToString(value << 1, 2); //<< >> Console.WriteLine($"8비트 : {binary.PadLeft(8, '0')}"); binary = Convert.ToString(value >> 1, 2); //<< >> Console.WriteLine($"8비트 : {binary.PadLeft(8, '0')}"); }💡 연산자 우선순위(알면 좋음)
더보기순위 연산자 종류 기호 예시 한줄 설명 1등 괄호 () 무조건 제일 먼저! 2등 증감 ++, -- (아까 배운) 1씩 늘리거나 줄이기 3등 산술 *, /, +, - 일반적인 수학 계산 4등 비교 >, <, == 크기 비교 (맞나 틀리나?) 꼴찌 대입 = 최종 결과를 저장하기
2진수랑 비트연산자는 다시해도 어렵운듯..
하지만 오늘 드디어 이해했다! 오예🤸🏻 🤸🏻 🤸🏻

'다시한번 개발자도전!' 카테고리의 다른 글
다시한번 개발자도전! 6일차 (배열,컬렉션) (0) 2026.01.09 다시한번 개발자도전! 5일차 (이중반복문 , 콘솔 좌표이동) (0) 2026.01.08 다시한번 개발자도전! 4일차(삼항연산자,연산자 우선순위,제어문,반복문) (0) 2026.01.07 다시한번 개발자도전! 2일 (깃허브,데이터 형식) (0) 2026.01.05 멋쟁이사자처럼 부트캠프 유니티게임개발7기 (변수,리터럴,vsc) (0) 2025.12.31