joo_coding 2025. 3. 8. 12:52

C언어에서 2진수,8진수,16진수 변환에 대해 왜 알아야하냐면

컴퓨터는 2진수 밖에 할줄 모르고

인간은 2진수를 보기 어려우니까

2진수, 8진수, 16진수를 모두 할수있는 c언어가 중간 통역사 역할을 해주고 있는거임 

 

[인간] > < [ C언어 ] > < [컴퓨터]

 


#include <stdio.h>

int main() {

printf("제 이름은 홍길동 입니다.\n");
printf("제 나이는 %d살 입니다.\n",20);
printf("제가 사는 곳의 번지수는 %d-%d입니다.\n",123,456);
 
printf("%d x %d = %d\n", 4, 5, 4*5);
printf("%d x %d = %d\n", 7, 9, 7*9);

return 0;

}

 

변수 선언과 초기화

#include <stdio.h>

int main() {

int num; // num 이라는 변수 선언
num = 0; // 변수 num을 0 으로 초기화
num = 12; // 변수 num에 12를 대입

return 0;

}

변수를 선언하고, 초기화 한 후에, 새로운 정수를 대입

#include <stdio.h>

int main() {

int num = 12;

return 0;

}

변수 선언과 초기화를 한번에 하는 것도 가능함

#include <stdio.h>

int main() {

int num1, num2;
int num3 = 30, num4 = 40;

return 0;

}

동시에 2개의 변수를 선언하고, 한번에 초기화까지도 가능함

 

< p.52 예제 >

#include <stdio.h>

int main() {

int num1, num2;
int num3 = 30, num4 = 40;

printf("num1: %d, num2: %d \n", num1, num2);
// num1 과 num2 는 변수 선언만 하고, 초기화를 하지 않았음 > 과연 어떻게 출력될까?
 
num1 = 10;
num2 = 20; // 뒤늦게 초기화하고 다시 출력해보면?
printf("num1: %d, num2: %d \n", num1, num2);
printf("num3: %d, num4: %d \n", num3, num4);

return 0;

}

 

<- 변수 선언만 하고 초기화를 하지 않았던 num1 과 num2 는

내가 설정하지 않았던 랜덤한 숫자가 출력되었다.

이것을 '쓰레기값' 이라고 한다.

 

<복합 대입 연산자>

#include <stdio.h>

int main() {

int num1=2, num2=4, num3=6;
num1 += 3; // 5
num2 *= 4; // 16
num3 %= 5; // 1

printf("Result: %d, %d, %d \n", num1, num2, num3);


return 0;

}

 

<증감 연산자>

#include <stdio.h>

int main() {

int a=12, b=12;
printf("a: %d \n",a);
printf("a++: %d \n", a++); // 후위 증가
printf("a: %d \n\n", a);

printf("b: %d\n",b);
printf("++b: %d\n",++b); // 전위 증가
printf("b: %d\n",b);

return 0;

 

솔직히 후위증가 완벽히 이해는 안 가는데,

그냥 ++이 뒤에 붙으면 해당 행에서는 연산이 안되고

그 다음 행에서 연산이 된다고 생각하는게 편할듯

 

후위증감은 다음 문장으로 넘어가야만, 증감이 이뤄진다고함.

 

 

<실수 자료형>

 
#include <stdio.h>

int main() {

double rad;
double area;
printf("원의 반지름 입력: ");
scanf("%lf", &rad); //double형 입력 %lf

area = rad * rad * 3.1415;
printf("원의 넓이: %f \n",area); //double형 출력 %f


return 0;

}

 

<아스키 코드>

#include <stdio.h>

int main() {

char ch1 = 'A', ch2 = 65;
int ch3 = 'Z', ch4 = 90;

printf("%c %d \n", ch1, ch1); // %c는 문자의 형태로 데이터를 출력하라
printf("%c %d \n", ch2, ch2); // 정수는 출력 방법에 따라,
printf("%c %d \n", ch3, ch3); // 문자 or 숫자 형태로 출력 가능
printf("%c %d \n", ch4, ch4);


return 0;

}

@  아스키 코드값은 0~127 사이 이기 때문에 char형으로 충분히 표현 가능
#include <stdio.h>

int main() {

int num1;
printf("정수를 입력하세요: ");
scanf("%d",&num1);

printf("입력한 수를 아스키 코드로 표현하면 %c 입니다.",num1);

return 0;

}

// 정수를 입력받은 뒤, 아스키 코드 문자로 출력하기.
#include <stdio.h>

int main() {

char ch;
printf("문자를 입력하세요: ");
scanf("%c",&ch);

printf("입력한 문자를 숫자로 표현하면 %d 입니다.", ch);

return 0;

}

// 문자를 입력받은 뒤, 아스키 코드로 출력하기.

 

<while 반복문>

#include <stdio.h>

int main()
{
int num=0;

while (num<3)
{printf("hello %d \n", num++);}
 
return 0;
}

while 다음에 중괄호를 써서 구분해줘야 하는데, 반복문이 1개라면 생략 가능

 

#include <stdio.h>

int main()
{
int dan =0, num =1;
printf("몇 단?");
scanf("%d", &dan);

while (num<10)
{
printf("%d X %d = %d \n", dan, num, dan*num);
num ++;
}
 
return 0;
}

구구단

 

<p.155 while 반복문 예제문제>

#include <stdio.h>

int main()
{
int num; // 반복 횟수
int i = 0;
printf("몇번 반복할까요?");
scanf("%d", &num); // 입력한 횟수를 num에 저장

while (i<num) // i가 num이 될때까지 반복
{
printf("hello world \n",num);
i ++;

}
 
return 0;
}