C언어 기초 #3 if문과 연산자
c계열언어 강좌 총정리
개발환경 >> Visual Studio Code
언어 >> C17
운영체제 >> Windows10
안녕하세요!
이번에는 c언어에서 없어서는 안될 연산자에 대해서 포스팅 해보도록 하겠습니다
{[ sizeof() ]}
sizeof()연산자는 괄호안의 자료형의 실제 데이터상의 크기를 알수있습니다.
다음과 같이 사용이 가능합니다.
#include <stdio.h>
int main(){
printf("%d %d %d %d %d %d", sizeof(int), sizeof(char), sizeof(float), sizeof(double), sizeof(long), sizeof(short));
}
보시다시피 각 자료형이 차지하는 바이트크기를 알수가있습니다.
실제 데이터상에서 차지하는 크기이기도하죠!
이와 관련된 비트에 대한 개념은 "C언어 비트필드"강좌에서 자세하게 다루겠습니다.
{[ +-%/* ]}
다음은 더하기 빼기 나누기 곱하기 연산자입니다.
사용방법은 다음과 같습니다!!!
#include <stdio.h>
int main(){
int a = 9, b = 4;
//9 + 4, 9 - 4, 9 * 4, 9 / 4, 9 % 4
printf("%d %d %d %d %d", a + b, a - b, a * b, a / b, a % b);
}
여기서 '/' '%'기호가 비슷합니다.
정확히 '/'연산자는 두수를 나누고 나온 몫을 뜻하구요,
'%'연사자는 두수를 나누고 나온 나머지를 뜻합니다!
{[ == = != > < <= >= ]}
다음은 관계연산자입니다!!
사용방법은 다음과같습니다!
#include <stdio.h>
int main(){
int a = 9, b = 4, c = 9, d = 0;
d = b; //b의 값을 d에 대입
printf("%d %d %d %d %d", a == c, a != c, a == b, a < b, c >= b);
}
결과값은 다음과 같습니다.
먼저 1은 참이구요, 0은 거짓입니다.
보겠습니다
"a == c"는 참이기때문에 1입니다. a와 c의값모두 9이기때문이죠~
"a != c"는 거짓입니다. 둘은 같습니다 이뜻은 두값이 다르냐? 이렇게 묻고있습니다. 두값은 같기때문에 거짓.
"a == b"는 위와 같고,
"a < b"는 b의 값이 a보다 크냐? 묻는건데 a가 더크니까 거짓
"c >= b"는 c의값이 b의값보다 크거나 같냐? 묻는거니까 참!
{[ << >> ~ ]}
다음은 비트연산자입니다!
먼저 사용방법을 알려드릴게요!!
#include <stdio.h>
int main(){
int a = 7, b = 5;
printf("%d %d %d", a >> 4, b << 3, a^2);
}
일단 이러한 결과값이 나오는 이유를 하나하나 살펴보기위해서
계산기를 꺼내고 프로그래머용으로 바꿉니다!
여기서 a의값인 7을 넣으면 2진수로는 이렇게나옵니다!
111이네요~!
근데 이값을 ">>"오른쪽으로 4번 시프트하면 111은 다 사라지겠죠??
왜냐하면 111을 오른쪽으로옮기면 수는 0이상이기때문에 1은 다사라질거고 0밖에안남겠죠?
반대로 b의값인 5는 2진수로 101입니다~!
"<<"오른쪽으로 101을 3번옮기면??
와우 printf의 두번째 값 40과 일치하네요?!!!
그럼 ^연산자는 뭘까요?
a의값인 7와 2사이에 ^를 넣었더니 5가되었습니다!
이유를 알려드릴게요
7은 2진수로 111이구요
2는 10입니다 ^는 여기서 자릿수마다 1이나 0이 일치하면 바꾸는겁니다!!
111
10
이렇게하면 두번째자리인 1이 일치하니까 0으로바꾸면 101이되겠죠?
2진수 101을 10진수로 바꾸면 5입니다!!(짜잔~)
{[ && || ?: ]}
다음은 논리연산자와 삼항연산자입니다!
사용방법알려드릴게요!!
#include <stdio.h>
int main(){
int a = 7, b = 5;
printf("%d %d %d %d", a == 7 && b == 5, a == 8 || b == 5, a != 7 || b != 5, a == 5 ? 100 : 200);
}
먼저 "a == 7 && b == 5"의 뜻은 a가 7인 동시에 b가 5면 참! 이라는뜻인데
맞죠? 그러니까 1이구요~
"a == 8 || b == 5"a가 8이거나 또는 b가 5이면 참! 이라는 뜻이니까, a가 8이 아니더라도 b가 5이니까 참!!
"a != 7 || b!= 5"a가 7이 아니거나 또는 b가 5가아니면 참! 인데 둘다 맞는말입니다.. 그래서 거짓...ㅠㅠ
"a == 5 ? 100 : 200" a가 5야? 그러면 100을 주고 5가아니라면 200을 줘 라는 뜻입니다.
보시다시피 a는 7이기때문에 5가 아닙니다. 따라서 200!!
혹시 추가로 알려주셨으면 하는 부분있다면 댓글로 알려주세요!!
다음강좌는 구조체와 공용체 입니다!!
그럼 안녕!
'🧼C, C++ > 기초및 입문' 카테고리의 다른 글
우주선 연산자 '<=>' 사용법 ( C++20 ) (1) | 2021.06.19 |
---|---|
키로거 만들기 C++ (4) | 2021.01.29 |
표준 라이브러리 정리 <cstdlib> (stdlib.h) - C++ (C) (0) | 2021.01.14 |
C언어 기초 #2 배열과 함수 (0) | 2021.01.12 |
C언어 기초 #1 자료형 (0) | 2021.01.12 |
댓글