반응형
#include <stdio.h>
//int main(int argc, const char * argv[]) {
// printf("Hello, World!\n");
// printf("Git Commit");
// return 0;
//}
main() {
int n, i, t, sum = 0;
printf("number of integer?");
scanf("%d", &n);
for(i=1; i<=n; i++) {
printf("%d integer?: ", i);
scanf("%d", &t);
sum = sum + t;
}
printf("sum: %d\n", sum);
printf("average: %f\n", (float)sum/n);
return 0;
}
int 형 변수에 저장훌 수 있는 최대 숫자 2,147,483,647
main() {
char ch;
printf("영어 소문자를 입력하세요: ");
scanf("%c", &ch);
switch (ch) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u': printf("모음\n"); break;
default: printf("자음\n");
}
}
비트 연산
A | B | A&B | A|B | A^B |
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
비트 단위 연산자는 2진수 형태의 비트 자리별로 논리 연산을 수행하는 연산자
& 논리곱 AND
| 논리합 OR
3&1 일 때 비트 값 11(2) & 01(2)의 논리곱을 비트 단위로 수행함. 둘 다 참이어야만 참이 나오니 이 때 결과는 01(2) 즉 1로 나오게 됨!
3|1 일 때는 논리합이기 때문에 둘 중 하나라도 참이면 참으로 나오기 때문에 11(2), 즉 3으로 나오게 됨
^ 는 배타적 논리합(XOR)인데 두 비트의 값이 다를 때만 참(1)이 되는 연산. 머신러닝과 인공지능 다룰 때 주요하게 봤던 것으로 기억
3^1일 때는 11(2) 01(2) 의 연산을 하면 10(2)가 되어서 결국 2가 되어버림.
3 << 1 -> 좌측으로 1비트씩 이동하는 것임
11(2)에서 -> 110(2) 으로 변환 즉 6이 나옴
3>> 1 -> 우측으로 1칸 이동
11(2)에서 001(2)로 이동. 즉 1이 나옴
>> 와 << 는 Shift 연산자
'~'는 비트 열의 값을 각각 부정하는 것이기 때문에 11(2)를 부정하면 11111~~~ 00(2)로 나타날 수 있음
#include <stdio.h>
main() {
printf("%d %d\n", 3&1, 3|1);
printf("%d\n", 3^1);
printf("%d %d\n", 3<<1, 3>>1);
printf("%d\n", ~3);
}
결과는
1 3
2
6 1
-4
복합 대입 연산자
Code:
main() {
int a = 3, b = 2;
printf("%d %d\n", a++, --b);
a += 1; b -= 1;
printf("%d %d\n", a, b);
}
a++, b++ 하면 delay 있음.
바로 출력하려면 ++a, --b 로 작성해야 함!
main() {
int a = 3, b = 2;
printf("%d\n", &a);
printf("%d\n", *&a);
}
&a는 변수 a의 주소. 변수 a가 저장된 메모리(RAM) 공간의 주소값을 알아낸다.
*는 변수 a의 주소에 저장된 값을 나타내는 연산자이다.
반응형
'Programming' 카테고리의 다른 글
(C언어) for (0) | 2022.03.24 |
---|---|
(C언어) 조건문 (0) | 2022.03.24 |
(C언어) 연산 타입 (0) | 2022.03.23 |
Computational Thinking 컴퓨팅 사고력 (0) | 2022.03.20 |
audacity 문제 해결 (0) | 2021.09.24 |