MS사에서 java의 편의성과 C++의 속도를 동시에 만족시키기 위해 개발한 언어




해당 경로에 독자적으로 실행할 수 있는 확장자인 .exe 형태로 저장됨

Console.ReadLine 없이 실행하면 콘솔 창이 바로 닫힘
=> 문자열 출력 이후로 명령이 즉시 종료되기 때문
// : 한 줄 주석
/*
여러 줄 주석
*/
//
//
// 한 줄 주석 여러개 : 범위 드래그 후 ctrl + k + c, ctrl + k + u 로 해제
char : 1 byte
int : 4 byte
float : 4byte
long : 8byte
String : 가변
자료형을 나누는 이유 : ram 의 저장공간을 효율적으로 사용하기 위해
string val1 = "123";
int val2 = int.Parse(val1); => string 에서 int로
float val3 = float.Parse(val1); => string 에서 float로
string val4 = val2.ToString(); => int로 에서 string로
float f = 12.3f;
int n = (int)f; => 강제 형변환(float => int)
값을 보관하는 장소
- 변수는 반드시 타입과 함께 선언한 뒤 사용해야 한다.
ex) int a; string str; (o), b = 1; st = "abc" (x)
멤버 변수(인스턴스 변수 & 스태틱 변수) : 클래스에서 변수 선언
-> 프로그램 시작 시 할당, 프로그램 종료 시 해제
지역 변수 : 메서드에서 변수 선언
-> 함수 호출 시 할당, 함수 return 시 해제
static void Main(string[] args)
{
int a = 1;
Console.WriteLine($"a : {a}");
Funtc(a);
Console.WriteLine($"a : {a}");
}
static void Func(int p_a)
{
a = 2;
}
출력
1
1
Func 의 a 와 main 에서의 a는 동명이인( main 에서는 멤버변수, Func 에서는 지역변수)
-> Func 함수를 적용해도 main 에서의 a 는 바뀌지 않는다.
int a = 0;
int 123a = 0 => 불가(앞에 숫자 위치 불가능)
int +a = 0 => 불가(앞에 부호 위치 불가능)
int a123 = 0 => 가능
int a+12 = 0 => 불가능
int a_123 = 0 => 가능
byte bb = byte.MaxValue;
long lmax = long.MaxValue;
int min = int.MinValue;
위와 같은 방식으로 각 자료형의 최댓값이나 최솟값을 이용할 수 있다.
MaxValue 에 커서를 놓고 f12(정의로 이동) 을 하면 아래와 같이 미리 선언된 값을 확인할 수 있다.

int max = int.MaxValue;
Console.WriteLine(max + 1);
최댓값에서 + 1 시 맨 앞에 부호 비트 바뀌면서 최솟값인 -2147483648 출력
**단 float의 경우 최댓값 + 1 시 inf 값인 3.402823E+38 출력

int a = 30;
string istrue = a == 31 ? "30이 맞습니다" : "30이 아닙니다";
Console.WriteLine(istrue);
=> 30이 아닙니다.
int a = 2 << 3;
int b = 2 >> 3;
Console.WriteLine(a);
Console.WriteLine(b);
=> 16(왼쪽으로 비트 3칸 이동)
=> 0 (오른쪽으로 이동해서 범위 벗어남)
int a = 0b001 | 0b010; // 앞에 0b는 뒤에 수가 2진수라는 표기
int b = 0b001 & 0b010;
Console.WriteLine(a);
Console.WriteLine(b);
=> 3 (각 비트끼리 or 연산)
=> 0 (각 비트끼리 and 연산)
int a = 1;
Console.WriteLine(~a);
=> -2 (각 비트들을 전부 not연산)
int a = 0b1001 ^ 0b0001;
Console.WriteLine(a);
=> 8(각 비트들끼리 전부 XOR 연산)



