주제 |
[C#] 기초 문법 - Type(자료형) 그리고 변수
개요 |
(참고)
[C#] 기초 문법 - 콘솔 출력 형식 비교 (Console.WriteLine() vs Console.Write())
[C#] 기초 문법 - Type(자료형) 콘솔 출력 예제
- 변수란?
- 변수의 선언 (Data Type별 변수 선언의 예시)
- 변수명 선언의 규칙과 관습 (변수 명명규칙)
- 변수에 값 할당하기
- 변수에 값 재할당하기
- 변수 초기화
내용 |
1. 변수란?
변수는 어떤 자료형의 값을 담는 빈 공간이며 임시적으로 데이터를 저장한다.
예) 변수란, string 형의 "cat" 이라는 문자열 값을 담는 빈 상자와 같다.
변수는 프로그램 실행을 통해 값이 변하기도 하고, 다양해지기도 한다. 다른 말로 변수는 할당되고, 읽히고, 그 값이 변하게 되기도 한다.
궁극적으로, 변수는 코드 내에서 값을 저장하기 위해 사용된다.
변수의 이름은 하드웨어가 아닌 사람에게 친숙한 표시로써 이 변수명은 컴파일러가 특정 메모리 주소에 할당시킨다. 메모리 주소에 있는 변수의 값을 저장하거나 변경하고 싶을 때, 그리고 언제든지 저장된 값을 검색하고 싶을 때 생성한 변수명을 이용한다.
2. 변수의 선언 (Data Type별 변수 선언의 예시)
다음은 변수 선언의 공식이다.
자료형(Data Type) + 변수명(Variable Name)
특정 자료형으로 변수를 선언했다면, 그 변수에는 해당 자료형의 값밖에 들어갈 수 없다.
변수 선언의 예)
string content; // string 형의 content 라는 변수명을 가진 데이터 (예시 : "Hello World")
char alphabet; // char 형의 alphabet 라는 변수명을 가진 데이터 (예시 : 'c')
int age; // int 형의 age 라는 변수명을 가진 데이터 (예시 : 27)
long money; // long 형의 money 라는 변수명을 가진 데이터 (예시 : 100000L)
float weight; // float 형의 weight 라는 변수명을 가진 데이터 (예시 : 48.5F)
double height; // double 형의 height 라는 변수명을 가진 데이터 (예시 : 161.5)
decimal pi; // decimal 형의 pi 라는 변수명을 가진 데이터 (예시 : 3.141592)
bool female; // bool 형의 female 라는 변수명을 가진 데이터 (예시 : True / False)
변수명은 C#의 변수명 선언의 규칙만 잘 준수한다면 어떻게 지어도 상관 없다.
3. 변수명 선언의 규칙과 관습 (변수명 명명규칙)
개발자들은 종종 "개발에서 가장 어려운 부분이 변수명 짓는 것이다."라고 한다.
변수명을 지을 때는 특정 규칙을 잘 따라야할 뿐만이 아니라 누구라도 코드를 읽기 쉽고 이해하기 쉽도록 선언해야 한다.
다음은 변수명을 지을 때 고려해야할 몇 가지 중요한 규칙이다.
- 변수명은 영문, 숫자, 언더바(_)를 포함할 수 있다. 샵(#)이나 달러($) 같은 특수문자는 사용하면 안 된다.
- 변수명은 영문이나 언더바(_)로 시작하여햐 하며, 숫자로 시작하면 안 된다.
- 변수명은 대소문자를 구분한다. (Ex. Case 와 case 는 서로 다른 변수명이다.)
- 변수명은 C# 언어에서 사용되는 키워드로 지을 수 없다. (Ex. string 이나 decimal 이라는 이름으로 변수명을 지을 수 없다.)
다음은 가독성도 좋고 이해하기 쉬운 변수명 선언에 대한 관습이다. 규모가 있는 애플리케이션을 개발할 수록 하기 관습을 준수한다면 다른 개발자가 작성한 코드를 빠르게 해석하고 이해하기 쉬울 것이다. (문법적으로 오류도 없고 컴파일러가 오류를 뱉지도 않지만 보통은 준수하는 편이 좋다.)
- 변수명은 camel case 규칙으로 작성한다. 변수명의 첫글자는 영소문자로 시작하며, 단어와 단어 사이의 조합에서 첫 번째 문자는 대문자로 작성한다. 마지 혹이 여러 개 달린 낙타의 모습과 같다고 하여 camel case 라고 한다. (Ex. firstName)
- 변수명은 알파벳으로 시작한다. 간혹 특별한 경우에 언더바를 사용하기는 하지만, 보통은 알파벳으로 시작한다.
- 변수명은 프로그램상에서 의미가 있고 해석이 편한 뜻의 단어를 사용하여 짓는다. 함축된 용어나 약어를 사용하지 않는다. 다른 개발자가 코드를 해석하기에 난해하고 가독성이 떨어지기 때문이다.
- 변수명은 자료형을 포함하여 짓지 않는다. 과거에는 간혹 string 형의 변수명을 strValue 와 같이 짓도록 권고하였으나 현재는 해당되지 않는다. bool 형태의 경우, isAccepted 형태로 타입이 유추 가능한 형태로 짓지 않는다. (예를 들면 orderAccepted 형태로 지어야 한다.)
4. 변수에 값 할당하기
변수의 값을 할당하는 방법은 다음과 같다.
- 변수의 선언
- 변수에 값 할당
string myName; // 변수의 선언 (camel case를 준수하여 두 번째 단어는 대문자 알파벳으로 시작)
myName = "C#"; // 변수에 값 할당
변수에 값을 할당하는 과정은 오른쪽에서 왼쪽으로 진행된다.
C# 컴파일러는 변수값 할당 연산자('=') 우측을 먼저 읽고 변수값 할당 연산자 좌측의 변수에 값을 할당하는 연산을 수행한다. 만약 변수에 값을 할당할 때 이 순서를 뒤집어서 코드를 작성한다면 컴파일 오류가 발생한다.
잘못된 예)
string myName; // 변수의 선언
"C#" = myName; // 연산자 좌우가 뒤바뀜 (Error!)
콘솔에 출력되는 결과)
error CS0131: The left-hand side of an assignment must be a variable, property or indexer
한 번 선언된 변수는 선언된 자료형(Data Type)에 해당하는 값만 할당될 수 있다.
특정 자료형(Data Type)으로 한 번 선언된 변수는 다른 자료형(Data Type)의 값이 할당될 수 없다.
잘못된 값 할당의 예)
int myAge;
myAge = "my age is 27."; // Error!
콘솔에 출력되는 결과)
error CS0029: Cannot implicitly convert type 'string' to 'int'
5. 변수에 값 재할당하기
자료형만 같다면 변수의 값은 얼마든지 재할당이 가능하다.
아래는 string 형의 bookContent 라는 이름의 변수에 다양한 문자열을 재할당하고, 값을 재할당 할 때마다 콘솔에 bookContent 라는 변수의 값을 출력하는 예제이다.
stirng bookContent;
bookConetnt = "Welcome to the C# world!";
Console.WriteLine(bookContent); // 출력 결과 : Welcome to the C# world! (개행)
bookContent = "In this Chapter,";
Console.WriteLine(bookContent); // 출력 결과 : In this Chapter, (개행)
bookContent = " "
Console.WriteLine(bookContent); // 출력 결과 : [공백 출력] (개행)
bookContent = "you will learn about C# grammar!";
Console.WriteLine(bookContent); // 출력 결과 : you will learn about C# grammar! (개행)
(중요!)
위의 예시에서는 bookContent라는 변수를 사용하여 콘솔에 출력했다.
만약 변수에 값을 할당하지 않은 채 선언만 한 채로 콘솔에 해당 변수의 값을 찍어보면, 오류 메시지를 볼 수 있다.
이번 포스팅에서는 변수를 콘솔에 변수의 값을 출력하는 용도로 사용했지만, 이과 같이 값이 할당되지 않은 변수를 사용하면 어느 코드에서나 에러가 발생한다.
예시)
string myName;
Console.WriteLine(myName); // Error!
출력 결과)
error CS0165: Use of unassigned local variable 'myName'
6. 변수 초기화
위에서 나타난 오류를 방지하기 가장 좋은 방법은 변수를 선언함과 동시에 값 할당, 즉 초기화를 시켜주는 것이다.
변수 선언의 또 다른 문법은 다음과 같다.
Data Type + Variable Name + '=' + Value;
예시)
string myName = "my name is C#"; // string 형의 myName 이라는 변수 선언과 동시에 문자열 값 할당
Console.WriteLine(myName); // 별다른 경우(재할당)가 없는 경우 변수에 값을 할당하는 다른 코드 작성 없이 곧바로 해당 변수 사용이 가능하다.
출력 결과)
my name is C#
참고 문헌 : Microsoft 공식 문서
https://learn.microsoft.com/en-us/training/modules/csharp-literals-variables/3-declaring-variables
https://learn.microsoft.com/en-us/training/modules/csharp-literals-variables/4-exercise-variables
'Language > C#' 카테고리의 다른 글
[C#] 기초 문법 - 숫자 타입의 변수를 활용한 string 문자열 만들기 (0) | 2023.08.30 |
---|---|
[C#] 기초 문법 - string 문자열 활용하기 (0) | 2023.08.30 |
[C#] 기초 문법 - 묵시적 데이터 타입의 변수 선언 var (0) | 2023.08.29 |
[C#] 기초 문법 - Type(자료형) 콘솔 출력 예제 (0) | 2023.08.29 |
[C#] 기초 문법 - 콘솔 출력 형식 비교 (Console.WriteLine() vs Console.Write()) (0) | 2023.08.29 |