1. 변수 선언
int a;
a라는 정수형 변수를 선언해준다.
크기 :: 4byte
정수형 범위는 -2^31 ~ 2^31 +1이고, 약 -20억 ~ 20억이다.
usigned int a;
a라는 정수형 변수를 선언해준다.
크기 :: 4byte범위는 0~ 2^32 -1이고, 약 40억이며 음수를 쓸 수 없다.
long long a;
a라는 정수형 변수를 선언해준다.
크기 :: 8byte범위는 -2^64 ~ 2^64 + 1이다.
float a;
a라는 소수형 변수를 선언해준다.
크기 :: 4bytefloat는 6자리 소수점까지 지원해준다.
double a;
a라는 소수형 변수를 선언해준다.크기 :: 8byte
double은 15자리 소수점까지 지원해준다.
char a;
a라는 문자형 변수를 선언해준다.
크기 :: 1bytebool a;
a라는 boolean형 변수를 선언해준다.
크기 :: 1byte이 bool형은 1또는 0밖에 되지 않는다.(true :: 1 / false :: 0)
이제 변수 선언을 한번 해보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> int main() { int a; // a라는 변수를 선언한다. a = 2; // a에 2를 대입한다. char b = 'a'; // b라는 변수에 a를 대입한다. int c = 4, d = 5, e = 6; // c에는 4 d에는 5 e에는 6을 대입한다. return 0; } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
2. 입/출력
printf() 함수를 이용한다.
다음을 컴퓨터에 직접 코딩해보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <stdio.h> int main() { int a; // a라는 변수를 선언한다. a = 2; // a에 2를 대입한다. char b = 'a'; // b라는 변수에 a를 대입한다. int c = 4, d = 5, e = 6; // c에는 4 d에는 5 e에는 6을 대입한다. float f = 6.666; double g = 1.2345561651; printf("%d %c %d %d %d %f %lf \n", a, b, c, d, e, f, g); printf("%.10lf \n", g); printf("%.30lf \n", g); return 0; } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
%d :: 정수를 출력해준다.
%c :: 문자를 출력해준다.
%f :: float형을 출력해준다.
%lf :: double형을 출력해준다.
이때 %.10lf로 출력하면 10자리까지 출력을 해줌을 알 수 있다.
그런데 %.30lf로 출력하면 출력은 되지만 그 뒤에 이상한 값들이 찍힘을 알 수 있다.
이러한 이유는 컴퓨터에서 원래 소수라는 개념이 존재하지 않기에 대략 이라는 개념을 써서 만들어지기 때문이다.
따라서 많은 소수 연산은 되도록 자제하도록 한다.(연산의 오차범위가 계속해서 커질 수 있다.)
아래 코드를 작성해서 실행해보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> int main() { int a, b, d; char c; scanf("%d %d %c %d", &a, &b, &c, &d); printf("%d %d %c %d \n", a, b, c, d); printf("%c %c %d %c \n", a, b, c, d); return 0; } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
a,b,c,d를 scanf() 함수를 통해 입력받았다.
printf와 형식이 똑같으며 단 입력받을때 &라는 기호를 써줘야한다.
(&의 의미는 추후 알게 되니 우선은 외워두도록 하자.)
첫번째 출력은 97 98 c 100
두번째 출력은 a b 99 d가 나올 것이다.
이 이유는 컴퓨에는 이미 a가 97이라는 숫자에 대응되어있는 것이다.
아래 표를 참고해보자.
이 표는 외울 필요는 없다.
보면 97에는 a가 적혀있음을 알 수 있다.
따라서 문자 0은 숫자 48에 대응되는 것이고 문자 Z는 숫자 90에 대응되는 것들을 알 수 있다.
3. 연산
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <stdio.h> int main() { int a, b, c; a = 2; b = 3; c = a + b; printf("a :: %d b :: %d \n", a, b); printf("%d \n", c); printf("%d %d %d %d \n", a - b, (a * b), a % b, c = b / a); printf("%d \n", c); return 0; } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
연산은 우리가 흔히 하던 방식과 같다.
+,-,/,*가 있으며 컴퓨터에서는 추가적으로 %도 존재한다.
%의 의미는 나머지를 구해주는 연산이고
/의 의미는 몫을 구해주는 연산이다.
처음 하게 된다면 두개가 햇갈릴 수 있으니 %(퍼센트 = 나머지(3글자) )로 외워보자.
여기서 세번째 printf에서 c = b / a로 출력을 했다.
이 의미는 b / a를 한 값을 c에 넣고 c를 출력하라는 의미와 같다.
따라서 마지막 printf에서 c값이 변경되어 있음을 알 수 있다.
4. 주석
주석은 // 와 /* */가 있다.
//는 한줄을 주석처리할 때 쓰이고
/* */는 여러줄에 걸쳐 주석을 달 때 쓰인다.
위의 코드에서 return 0; 윗 부분에 아래와 같이 적어보자.
// 이것은 주석입니다.
/*
이렇게 하면 여러줄에 걸쳐 주석이 됩니다.
가나다
라마바사
*/
추가적으로 더 알아보고 싶은 내용들은 아래 링크들을 참조해보자.
c언어 카테고리 :: http://www.crocus.co.kr/category/Basic/C
기본 입출력 함수의 이해 , 데이터 형 :: http://www.crocus.co.kr/108?category=116610
이제 이 내용들을 바탕으로 문제를 풀어보자.
https://www.acmicpc.net/step/1
https://www.acmicpc.net/step/2
문제 1.
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <stdio.h> int main() { char a, b, c; scanf("%c", &a); scanf("%c", &b); printf("%c %c", a, b); return 0; } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
위의 코드에서 h e를 입력해보자.
그리고
h
e
로도 입력해보자.
마지막으로 he로 입력해보자.
3가지 입력중 하나라도 제대로 출력이 되지 않는다면 왜 그런지 한번 생각해보자.(아스키 코드 표 참조)
그렇다면 제대로 입력하고 출력하기 위해서는 어떻게 해야할지도 한번 생각해보자.
문제 2.
1. int형 변수 a는 10 b는 35이라면 이 값을 두개 더한 char형 변수는 뭐가 나타날지 한번 작성해보자.
2. 이때 char형 변수의 값은 숫자가 나올 것이다.
이 값을 실제 숫자로 바꾸어 int형 변수에 저장하기 위해서는 어떻게 하면 될지 생각해보자.
(아스키 코드표 참조)
'Tutoring > C' 카테고리의 다른 글
형 변환, typedef, 헤더파일 소개 (0) | 2018.02.26 |
---|---|
매크로 함수, 파일 입출력 (0) | 2018.02.26 |
동적 메모리 할당, 비트연산, 메모리 구조 (0) | 2018.02.26 |
구조체, 함수, 포인터 (0) | 2018.02.26 |
연산자, 조건문, 반복문, 배열 (0) | 2018.02.22 |