< 5-2강. 2진법 , 자료형 총정리 >
* 10진법
12345 = 10000 + 20000 + 300 + 40 + 5
= 1*10^4 + 2*10^3 + 3*10^2 + 4*10^1 + 5*10^0
* 2진법 - 0과1로만 구성 (한 자리 수 증가씩 2배씩 늘어남)
100110(2) = 1*2^5 + 1*2^2 + 1*2^1 = 38
int - 32비트 = 4바이트 (비트=자릿수의 갯수)
00000000 00000000 00000000 00000101
5 = 101(2) 위처럼 표현
00000000 00000000 00000000 00100101
37 = 100101(2)
8비트 = 1바이트
바이트 : 컴퓨터에서 데이터를 처리하는 가장 작은 단위
<자료형> - 정수형, 실수형
* 정수형 : char (1바이트) - 문자(문자도 숫자값을 가짐)를 담는 데 쓰임
short (2바이트)
long (4바이트), 음양 다 포함 2^32개 포함 long long(8바이트)
int ( 시스템에 따라서 자동결정, 대체로 long)
* 실수형 : float (4바이트)
double (8바이트)
< unsigned, signed >
첫 자리는 특별한 자리임 (부호를 저장하는데 사용됨/ 양수일 때는 0 음수일 때는 1)
unsigned는 앞의 부호를 무시함 "unsigned int a;" 처럼 선언함
unsigned는 -를 저장하지 않음 : 부호를 저장하는 첫 번째 수도 숫자를 저장하는 데 사용하겠다!
void : 리턴 값이 없는 함수의 자료형
bool : 참, 거짓을 저장하는 자료형 (8비트를 사용하게 됨) (= char) 그래서 별 쓸모가 없음
< 6강. sizeof 연산자와 형변환 >
#include <stdio.h>
int main(){
printf("%d %d %d %d\n", sizeof(int),sizeof(char),sizeof(float),sizeof(double));
int a; char b; float c; double d;
printf("%d %d %d %d\n",sizeof(a),sizeof(b),sizeof(c),sizeof(d));
// 4,1,4,8 바이트
}
// sizeof(x) : x의 크기를 알려줌
// x : 형 (int, float, ...)
// 변수 이름
#include <stdio.h>
int main() {
int a = 3.14; // 정수형에 실수를 담았더니 결과가 3
double b = 10; // 정수를 담았더니 10.000 처럼 실수로 나타남
printf("%d %f\n",a,b);
}
// 실수를 정수형 변수에 담을 수 없다. (3.14 -> 3)
// 절수를 실수형 변수에 담을 수 있다.(10 -> 10.000)
#include <stdio.h>
int main() {
int math = 90, korean = 95, english = 96;
int sum = math + korean + english;
double avg = (double)sum / 3; // (double) 넣으면 잠시동안 실수인 자료형이 됨
printf("%f\n",avg); //93.66667이 안나옴 93.0000이 나옴
}
// 형변환 : 자료형을 다른 자료형으로 바꾸는 작업
// 정수 / 정수 = 정수
// 실수 / 정수 = 실수
// 실수 / 실수 = 실수
// 정수 + 정수 = 정수
// 정수 + 실수 = 실수
// 실수 + 실수 = 실수 // * ,- 도 똑같음
<7강. 입력받기>
Products에 들어가서 보이는 터미널 우클릭 후
Show in finder 누르고 터미널 실행 후, 터미널 내에서 입력!
#include <stdio.h>
int main() {
float a,b;
scanf("%f%f", &a, &b); // & : 포인터
// 분리되어 있는 숫자를 구분해서 각각을 %d에 입력시킴! scanf는 매우 똑똑함!
// scanf 실수 입력 가능
printf("%f + %f = %f\n", a,b,a+b);
printf("%f - %f = %f\n", a,b,a-b);
printf("%f * %f = %f\n", a,b,a*b);
printf("%f / %f = %f\n", a,b,a/b); // 목은 정수로 출력 (정수 나누기 정수)
// 합을 저장하는 변수를 만들지 않고 바로 계산결과를 낼 수 있다.
}
<8강. char형과 ASCII 코드>
// char : 1바이트 정수형 (int : 4바이트)
// character : 문자 ( 반각문자만 가능, 반각문자 : ABCabc123_+;/#$) 한글, 한자, 일본어는 해당 안됨
#include <stdio.h>
int main() {
char a = 65;
printf("%c\n",a); // %c는 반각문자 출력
printf("%c\n",'A');
}
// ASCII : 문자를 숫자랑 대응시켜주는 규칙 ( "A" - 65 )
#include <stdio.h>
// 숫자->문자
int main() {
int a;
printf("숫자 입력 : "); // 127이내의 숫자
scanf("%d",&a);
printf("%d의 ASCII 문자 : %c\n",a,a);
}
< 9강. 1부 (입출력과 변수) 종합문제 >
/*
1. 두 숫자를 입력받아서 그 숫자들의 합을 출력하는 프로그램을 만들어보세요
*/
#include <stdio.h>
int main(){
int a,b;
scanf("%d%d",&a,&b);
int sum = a + b;
printf("%d + %d = %d\n",a,b,sum);
}
/*
2. 체중과 키를 입력받아서 체질량 지수를 구하는 프로그램을 만드시오
*/
// BMI = 체중(kg, 실수) / 키^2(미터, 실수)
#include <stdio.h>
int main() {
float weight,height;
printf("체중 입력 (kg) : ");
scanf("%f",&weight);
printf("키 입력 (m) : ");
scanf("%f",&height);
printf("BMI is : %f\n",weight/(height*height));
}
/*
3. 알파벳을 입력받아서 그 다음 알파벳을 출력하는 프로그램을 만들어보세요. (Z제외)
*/
#include <stdio.h>
int main() {
char a;
printf("알파벳을 입력하세요 : ");
scanf("%c",&a);
printf("다음 알파벳은 %c입니다.\n",a+1);
}
생각보다 할 만한 것 같다...!
scanf 할 때는 "& 포인터" 꼭 사용하기!