TIL

[사전캠프 2일차] C# 기초 문법 1

youngjin02 2025. 3. 18. 14:53

C#의 기초 문법에 대해 공부하며 새로 배운 거나 궁금하고 신기한 내용들을 적어보겠다.

1. Console.WriteLine();

Console.WriteLine("Hello, World!");

보통 코딩을 하면 print, printf 로 출력을 했었는데 C#은 많이 다른 형태인 것을 볼 수 있었다.

Console.WriteLine();  : ()안에 들어온 데이터를 출력한다.

 

print가 손에 익어서 빨리 익숙해져야겠다..

Console.WriteLine("1");
Console.WriteLine("1 + 2");
Console.WriteLine(1 + 2);

쌍따옴표(" ")안에 들어간 내용은 문자로 인식하게 된다.

그렇기 때문에 이 코드를 실행하게 되면

이렇게 출력이 된다.

쌍따옴표 안에 들어간 내용은 쓴 그대로 출력이 되고, 쌍따옴표가 없는 1 + 2 는 그대로 계산되어 3으로 출력이 되었다.

 

                                                                                                                                                                      

2. 변수의 형식

변수의 기본적인 형식은

데이터형식 변수이름;

으로 되어있다.

 

데이터형식은 문자는 string, 정수는 int 등이 있고, 변수이름은 어떤 이름이든 상관없지만 특수문자 및 띄어쓰기는 사용할 수 없다.

string name = "영진";
int age = 24;

이런 식으로 사용할 수 있겠다.

변수가 가진 데이터형식과 다른 데이터를 집어넣으면 당연히 오류가 발생한다.

정수형 변수인 int에 문자를 집어넣으려니 오류가 뜬다.

문자열인 string에 숫자를 집어넣으려니 오류가 뜬다.

 

                                                                                                                                                                      

변수를 만지다 보니 새로운 사실을 발견했다.

데이터형식을 지정해 주지 않으면 오류가 뜨는 건 알고 있었다.

그렇기 때문에 처음엔 무조건 데이터형식을 지정해 주어야 한다. 하지만 이후 변수의 값을 변경할 때 다시 데이터형식을 써주지 않아도 된다. 그래서 한번 데이터 형식을 지정해 주면 계속 저장되어 있구나 생각하게 되었고 실험을 해보았다.

예상한 대로 이미 string 형식을 가지고 있기 때문에 이후 변수의 값을 변경할 때 데이터형식을 다시 쓰지 않아도 된다는 사실을 발견하였다.

 

                                                                                                                                                                      

3. 실수 자료형

실수 자료형은 float와 double이 있다.

float는 소수점 7자리까지 표시가 가능하고, double은 소수점 15~16자리까지 표시가 가능하다.

 

그럼 double만 사용하면 되는 거 아닌가? 라는 의문이 든다.

double은 float보다 더 정확한 수치를 저장할 수 있다. 하지만 그만큼 메모리를 더 사용한다.

 

그렇기 때문에 평소엔 float를 사용하고 double이 필요한 상황일 때만 사용하는 게 올바르다.

사실, 소수점 15~16자리를 언제 사용하게 될지 상상이 안 간다.

거의 쓸 일이 없을 것 같다.

 

                                                                                                                                                                      

실수를 사용할 때 뒤에 f, d를 붙여서 사용한다.

float exp = 12.3f;
double speed = 4.5678d;

사실 그 이유를 모르고 그냥 따라서 하느라 사용했지만 이번에 그 이유를 알 수 있었다.

뒤에 f, d를 붙여주지 않으면 컴퓨터는 앞의 숫자를 float로 사용하려는지 double로 사용하려는지 알 수 없기 때문이다.

 

만약 f, d를 붙여주지 않는다면 double로 인식한다는 사실도 발견하였다.

 

                                                                                                                                                                      

4. bool 을 문자로 바꿀 때

형 변환에 대해 공부하던 중 궁금한 것이 생겼다.

숫자를 문자로 바꾸는 것은 이해했는데, bool 을 문자로 바꿀 때 이상한 점이 발견되었다.

 

myBool의 값은 true이다. 하지만 출력해 보니 true가 아니라 True로 뜬다.

어째서 myBool의 값인 소문자 t가 아니라 대문자 T로 출력이 될까?

 

C#은 영어문화권에서 설계된 언어이기 때문에 C# 내부에서 Boolean 관련한 값들을 문자열로 변환할 때 "True", "False"로 나타나게 된다고 한다. 그냥 저렇게 출력되도록 정해졌구나 이해하고 넘어갔다.

 

                                                                                                                                                                      

5. 문자를 다른 자료형으로 바꾸는 법

대표적으로 3가지 방법이 존재한다.

Convert 클래스, Parse() 함수, TryParse() 함수를 이용하는 것이다.

 

Convert 클래스는 이런 식으로 사용할 수 있다.

string iStr = "10";
int x;
x = Convert.ToInt32(iStr);

string bStr = "true";
bool b;
b = Convert.ToBoolean(bStr);

잘 나오는 것을 볼 수 있다.

ToDouble, ToInt32, ToString 메소드는 많이 쓴다고 하니 외워둬야겠다.

 

다음은 Parse() 함수이다.

string iStr = "10";
int x;
x = int.Parse(iStr);

string bStr = "true";
bool b;
b = bool.Parse(bStr);

똑같이 잘 나온다.

Convert 클래스보단 Parse() 함수를 이용하는 게 더 쉽고 편할 것 같다.

 

string iStr = "10xxxx";
int x;
x = Convert.ToInt32(iStr);

string bStr = "testtest";
bool b;
b = bool.Parse(bStr);

하지만 이런 식으로 변환이 안되는 값을 준다면,

이렇게 오류가 나버린다.

 

TryParse() 함수는 당장 이해하긴 어려우므로 다음에 알아보도록 하겠다.