[C# 교과서] 6~9. 데이터 형식, 변수 저장, 연산자 사용하기
C# 7.0 버전부터는 언더스코어(_)로 문자를 사용하는 숫자 구분자를 제공하여 세 자리마다 콤마로 구분되는 긴 숫자 형태를 표현할 수 있음
int number = 1_000_000; 으로 작성하고 출력하면
1000000
부호 없는 정수 데이터 형식은 byte, ushort, uint, ulong
음수 값을 제공할 수 없지만 양의 정수 값을 2배로 표현 가능함
실수 데이터
double, float : 부동소수점 방식
decimal : 10진 방식 (금융 관련 프로그램 만들 때 유용)
decimal은 float와 double에 비해서 가장 정밀도가 높은 정확한 자료를 담을 수 있음
값 자체의 범위는 float와 double에 비해서 작지만, 소수점 28자리는 정확도가 높음
f는 float, d는 double, m이 decimal
C#에서 기본 소수점은 double임
null 기능
int? x = null;
숫자 형식의 변수를 선언할 때 ?(물음표) 기호를 붙이면 null 가능 형식으로 변경 됨
@ 기호로 여러 줄 문자열 저장하기
문자열 앞에 @ 기호를 붙이면 문자열 자체를 그대로 문자열에 저장함
이스케이프 시퀀스도 함께 저장함
using System;
namespace codingstudy
{
class Program
{
static void Main(string[] args)
{
string multi = @"
안녕하세요
방가요
";
Console.WriteLine(multi);
}
}
}
이 때 실행하면 줄 바꿈 및 소스코드에 있는 빈 공백까지 포함하여 문자열로 저장 됨
디렉토리 경로나 자바스크립트 코드 블록, SQL 문 등 여러 줄에 걸쳐 작성할 내용은 @기호를 앞에 붙여 문자열 하나로 인식하게 할 수 있음
문자열 보간법
문자열을 묶을 때 편리하게 사용
using System;
namespace codingstudy
{
class Program
{
static void Main(string[] args)
{
string hi = "hihi";
//Console.WriteLine("{0}",hi);
Console.WriteLine($"{hi} 안녕");
}
}
}
{0},{1] 형태의 자리 표시자 대신 사용
이때 문자열 앞에는 $가 있어야 사용 가능함
String.Format() 메서드로 문자열 묶기
Console.WriteLine() 메서드 처럼 순서대로 뒤에서 오는 문자열을 채워 문자열로 반환
using System;
namespace codingstudy
{
class Program
{
static void Main(string[] args)
{
string msg = string.Format("{0}아, {1}", "아","안녕");
Console.WriteLine(msg);
}
}
}
닷넷 데이터 형식
System.Char
System.String
System.Boolean
변수를 선언하는 방식은 기존과 동일함
래퍼 형식
닷넷 데이터 형식을 다른 말로 래퍼 형식이라고도 함
래퍼 형식은 int, string같은 기본 형식을 클래스 또는 구조체로 감싼 닷넷 데이터 형식을 의미
Int32 number = 1234;
String str = “안녕”;
문자열 입력 관련 메소드
- Console.ReadLine() : 콘솔에서 한 줄을 입력받음. 또 콘솔 앱 프로그램에는 현재 시점에서 잠시 멈추는 기능이 있어 엔터를 누를 때까지 대기
- Console.Read() : 콘솔에서 한 문자를 정수로 입력받음.
- Console.ReadKey() : 콘솔에서 다음 문자나 사용자가 누른 기능 키를 가져옴
콘솔에서 입력한 값을 그대로 출력하려면
Console.WriteLine(Console.ReadLine());
using System;
namespace codingstudy
{
class Program
{
static void Main(string[] args)
{
Console.Write("이름이 무엇이냐");
string name = Console.ReadLine();
Console.WriteLine("제 이름은 {0}입니다.", name);;
}
}
}
Convert 클래스의 주요 메서드
- Convert.ToString() : 숫자 데이터 형식을 문자열로 변경
- Convert.ToInt32() : 숫자 데이터 형식을 정수 형식으로 변경, int.Parse()로 대체 가능
- Convert.ToDouble() : 숫자 데이터 형식을 실수 형식으로 변경, double.Parse()로 대체 가능
- Convert.ToChar() : 입력받은 숫자 또는 문자열 하나를 문자로 변경
이진수 다루기
PadLeft() 메소드를 사용해서 8칸을 기준으로 이진수 문자열을 출력하고 앞부분은 0으로 채움
using System;
namespace codingstudy
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Convert.ToString(10,2));
Console.WriteLine(Convert.ToString(5,2));
// PadLeft() 메소드 사용
Console.WriteLine(Convert.ToString(5,2).PadLeft(4,'0'));
byte x = 10; // 0000 1010
Console.WriteLine(
$"십진수 : {x} -> 이진수 : {Convert.ToString(x,2).PadLeft(8,'0')}"
);
}
}
}
var 키워드로 암시적 형식화된 로컬 변수 만들기
C#에서 var는 매우 강력한 형식
var로 선언된 변수에 저장되는 값을 자동으로 추론해서 적당한 형식으로 변환 → 형식 추론
int number = 1234; // 명시적으로 형식화
var number = 1234; // 암시적으로 형식화
암시적으로 형식화한 변수의 데이터 타입을 알고 싶을 때는 GetType() 메소드 사용
number.GetType();
[System.Int32]
변수의 기본값을 default 키워드로 설정
C#에서 기본으로 제공하는 값으로 초기화하고 싶다면 다음과 같이 default 키워드를 사용
using System;
namespace codingstudy
{
class Program
{
static void Main(string[] args)
{
int i = default;
double d = default;
char c = default;
string s = default;
Console.WriteLine($"[{i}],[{d}],[{c}],[{s}]");
Console.WriteLine($"[{i}],[{d}],[{c==Char.MinValue}],[{s==null}]");
}
}
}
출력값 >
[0],[0],[],[] [0],[0],[True],[True]
단항 연산자
+연산자 : 특정 정수형 변수 값을 그대로 출력. 사실상 특정 기능 없음.
-연산자 : 특정 정수형 변수 값을 음수로 변경하여 출력. 음수 값이 들어 있다면 양수로 변환하여 출력.
변환 연산자
() 괄호 기호를 사용하여 특정 값을 원하는 데이터 형식으로 변환할 수 있다
int number = (int)3.14;
Console.WriteLine(number);
3
문자열 연결 연산자
+로 문자열 연결이 가능하다
using System;
namespace codingstudy
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello" + "World");
}
}
}