1.변수 |
저번 시간에는 출력에 관하여 코딩을 배워보았습니다. 이번 시간에는 변수와 자료형에 관하여 배워보도록 하겠습니다.
변수와 자료형에 관해서 배우려면 우선 변수를 알아야 하는데 이 [변수라는 것은 상자와 같습니다.]
각 변수는 하나의 값을 담을 수 있으며 그 값은 계속 변할 수 있습니다.
그리고 그 값에 따라 변수의 형태 (Type) 가 정해지게 됩니다.
이러한 부분에 대해 코드로 보자면
int a;
double b;
char c;
와 같은 형태로 볼 수 있는데 코드를 해석해보자면
(변수의 형태) (변수 이름) ; 으로 해석할 수 있습니다.
int 라고 하는 변수 형태에 [a라는 이름으된 상자]를 마련했다고 생각하면 편합니다.
이러한 상자에는 값을 담을 수 있는데 그 형태를 코드로 보자면
int a = 1;
double b = 1.2;
char c = 'A';
※코드를 보면 '=' 이라는 표시가 있는데 이는 수학의 '=' 과는 다른 의미 입니다.
수학에서 '=' 은 '같다' 의 의미지만 코딩에서 '='은 [왼쪽에 있는 값을 오른쪽의 변수(상자)에 담는다.]는 의미 입니다.
이 코드를 해석해보면
(변수의 형태) (변수의 이름) = 1;
(변수의 형태) (변수의 이름) = 1.2;
(변수의 형태) (변수의 이름) = 'A'; 인 것입니다.
2. 자료형 |
기본 자료형(Primitive Data Type) : 개발자가 별도의 코드를 만들지 않아도 언어에서 자체적으로 제공하는 데이터 형식
자료형 | 형식 | 범위 | 크기 | 부호 | |||
sbyte | System.Sbyte | -128~127 (0을 포함하기 때문) | 8bit (1byte) | O | |||
byte | System.Byte | 0~255 | 8bit (1byte) | X | |||
short | System.Int16 | -32,768 ~ 32,767 | 16bit (1byte) | O | |||
ushort | System.Uint16 | 0 ~ 65,535 | 16bit (1byte) | X | |||
int | System.Int32 | -2,147,483,648~2,147,483,647 | 32bit (1byte) | O | |||
uint | System.UInt32 | 0 ~ 4,294,967,295 | 32bit (1byte) | X | |||
long | System.Int64 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,808 |
64bit (1byte) | O | |||
ulong | System.UInt64 | 0 ~ 18,446,744,073,709,551,615 | 64bit (1byte) | X | |||
float | System.Single | ±1.5e-45 ~ ±3.4e38 | 4byte | ||||
double | System.Double | ±5.0e-324 ~ ±1.7e308 | 8byte | ||||
decimal | System.Decimal | ±1.0 × 10−28 ±7.9 × 1028 | 16byte | ||||
char | System.Char | U+0000 ~ U+ffff | 유니코드 16bit | ||||
string | System.String | 8bit (1byte) | |||||
bool | System.Boolean | 8bit (1byte) |
2-1. 정수 자료형 |
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
byte a = 200;
sbyte b = -126;
short c = 30000;
ushort d = 40000;
int e = 100000000;
uint f = 1000000000;
long g = 1000000000000000000;
ulong h = 10000000000000000000;
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
Console.WriteLine(e);
Console.WriteLine(f);
Console.WriteLine(g);
Console.WriteLine(h);
}
}
}
위 코드는 정수 자료형 (byte, sbyte, short, ushort, int, uint, long, ulong) 에 관한 입력과 출력입니다.
설정해둔 숫자 외에 추가로 0을 붙이거나 1을 올려서 적으면 오버플로우나 언더플로우가 발생하게 됩니다.
※ 오버플로우 : 데이터 형식의 범위를 넘어가는 값일 경우 오버플로가 발생하여 제일 작은 음수 값으로 넘어가는 것.
※ 언더플로우 : 데이터 형식의 범위를 넘어가는 값일 경우 언더플로가 발생하여 제일 큰 양수 값으로 넘어가는 것.
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
byte a = 255;
sbyte b = -128;
a++;//실행시 오버플로우가 발생하여 0부터 시작
b--;//실행시 언더 플로우가 발생하여 128부터 시작
Console.WriteLine(a);
Console.WriteLine(b);
}
}
}
위 코드를 실행시켰을 때 우리는 a값에는 오버플로우가 발생하는 것을 b값에는 언더플로우가 발생하는 것을 볼 수 있습니다.
2-2. 실수 자료형 |
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
float a = 123.567891011f;
double b = 1234.567878910111213;
decimal c = 1234.56789101112131415161718m;
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
}
}
}
위 코드는 실수 자료형 (float, double, decimal) 을 입출력 하는 코드입니다.
정수 자료형의 코드와 비슷해보이지만 잘 보면 다른게 있는데 바로 float자료형의 값의 끝에는 f가 붙고
decimal 자료형의 끝에는 m이 붙어있는 것을 볼 수 있습니다.
C#의 실수 자료형의 기본은 double 이며 자료값에 f, m 을 붙히지 않으면 double 자료형으로 인식이 되는데 이를 방지하고 '이 자료는 float의 형태입니다.' 또는 'decimal의 형태입니다.'를 나타내어 주기 위해서는 f,m을 반드시 붙혀야합니다.
만약 이를 제거하고 실행하게 될 시
라고하는 오류를 볼 수 있으므로 꼭 float 자료형에는 'f', decimal자료형에는 'm'을 붙혀주셔야 합니다.
2-3. 문자, 문자열 자료형 |
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
char a = 'A'; //문자
String b = "Hello!"; //문자열
Console.WriteLine(a);
Console.WriteLine(b);
}
}
}
※문자(char) : 문자는 'A' , 'b' , 'a' , '!' 등과 같은 단일 기호를 말한다.
※문자열(String) : 문자열은 "Hello" , " World !" 와 같은 두개 이상의 문자 조합으로 만들어진 것이다.
문자와 문자열의 구분은 반드시 해주어야 하는데 이를
작은 따옴표 ' ' (문자) 와 큰 따옴표 " " (문자열)로 구분해주어야 합니다.
2-4. 논리 자료형 |
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
bool a = true;
bool b = false;
Console.WriteLine(a);
Console.WriteLine(b);
}
}
}
논리(boolean) 자료형은 참과 거짓을 나타내는 자료형입니다.
보시면 문자열(String) 자료형과 같이 비슷하게 문자열 값을 그대로 도출하는 것 처럼 보이실 수 있겠지만
따옴표의 존재 없이 변수에 참(true) 과 거짓(false)를 담고 있습니다.
2-5. 객체(object) 자료형 |
객체(object) 자료형은 각각의 존재를 다루는 것 입니다.
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
object a = 12345678910; //정수
object b = 12345.678910;//실수
object c = true; //논리
object d = "안녕하세요";//문자열
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
}
}
}
코드에서 볼 수 있는 것 처럼 Object 안에는 정수, 실수, 논리, 문자열 이 모두 들어가 있고 제대로 출력되고 있습니다.
※모든 자료형이 가능
이렇게 사용 할 수 있는 이유는 object(객체 자료형)가 모든 자료형의 조상격이라고 할 수 있기 때문입니다.
(※object라는 것에 대해서 제대로 이해하기 위해서는 객체, 클래스에 대한 이해가 동반되어야 하기에
차후 추가로 설명하도록 하겠습니다.)
여기까지 C# 변수와 자료형에 대해 다루어보았습니다.
다음 게시물은 C# "출력문" 입니다.
'C#' 카테고리의 다른 글
[C#_6] 반복문(for,foreach,while,do while) (0) | 2021.09.24 |
---|---|
[C#_5] 조건문 (if, else, switch) (0) | 2021.09.23 |
[C#_4] 출력문, 입력문, 연산자, 문자열 보간 (0) | 2021.09.21 |
[C#_2] 콘솔 출력 (0) | 2021.09.07 |
[C#_1] C# 설치 (0) | 2021.09.07 |