본문 바로가기
C#

변수와 자료형

by 김차루 2024. 5. 1.

1. 기본 자료형 소개

1) 자료형 (Data Type)

    기본 자료형을 사용하여 변수를 선언하고 값을 저장할 수 있다. 

자료형 .NET 데이타 타입 크기(바이트) 범위
sbyte System.SByte 1 -128 ~ 127
byte System.Byte 1 0 ~ 255
short System.Int16 2 -32,768 ~ 32,767
ushort System.Int16 2 0 ~ 65,535
int System.Int32 4 -2,147,483,648 ~ 2,147,483,647
uint System.Int32 4 0 ~ 4,294,967,295
long System.Int64 8 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
ulong System.UInt64 8 0 ~ 18,446,744,073,709,551,615
float System.Single 4 ±1.5 × 10^-45 ~ ±3.4 × 10^38
double System.Double 8 ±5.0 × 10^-324 ~ ±1.7 × 10^308
decimal System.Decimal 16 ±1.0 × 10^-28 ~ ±7.9 × 10^28
char System.Char 2 유니코드 문자
string System.String   유니코드 문자열
bool System.Boolean 1 true 또는 false
  • 자료형의 크기, 표현 범위, 부호 여부 등의 특성에 따라 세분화된 자료형으로 구분된다. 

(1) 세분화 해서 사용하는 이유

  • 메모리의 효율적인 사용
  • 정확한 데이터 표현
  • 타입 안정성

2) 리터럴(literal)

    1. 리터럴의 개념과 역할

  • 프로그램에서 직접 사용되는 상수 값으로, 소스 코드에 직접 기록되어 있는 값
  • C#에서 리터럴은 컴파일러에 의해 상수 값으로 처리되며, 변수나 상수에 할당되거나 연산에 사용

    2. 리터럴의 종류와 예시

  • C#에서는 다양한 종류의 리터럴을 지원
  • 각각의 리터럴은 다른 형식으로 표현되며, 다양한 값의 범위를 가지고 있다.
  • 정수형 리터럴
    • 10 (int)
    • 0x10(16진수 int)
    • 0b10(2진수 int)
    • 10L (long)
    • 10UL(unsigned long)
  • 부동소수점형 리터럴
    • 3.14 (double)
    • 3.14f (float)
    • 3.14m (decimal)
  • 문자형 리터럴
    • 'A' (char)
    • '\n' (개행 문자)
    • '\u0022' (유니코드 문자)
  • 문자열 리터럴
    • "Hello, World!" (string)
    • "문자열 내 "따옴표" 사용하기"
    • @"문자열 내 개행 문자 사용하기"
int num = 10;
float f = 3.14f;
char c = 'A';
string str = "Hello, World!";

int num1 = 0x10;
int num2 = 0b1010;
long num3 = 100000000000000L;

 

 

2. 변수 선언과 초기화 방법

1) 변수란?

  •     데이터(숫자, 문자 등)를 저장하고 사용하기 위한 할당받은 공간
  •     필요에 따라 데이터를 저장하거나 수정 가능

2) 변수 선언

    C#에서 변수를 선언하는 방법은 다음과 같다.

자료형 변수이름;

//ex : 변수 선언 방법
int num;

//ex : 변수 여러개를 선언
int num1, num2, num3;

 

 

3) 변수 초기화

    변수를 선언한 후에는 변수를 초기화하여 값을 저장해야 한다. 

변수이름 = 값;

//ex
int num;
num = 10;

//ex : 변수를 선언과 동시에 초기화할 수 있다.
int num = 10;

//ex 한 번에 여러개의 변수를 초기화할 수 있다.
int num1, num2, num3 = 10; (X)
num1 = num2 = num3 = 10; (O)

 

 

3. 변수명

1) 키워드 (Keywords)

  • c#에서는 이미 예약된 단어들이 있기 때문에 변수, 메소드, 클래스 등의 이름으로 사용할 수 없다. 
  • 이러한 단어를 키워드(keywords)라고 한다.
  • 다음은 키워드의 종류이다.
abstract  as  base  bool  break  byte  case  catch  char  checked  class  const  continue decimal  default  delegate  do  double  else  enum  event  explicit  extern  false  finally fixed  float  for  foreach  goto  if  implicit  in  int  interface  internal  is  lock long  namespace  new  null  object  operator  out  override  params  private  protected  public readonly  ref  return  sbyte  sealed  short  sizeof  stackalloc  static  string  struct  switch this  throw  true  try  typeof  uint  ulong  unchecked  unsafe  ushort  using  virtual  void volatile  while

 

2) 식별자(Identifiers)

    변수, 메서드, 클래스, 인터페이스 등에 사용되는 이름을 말한다. 이 이름은 키워드와 동일하게 사용할 수 없다.

    식별자를 사용할 때, 다음과 같은 규칙을 따라야 한다.

  • 첫 문자는 알파벳, 언더스코어(_)가 올 수 있다.
  • 두 번째 문자는 알파벳, 언더스코어, 숫자가 올 수 있다.
  • 대소문자를 구분한다.
  • 키워드와 같은 이름으로 사용할 수 없다.
