못정함

C언어) 2장 printf()함수 : 내가 모르는 거 위주로 본문

C언어 공부/C언어 독학 (교재)

C언어) 2장 printf()함수 : 내가 모르는 거 위주로

hadara 2024. 9. 14. 00:19

2장: 상수와 데이터 출력

02-1 C 프로그램의 구조와 데이터 출력 방법

 

<기본 형태 (main함수는 필수)>

#include <stdio.h>


int main(void){

본문

return 0;

}

 

<주석>

/* 어쩌굴 */

// 어쩌굴

 

 

<제어 문자 출력>

: 출력 방식에 영향을 주는 문자 / 문자열 안에 포함시켜 사용함 (문자는 아님)

- \ 와 함께 사용

\n : 다음 줄로 이동 (줄바꿈)  
\b: 백스페이스 : 커서가 한 칸 왼쪽으로 이동 (\b 뒤에 다음 문자열을 입력하면 수정됨..) ex) printf("Goot\bd\tchance\n");
결과는 Good (tab) Chance
\r: carriage return : 맨 앞으로 이동 (커서 위치가 맨 앞으로 이동)  
\a : alert: 벨소리. 벨소리를 낸다.(????????????)
 
   

 

 

<정수와 실수 출력>

-printf() 함수는 기본적으로 문자열을 출력. 숫자 출력하고 싶으면 "변환 문자"를 사용해줘야함 (숫자를 문자열로 변환해줌)

-정수) %d (decimal)

-실수) %lf (long float) 

%.1lf ) 소수점 이하 첫째자리까지 출력 (둘째 자리에서 반올림

%.10lf) 소수점 이하 열째자리까지 출력

printf("변환문자", 숫자); 숫자는 변환 문자의 위치에 출력됨.
printf("%d와 %d의 합은 %d입니다.\n", 10, 20, 10+20); 이런식으로 사용.
',' 뒤의 숫자들이 %d 자리에 순서대로 채워짐

 

 


 

02-2 상수와 데이터 표현 방법

-프로그램) 일의 순서를 적은 것
-데이터) 프로그램이 처리하는 대상
-data) 정수, 실수, 문자, 문자열
-data의 형태) 변수 / 상수

 


<정수 상수 표현법>

-C언어에서는 8진법, 10진법, 16진법 사용

(진법 내용은 교재 참고)

<표기법>

10진수 8진수 16진수
12 014 0xc

-코드 안에서 진법에 따른 수의 표현법은 다르나, 같은 값이므로 결과는 모두 같음

printf("%d\n", 12);

printf("%d\n", 014);

printf("%d\n", 0xc);

모두 결과는 12

-출력을 다르게하고 싶으면

8진수 %o printf("%o\n", 12);  
16진수 소문자 %x  printf("%x\n", 014);  
16진수 대문자 %X printf("%X\n", 12);  

 

<실수 상수 표현법>

-소수점 / 지수

-소수점 형태를 지수로 바꾸어 표현

e는 밑수 10을 의미함. (E로도 쓸 수 있음)

0.0000314  = 3.14e-5 = 3.14E-5 ) 정규화 표기법임. 소수점 앞에 0이 아닌 유효 숫자 한 자리를 사용해 지수 형태로 바꾼 것. printf 함수가 실수를 지수형태로 출력할 때 기본적으로 사용하는 방법임.


-printf() 함수는 기본적으로 소수점 형태를 출력함

- 소수점 이하 여섯째 자리까지만 출력됨 ∴ 더 길게 출력하려면 %.7lf << 이런 식으로 써줘야함


-지수 형태로 출력 원할 시 변환 문자 사용 ) %le  (정규표현법)

- %.2le ) 소수점 이하 자릿수 지정 

 
printf("%le\n", 0.0000314);
    
3.140000e-005
printf("%.2le\n", 0.0000314); 3.14e-005

<문자와 문자열 상수 표현법>

 

문자 -한 글자
-' '로 묶는다
-문자 변환 문자) %c
문자열 -두 글자 이상
-" "로 묶는다
-문자열 변환 문자) %s (사실 필요 없음)
-printf() 함수는 문자열을 변환 없이 바로 출력 가능 (문자는 변환 필요함)
 
  printf("%c\n", 'A');

 


이론과 원리 약간

-편집기에 코드를 입력하면 코드는 모두 컴퓨터가 이해하는 형태의 아스키 코드 값으로 저장됨. + , 10, 20 이런 게 다 문자라는 소리임. 그래서 컴파일 과정이 없으면 코드가 컴퓨터에서 실행되지 않는 것임. 코드가 컴파일러를 거쳐 컴파일되어야 비로소 연산자는 명령어가 되고 상수는 연산이 가능한 형태로 바뀌는 것. 

-컴퓨터는 모든 데이터를 비트(bit)로 변환함: 1비트는 0과 1. 2개의 값을 가짐

-비트가 8개면 1byte(바이트)라고 함. 2^8 = 256 가지

정수 상수를 컴파일하면 4바이트로 표현됨 (2^32 가지)

실수 상수를 컴파일하면 8바이트로 표현됨 (2^64 가지)

 

-값의 크기와 상관없이 데이터를 8바이트로 만들고 싶으면 LL 을 붙인다.

 

-실수는 주로 double 형식으로 쓴다. 8바이트, 즉 64비트로 표현한다.  / / 표현할 수 있는 값의 범위가 상당히 넓어 값의 크기와 달리 정확한 값을 표현하는 데에는 한계가 있다. (오차 발생 이유: 소수 부분을 나타내는 비트가 정확한 값을 표현할 수 없기 때문)

 

 

~~~~~~~~~~~~~비트 관련된 내용은 공부 열심히 안 했다...^^;; 필요할 때 교재 참고하자 ^^;;; ~~~~~~~~~~~~~~~~~

암튼..비트...와 바이트..에 의해...어떤 상수를 쓰느냐에 따라 실행속도가 많이 차이난다는 것은 알겠음

정수를 사용하는 게 좋겠음

정수는 빠르고 정확하게 연산되지만, 실수는 오차가 발생할 수 있기 때문.

뭔가...나중에 프로그램을 효율적으로 만들겠다... <<이런 목표가 생기면(?) 공부하긴 해야할 것 같음

 

일단 쿨하게 패스한다...^^;;;;;한시가급하다