C#
210520 C#_null 조건부/병합 연산자, 시프트 연산자
S_pot
2021. 5. 20. 15:29
null 조건부 연산자
static void Main(string[] args)
{
string T = "지옥으로 키티";
Console.WriteLine($"[{T.Length}]");
T = null;
Console.WriteLine($"[{T?.Length}]"); // []: null 조건부 연산자
Console.WriteLine($"[{T ?? "널이얌1"}]"); // ??: null 병합 연산자, null값이면 [널이얌1]을 출력
T = "지옥으로 키티";
Console.WriteLine($"[{T ?? "널이얌2"}]");
}
출력값
시프트 연산자
static void Main(string[] args)
{
byte bNum = 128;
Console.WriteLine("bNum : " + bNum);
Console.WriteLine("bNum<<1 : " + (bNum << 1)); // <<: 왼쪽 시프트 연산자
// bNum이 9일때 00001001 이고 왼쪽으로 1번(bNum<<1) 밀려 00010010 이되고 즉, 18 이된다.
Console.WriteLine("bNum>>1 : " + (bNum >> 1)); // >>: 오른쪽 시프트 연산자
// bNum은 1byte임에도 불구하고 큰숫자가 나올 수 있는 이유는 bNum 자체가 커진게 아니라
// bNum의 숫자를 밀어준 것이므로 int형으로 계산되기 때문이다.
sbyte sbNum = 127;
++sbNum; // sbyte의 최대 양수를 초과하기 때문에 -128이 출력된다.
Console.WriteLine("sbNum : " + sbNum);
Console.WriteLine("sbNum<<1 : " + (sbNum << 1));
Console.WriteLine("sbNum>>1 : " + (sbNum >> 1)); // 정수일때 오른쪽으로 밀 때 음수이면 빈자리를 1로 채우고 나머지는 0이 된다.
}
출력값