C# 진입점 / 자료형 / 비트연산자

선비Sunbei·2023년 1월 8일
0

C#

목록 보기
3/18
post-thumbnail
post-custom-banner

C++과 JAVA와의 차이점 중심으로 다룰 예정입니다.

C#의 진입점

using System;

namespace Study1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

Visual Studio에서 실행하면 다음과 같이 기본적으로 코드가 생성된다.
C#은 Main 함수를 찾아서 실행한다. class는 꼭 Program 클래스가 아니라 다른 클래스이어도 된다. 만약 Main 함수가 2개 이상일 경우 StartupObject(C# 컴파일러 옵션)을 이용해서 특정 클래스의 Main 함수로 지정해줄 수 있다.

프로젝트를 우클릭 후, [속성] -> [시작 개체] 에서 샌택해주면 된다.

C#의 자료형

자료형byteshortintlong
바이트 수1248

여기서 주의할 점은 short, int, long은 signed 자료형인 반면에
byte는 unsigned 자료형으로 0~255까지의 값을 갖는다.
일반적으로 숫자를 입력하면 int형으로 설정된다.

자료형sbyteushortuintulong
바이트 수1248

비슷하게 sbyte는 signed byte로-128~127까지의 범위를 갖고, ushort, uint, ulong은 unsigned 자료형으로 0과 양수의 값만 갖는다.

자료형floatdouble
바이트 수48

소수의 기본 자료형은 double로 계산된다.
따라서 float 변수에 값을 대입할 때 강제 형 변환이 필요로 한다.
ex) float variable = 3.14f;
float variable = (float)3.14

C#의 경우 f나 (float)으로 형 변환을 하지않으면 float 변수에 담을 때 에러가 발생한다. 이는 C#이 버그가 생길 여지가 아예 없애자는 철학을 갖고 있기 때문이다.

자료형char
바이트 수2

C/C++과 다르게 character는 2byte로 영어뿐만 아니라 한국어까지 변수에 담을 수 있다.

비트연산자

C/C++과 유사하다.
signed 자료형의 경우 최고 바이트 수가 1이면 음수이다. (2의 보수에 의해)
unsigned 자료형의 경우 2의 보수를 사용하지않고 모든 bit를 0과 양수를 표현하기 위해 사용된다.

비트 연산자는 다음과 같다.

비트연산자>><<&|^~
설명우측 시프트연산자좌측 시프트연산자andorxornot

우측 시프트 연산자로 인해 생기는 비트는 해당 변수가 양수면 0으로, 음수면 1으로 채워진다. unsigned 자료형의 경우 항상 0 혹은 양수이므로 0으로 채워진다.

using System;

namespace Study1
{
    class Program
    {
        static void Main(string[] args)
        {
            byte val = 0xFF;             // 0b 1111 1111 , 255
            val = (byte)(val >> 1);      // 0b 0111 1111 , 127
            Console.WriteLine($"{val}"); // 127
            
            sbyte val2 = -128;           // 0b 1000 0000 , -128
            val2 = (sbyte)(val2 >> 1);   // 0b 1100 0000 , -64
            Console.WriteLine($"{val2}"); // -64

            sbyte val3 = 127;           // 0b 0111 1111 , 127
            val3 = (sbyte)(val3 >> 1);   // 0b 0011 1111 , 63
            Console.WriteLine($"{val3}"); // 63
        }
    }
}

좌측 시프트 연산자의 경우 최상위 비트를 지우고, 최하단의 비트를 0으로 설정한다. 이것만 유의하면 나머지는 쉬울 것 같다.

  • var : 컴파일러가 대입된 값에따라서 자료형을 찾아주는 자료형
    ex> var a = 2; // int로 캐스팅
    ex> var b = "string"; // string으로 캐스팅
  • 3항 연산자 구조 : 조건식?:TRUE일 시 : FALSE일 시;
    ex> 1==1?RETURN:NOT-RETURN;
    ex> 1!=1?NOT-RETURN:RETURN;
post-custom-banner

0개의 댓글