일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Google Spreadsheet
- GIT
- Java
- array
- Google Excel
- Apache
- c#
- PANDAS
- string
- SQL
- Excel
- hive
- google apps script
- dataframe
- numpy
- matplotlib
- 파이썬
- math
- PostgreSQL
- Github
- Kotlin
- Mac
- gas
- Redshift
- Tkinter
- django
- Python
- PySpark
- list
- Today
- Total
달나라 노트
C# : 변수와 자료형 (variable and data type) 본문
C#에서의 자료형은 다음과 같습니다.
(대표적으로 몇가지만 간단하게 다뤄봅시다.)
분류 | 영어 이름 | 내용 |
논리형 | bool | true / false |
문자형 | char | 길이 1인 문자 (영어, 한글 등의 문자 또는 숫자) |
string | 길이가 1 이상인 문자 (영어, 한글 등의 문자 또는 숫자) |
|
숫자 | int | 정수 |
long | 긴 정수 | |
float | 실수(소수점) | |
double | 긴 실수(소수점) |
int number;
double test_number;
char test_text;
C#에서의 변수 선언은 위처럼 자료형을 먼저 쓰고 변수 이름을 쓰면 됩니다.
즉, 변수를 선언할 때에는 선언한 변수에 들어갈 자료형을 명시해줘야 합니다.
int test_number;
test_number = 10;
변수에 값을 할당하기 위해선 = 기호를 이용합니다.
int test_int = 5;
위처럼 변수를 선언하자마자 변수에 값을 할당할 수 있습니다.
이것을 초기화라고 합니다.
char test = 'A';
string test_string = "Apple Banana Test string";
문자 선언은 위처럼 할 수 있습니다.
주의점은 다음과 같습니다.
1. char 타입은 문자의 길이가 1개인 문자만 할당할 수 있다.
2. string 타입은 문자의 길이가 1개 이상인 문자를 할당할 수 있다.
3. char 타입은 따옴표(')로 문자를 감싸서 할당해야 한다.
4. string 타입은 쌍따옴표(")로 문자를 감싸서 할당해야 한다.
using System;
class MyProgram
{
static void Main()
{
char test = 'A';
string test_string = "Apple Banana Test string";
Console.WriteLine(test);
Console.WriteLine(test_string);
}
}
-- Result
A
Apple Banana Test string
실제 코드에 적용해보면 위와 같습니다.
using System;
class MyProgram
{
static void Main()
{
int test = 1;
test = 2;
Console.WriteLine(test);
}
}
-- Result
2
변수를 1로 할당한 후 2로 재할당하면 가장 마지막에 할당된 2로 덮어씌워집니다.
int test_value_1 = 1.876;
위처럼 int type에 소수점 데이터를 할당하는 것은 불가능합니다.
에러가 발생합니다.
using System;
class MyProgram
{
static void Main()
{
int test_value_1 = 10;
double test_value_2 = 8.935;
test_value_2 = test_value_1;
Console.WriteLine(test_value_1);
Console.WriteLine(test_value_2);
}
}
-- Result
10
10
위 예시는 int타입의 10을 double 타입의 변수에 할당한 결과입니다.
double 타입은 int타입보다 더 큰 범위의 숫자를 가질 수 있으므로 10이라는 숫자가 그대로 출력됩니다.
using System;
class MyProgram
{
static void Main()
{
int test_value_1 = 10;
double test_value_2 = 8.935;
test_value_1 = test_value_2;
Console.WriteLine(test_value_1);
Console.WriteLine(test_value_2);
}
}
double 타입의 8.935를 int 타입의 변수에 할당한 결과입니다.
더 큰 데이터인 double을 더 작은 타입인 int에 할당하는 것을 불가하므로 에러가 발생합니다.
using System;
class MyProgram
{
static void Main()
{
int test_value_1 = 10;
double test_value_2 = 8.935;
test_value_1 = (int)test_value_2;
Console.WriteLine(test_value_1);
Console.WriteLine(test_value_2);
}
}
-- Result
8
8.935
using System;
class MyProgram
{
static void Main()
{
int test_value_1 = 10;
double test_value_2 = 8.935;
test_value_2 = (double)test_value_1;
Console.WriteLine(test_value_1);
Console.WriteLine(test_value_2);
}
}
-- Result
10
10
위 예시는 cast (자료형 변환 기능)를 사용한 예시입니다.
(변환할 자료형)데이터
위처럼 사용할 수 있으며 데이터를 괄호 안에 적힌 자료형으로 변환한 후 다른 변수에 할당합니다.
test_value_1 = (int)test_value_2;
따라서 위 식은 test_value_2에 저장된 데이터를 정수(int)형태로 바꾼 후 test_value_1변수에 할당한다는 의미입니다.
using System;
class MyProgram
{
static void Main()
{
int test_value_1 = 3;
double test_value_2 = 8.935;
double result = test_value_1 * test_value_2
Console.WriteLine(result);
}
}
위 예시처럼 자료형이 다른 숫자를 연산하는 것은 불가능합니다.
using System;
class MyProgram
{
static void Main()
{
int test_value_1 = 3;
double test_value_2 = 8.935;
double result = (double)test_value_1 * (double)test_value_2;
Console.WriteLine(result);
}
}
-- Result
26.805
double로 자료형을 바꿔준 후 곱하기를 하게 되면 그 결과도 double로 나타나게 됩니다.
이렇게 자료형이 다른 데이터간의 연산은 동일한 자료형으로 변환(cast)해준 후 진행해야합니다.
using System;
class MyProgram
{
static void Main()
{
int test_int = 12345;
long test_long = 1234567891L;
float test_float = 1.234F;
double test_double = 1.234D;
Console.WriteLine(test_int);
Console.WriteLine(test_long);
Console.WriteLine(test_float);
Console.WriteLine(test_double);
}
}
-- Result
12345
1234567891
1.234
1.234
int는 정수이며 long은 더 큰 범위의 정수를 담을 수 있습니다.
long 타입을 선언할 땐 위 예시처럼 숫자의 맨 오른쪽에 L이라는 기호를 붙여서 선언해도 됩니다. (L은 안써도 됩니다.)
float, double은 모두 소수점을 가진 실수데이터를 저장합니다. 다만 double이 float보다 더 큰 범위의 실수를 저장할 수 있습니다.
float, double을 선언할 때에는 그냥 1.234처럼 숫자만 입력해도 되지만 위 예시처럼 F, D라는 키워드를 숫자에 붙여줌으로써 이 숫자가 float이다 또는 double이다 라는 표시를 확실하게 해줄 수 있습니다.
(F, D 키워드는 안붙여도 됩니다.)
float과 double 중 무엇을 사용해야하는지에 대한 고민은 크게 할 필요 없습니다.
float은 소수점 6~7자리정도의 정확도를 가지고 double은 소수점 15자리 정도의 정확도를 가지기 때문에 메모리가 엄청나게 부족한게 아니라면 대부분 double을 사용하면 됩니다.
using System;
class MyProgram
{
static void Main()
{
var test_var = "Test var";
Console.WriteLine(test_var);
test_var = "New var";
Console.WriteLine(test_var);
}
}
-- Result
Test var
New var
변수는 var 키워드로도 선언할 수 있습니다.
var 키워드는 별도로 자료형을 지정하지 않은 상태의 변수를 만들고 할당되는 값에 따라 자동으로 자료형을 결정하는 것이죠.
위 예시는 var 키워드로 변수를 선언하고 Test var라는 string 타입의 데이터를 할당합니다.
그리고 test_var = "New var"; 부분에서 보는 것 처럼 다른 값을 재할당(reassign)할 수 있죠.
using System;
class MyProgram
{
static void Main()
{
var test_var = "Test var";
Console.WriteLine(test_var);
test_var = 1;
Console.WriteLine(test_var);
}
}
단 위 예시처럼 var 키워드로 변수를 선언하고 Test var라는 string데이터를 넣어놨는데
이후에 1같은 다른 자료형을 assign하는 것은 불가능합니다.
따라서 위 예시는 에러가 발생합니다.
'C# > C#' 카테고리의 다른 글
C# : &&, ||, ~ (논리 연산자, and, or, not) (0) | 2022.03.23 |
---|---|
C# : ReadLine, Convert (user input 받기, 자료형 변환) (0) | 2022.03.23 |
C# : WriteLine (문자 출력하기) (0) | 2022.03.23 |
C# : 상속 (Inheritance, sealed)과 다형성(Polymorphism) (0) | 2022.03.23 |
C# : field와 property (get, set, Access Modifier) (0) | 2022.03.23 |