본문 바로가기

:SERVER/C#(C Sharp)

C# 변수, 문자열

반응형

1. 변수

using System;

namespace CSharp {
    class Program{
        // Main function
        static void Main(string[] args){
            int hp = 100; 
            // byte(1 byte, 0~255), short(2 byte, -3만x~3만x), int(4 byte, -21억~21억), long(8 byte)
            // sbyte(1 byte, -128~127), ushort(2 byte, 0~6만x), uint(4 byte, 0~43억x), ulong

            // 10진수(0-9로 표기)
                // 00 01 02 03 04 05 06 07 08 09 > 10 11 12...
            // 2진수(0,1로 표기)
                // 0b00 0b01[1] > 0b10[2] 0b11 > 0b100[4] ...
                // 0b11111111[255]
            // 16진수(0-15 == 0-9,a,b,c,d,f로 표기)
                // 0x00 0x01 0x02 0x03 ... 0x0f[15] > 0x10[16]
            
            // 2진수 <-> 16진수 변환(2진수 4자리씩 잘라서 계산)
                // 0b10001111 = 0x8F
                // 2진수 1000 = 16진수 8
                // 2진수 1111 = 16진수 F
            // 2진수 음수 표현 = 2의 보수를 사용
                // 00000000 제일 왼쪽자리인 7번째 자리를 부호 자리로 함
                // 0b10000000[-128], 0b11111111[-1] ,0b01111111[127]
            
            // -------------------------------------------------------------------------------------
            bool b = false;
            // bool(1 byte, true or false)

            // 소수
            float f = 3.14f; // 4byte
            double d = 5.012; // 8byte

            // 하나의 문자
            char c = '가'; // 2byte
            c = 's';
            // 문자열
            string str = "Hello World!";          
            Console.WriteLine(str);
            // -------------------------------------------------------------------------------------
            // 형식 변환
            int a = 0xFFFFFFFF;
            short b = (short)a; // 0xFFFF값인 -1로 저장됨. 바이트가 큰 값을 작은 값에 넣는 경우 명시적 변환(캐스팅)을 사용해야함. 반대 경우엔 필요없음.

            // 바이트 크기는 값지만 부호가 다른 경우
            byte c = 255; // 255
            sbyte sb = (sbyte)c; // -1 다른값이 저장됨 underflow, overflow

            // 소수 형식 변환
            float f = 3.1414f;
            double d = f; // 인접한 다른 값으로 저장함. 3.1414000087...
            // -------------------------------------------------------------------------------------
            // 산술 연산자 +(더하기),-(빼기),*(곱하기),/(나누기),%(나머지 값)
            int hp = 0;
            hp++; // hp = hp+1;  hp+=1;
            hp--; // hp = hp-1;  hp-=1;
            ++hp; // hp = hp+1;  
            --hp; // hp = hp-1;

            hp = 100;
            Console.WriteLine(hp++); // 100
            hp = 100;
            COnsole.WriteLine(++hp); // 101

            // 비교 연산자
            // <,<=,>,>=,==,!=
            bool b = hp<100;

            // 논리 연산자
            // &&(and),||(or),!(not)
            // -------------------------------------------------------------------------------------
            // 비트 연산
        
            // << 왼쪽으로 shift. 2진수
            int num = 1;
            num = num<<3; // 8

            // >> 오른쪽으로 shift. 2진수
            num = 8;
            num = num>>1; // 4. 부호 자리의 비트는 고정하고 옮김.

            // & and 같은 자리 비트를 and 연산함
            // 0b00010110
            // 0b00101101 
            // ----------
            // 0b00000100 2개의 숫자를 &(and)연산 한 결과

            // | or 같은 자리 비트를 or 연산 함
            // 0b00010110 
            // 0b00101101 
            // ----------
            // 0b00111111 2개 숫자를 |(or)연산 한 결과

            // ^ xor 배타적 논리 합. 같은자리 값이 다르면 1, 같으면 0
            // 0b01011100
            // 0b00101101
            // ----------
            // 0b01110001 2개 숫자를 ^(xor)연산 한 결과
            // xor은 암호화에서 자주 사용.
            int id = 123;
            int key = 401;
            int a = id^key; 
            int b = a^key; // 123. id값이 나옴


            // ~ not 0은 1로, 1은 0으로 바꿔서 계산
            // 0b00101101을 not 처리하면 0b11010010

            // -------------------------------------------------------------------------------------
            // 연산자 우선순위
            // 1. ++, --
            // 2. *,/,%
            // 3. +,-
            // 4. <<,>>
            // 5. <,>
            // 6. ==,!=
            // 7. &
            // 8. ^
            // 9. | ...
            // 괄호()를 넣어서 우선순위를 높게 만들기.
            // -------------------------------------------------------------------------------------
            // var: 컴파일러가 알아서 타입을 정해줌.
            var num = 3;
            var st = "Hello world,.";

            Console.WriteLine("Hello World! {0}", hp);
        }
    }
}

2. 문자열

using System;
using System.Collections;

namespace CSharp { 
    class Program{
        // Main 함수
        static void Main(string[] args) {
            string name = "Harry Porter";

            //1.찾기
            bool found = name.Contains("Harry");
            
            //문자를 찾아서 index 반환. 없는 경우 -1
            int idx = name.IndexOf('P');

            //2. 추가
            name += " Junior";

            //소문자/대문자로 변형
            string lowerCaseName = name.ToLower();
            string upperCaseName = name.ToUpper();

            //특정 문자를 변경 (r을 l로 변경)
            string newName = name.Replace('r','l');
            
            //3.분할 Split()
            string subStringName = name.Substring(5);            
        }
    }
}
반응형

':SERVER > C#(C Sharp)' 카테고리의 다른 글

클래스, 생성자, static  (0) 2022.09.16
스택,힙 메모리, 클래스  (0) 2022.09.16
함수, ref, out  (0) 2022.09.15
반복문  (0) 2022.09.14
분기문(if문, switch문, 삼항연산자)  (0) 2022.09.14