본문 바로가기
컴퓨터/C#

[C#] 문자형 기본타입과 형변환, 문법 요소 , 콘솔창에서 값 입력받아 출력하기

by 아기상어  2020. 5. 23.

  • 문자형 기본 타입
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Configuration;
using System.Text;
using System.Threading.Tasks;

namespace _20200522_001
{
    class Program
    {
        static void Main(string[] args)
        {
            char ch1;    //탭문자를 표현

            ch1 = '\uAC00';               //유니코드 '가' 출력됨.
            Console.WriteLine(ch1);

            ch1 = '\\';                    // \를 두번 사용하면 \가 출력
            Console.WriteLine(ch1);

            string text = "Hello World"; // 문자열 을 담을수 있음.
            Console.WriteLine(text);

            text = "\tHello \nWorld";   // 탭키 엔터키
            Console.WriteLine(text);

            text = @"\tHello\nwWorld"; // @를"앞에 사용시 \를 이스케이프 시퀀스로 취급하지 않음
            Console.WriteLine(text);

            text = "Hello";
            Console.WriteLine(text+ " " + "World");//+로 문자열 같이 출력

            char ch2 = '[';
            char ch3 = '\t';
            char ch4 = ']';
            char ch5 = '\n';
            Console.Write(ch2);
            Console.Write(ch3);
            Console.Write(ch4);
            Console.Write(ch5);     // \를 사용한 탭기능. 엔터기능 사용 가능

            ch1 = (char)7;         //   아스키코드 BEL 들어가서 소리남

            Console.Write(ch1);

        }
    }
}

- char형은 2바이트 수용 가능

 

- char형에 \u와 뒤에 유니코드 문자 번호를 16진수로 명시해서 값을 입력하면 출력할때 유니코드 문자로 나온다.

 

- BEL 명령이 아스키코드 7번에 있기 때문에 7을 char형으로 캐스팅해서 입력하면 출력할때 알람소리가 들린다.
 값을 봤는데 ' \a'가 들어가 있었음.

 

- string형은 입력값에 따라 메모리에 동적으로 할당된다.

 

- char형과 달리 string 형은 '+'연산을 지원한다. 문자열을 +를 이용해 연결할 수 있음.

 

 

  • 불린(boolean)형 기본 타입

true / false 값만 담을 수 있는 자료형.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace _20200522_002
{
    class Program
    {
        static void Main(string[] args)
        {
            bool isNumeric = false;
            bool isNumeric2;
            isNumeric2 = 7 > 6;   // 대입연산자'=' 보다 7<6의 논리연산자 '>' 가 먼저 실행됨
            Console.WriteLine(isNumeric);
            Console.WriteLine(isNumeric2);
        }
    }
}

 

- C에서는 0, 1로도 할 수 있었는데 C#은 따로 변환을 해야 가능.


형변환

  • 암시적 변환
            byte b = 255;  //255만 쓰면 int형 255정수값 이지만 byte도 정수를 쓰기때문에 형변환 안해도 봐줌 

같은 정수형을 사용하거나 범위가 작은 데이터에서 그 값을 포함하는 큰 데이터로 형변환 하는건 대충 봐준다.
물론 그 반대는 암시적 변환이 불가능하다.

 

  • 명시적 변환
            ushort u = 65;
            char c = (char)u;    // '65'를 char형으로 변환, 아스키코드 65번 값은 'A'
            Console.WriteLine(c);// A 출력

            int n = 40000;
            short s = (short)n;     // +32,767 까지 밖에 저장을 못하기 때문에 -값이 출력
            Console.WriteLine(s);   // -25536 출력

각 타입에 맞지 않는 값을 입력할때는 (변환하려는 타입)을 써서 형변화 시켜야함

저걸 써도 저장하려는 값이 저장범위를 넘어갈경우 제대로된 값을 저장할 수 없음.

 

 

 


기본 문법 요소

  • 예약어
sbyte, byte, short, ushort, int, uint, long, ulong  // 정수형
float, double, decimal				// 실수형
char, string					// 문자형
bool						// 논리형

C#에서 문법표현을 위해 미리 예약된 단어들

 

 

 

  • 식별자

예약어 뒤에 자유롭게 지었던 이름이 식별자. 대충짓거나 한글, \를 사용해서 지어서 못알아 보게 만들면 잘릴위험있음
보통은 명명규칙을 따라서 지음.

 

 

 

  • 리터럴

소스코드에 포함된 값, 보통 식별자 쓰고 대입연산자 '=' 오른쪽에 나오는 값들을 의미함.

 

 

 

  • 변수

식별자 = 변수명, 저장소가 메모리에 할당돼 값을 담아 놓을 수 있는 역할을 함

 

 

 

 

  • 상수
const int n=5;
n = 10; // 컴파일 오류뜸


상수(constant), 한번 값을 입력하면 그 이후로 다른 값을 대입할 수 없음.
타입앞에 const를 붙여 사용

 

 

 

  • 문장부호와 연산자
{,},;,=,+,-,*,/ 등등

';' 는 컴파일러에게 끝을 알리는 문장부호
'=' 는 R_Value를 L_Value에 대입함

'+,-,*,/,' 산술연산자로 정수형, 실수형 데이터에 사용가능하다.

 

 

 


콘솔창에서 값 입력받기 와 {n}을 이용해 변수 출력

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _2020522_003
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("아무글자나 쓰세요");
            string input = Console.ReadLine();  // 글자를 입력받아서 input 변수에 넣어준다.
            Console.WriteLine("입력받았습니다"); 
            Console.Write("입력하신 내용은 ["+input+"]입니다\n"); // +를 이용해 Write 한개로 출력
            Console.WriteLine("입력하신 내용은 [{0}]입니다", input); // {n}을 이용해 출력
            
            
            int iNum = 100;
            int iNum2 = 200;
            Console.Write("내장된 자료의 값은 [{0}][{1}]입니다.\n", iNum, iNum2);   // 중괄호에 숫자는 뒤에 나오는 변수의 순서를 써논것
        }
    }
}