// 좋은 예시
int playerScore;
string playerName;
float itemPrice;

// 나쁜 예시 (중요 의미 있는 변수명 짓기)
int x1;  // 변수명이 의미를 알기 어려움
string a; // 변수명이 명확하지 않음

// 오류 예시
int 1stNumber;  // 변수명은 숫자로 시작할 수 없음
string my-name; // 변수명에 하이픈(-)을 사용할 수 없음
float total$;   // 변수명에 특수문자($)를 사용할 수 없음

 

3) 코드 컨벤션(Code Convention)

    개발자들 사이에서 약속된 코드 작성 규칙이다. 코드의 가독성을 높이고 유지 보수를 쉽게 하기 위해 사용된다. 코드 컨벤션은 프로그래밍 언어마다 다를 수 있으며, C#은 다음의 규칙을 따를 예정이다.

   

(1) 식별자 표기법

  • PascalCase : 클래스, 메서드, 프로퍼티 이름 등에 사용된다. 단어의 첫 글자는 대문자로 시작하며, 이후 단어의 첫 글자도 대문자로 표기한다. ex) ClassName, MethodName, PropertyName
  • camelCase : 변수, 매개변수, 로컬 변수 이름 등에 사용된다. 단어의 첫 글자는 소문자로 시작하며, 이후 단어의 첫 글자는 대문자로 표기한다. 예를 들어, variableName, parameterName, localVariableName
  • 대문자 약어 : 예외적으로 전체 글자가 모두 대문자인 식별자도 있다. 대표적으로 ID, HTTP, FTP 등이 있다.

(2) 들여쓰기

  • 탭 또는 스페이스 4칸을 사용하여 코드 블록을 들여쓴다.

(3) 중괄호 위치

  • 중괄호{}는 항상 새로운 줄에서 시작한다.

(4) 빈 줄 사용

  • 관련 없는 코드 사이에는 빈 줄을 사용하여 구분한다.
  • 메서드, 클래스 등의 블록 사이에는 두 줄을 띄어쓴다.

(5) 주석

  • // 한 줄 주석을 사용한다.
  • /* / 여러 줄 주석을 사용할 때는 /를 다음 줄에서 시작하고, */를 새로운 줄에서 끝내도록 한다.

 

4. 명시적 및 암시적 형변환

1) 형변환이란?

    자료형이 다른 변수 간에 값을 할당하거나 연산을 수행할 수 있다. 이때, 자료형이 다른 변수 간에 값을 할당하거나 연산을 수행하려면 명시적 형변환 또는 암시적 형변환을 해주어야 한다. 

 

2) 명시적 형변화

    다음과 같이 (자료형) 형식으로 수행할 수 있다.

int num1 = 10;
long num2 = (long)num1;   // int를 long으로 명시적 형변환

 

3) 암시적 형변환

(1) 작은 데이터 타입에서 더 큰 데이터 타입으로 대입하는 경우

  • byte, short, char 등 작은 데이터 타입에서 int, long, float 등 더 큰 데이터 타입으로 대입할 때 암시적 형변환이 발생한다. 
byte num1 = 10;
int num2 = num1;  // byte형에서 int형으로 암시적 형변환

 

(2) 리터럴 값이 대입되는 경우

  • C# 컴파일러는 리터럴 값의 데이터 타입을 판별하여 변수에 암시적으로 형변환한다.
float result = 1;  // 1은 int형 리터럴 값이지만 float형으로 암시적 형변환

 

(3) 정수형과 부동소수점형 간의 연산을 수행하는 경우

  • 정수형과 부동소수점형의 연산 결과는 부동소수점형으로 변환된다.
int num1 = 10;
float num2 = 3.14f;
float result = num1 + num2;  // int형과 float형의 덧셈에서 float형으로 암시적 형변환
  • 암시적 형변화은 프로그래머가 직접 형변환 코드를 작성하지 않아도 되므로 코드를 간결하게 작성할 수 있다.
  • 하지만, 암시적 형변환이 발생하는 경우 데이터 타입을 신중하게 고려하여 코드를 작성해야 한다. 

 

5. var 키워드 사용법

1) var 키워드

  • C# 3.0부터는 var 키워드를 사용하여 변수를 선언할 수 있다.
  • var 키워드를 사용하여 변수를 선언하면 변수의 자료형이 컴파일러에 의해 자동으로 결정된다. 
  • 즉, 초기화하는 값의 자료형에 따라 변수의 자료형이 결정된다. 
var num = 10;         // int 자료형으로 결정됨
var name = "kero";   // string 자료형으로 결정됨
var pi = 3.141592;    // double 자료형으로 결정됨
  • var 키워드를 사용하여 변수를 선언할 때에는 초기화하는 값의 자료형에 따라 변수의 자료형이 결정되므로, 변수를 선언하는 시점에서 변수의 자료형을 정확히 알 수 없는 경우에 유용하게 사용할 수 있다. 

'C#' 카테고리의 다른 글

반복문  (1) 2024.05.01
조건문  (0) 2024.05.01
연산자와 문자열 처리  (0) 2024.05.01
프로그래밍 기본 요소  (0) 2024.04.26