728x90

문자열 : 하나 또는 여러개의 문자들이 연속되어 있는 것을 말한다.
큰따옴표는 문자열이 아니다.

C는 널문자(\0)로 문자열의 끝을 표시한다.
C에서 문자열들은, 문자열의 끝을 표시하는 이 널 문자와 항상 함께 저장된다.
문자열의 크기는 저장할 문자들의 수보다 최소한 하나더 많아야한다.

배열(array) : 연속되어 있는 여러개의 메모리 셀
char name[40];
name 뒤에있는 각괄호([])에 의해 배열로 인식한다.
char는 원소의 데이터형을 나타낸다.

strlen()는 널문자를 제외한 문자열의 길이만 알려준다.
-> 널문자에서 카운트를 멈춘다.
sizeof 연산자는 널문자를 포함한 개수를 알려준다.

sizeof를 사용할 때 괄호 사용 여부는 데이터형의 크기를 원하느냐, 아니면 어떤 특정 양에 대한 크기를 원하느냐에 달려있다.
데이터형에는 괄호를 반드시 해야하지만 어떤 특정양에 괄호를 사용하는것은 옵션이다.

728x90

'Programming > C' 카테고리의 다른 글

c언어 공부 7  (0) 2019.05.06
C언어 공부 6  (0) 2019.05.05
프로그래밍 연습 2  (0) 2019.04.28
C언어 공부 4  (0) 2019.04.28
C언어 공부 3  (0) 2019.04.28
728x90

117p -2
117p - 4
118p - 6

728x90

'Programming > C' 카테고리의 다른 글

C언어 공부 6  (0) 2019.05.05
C언어 공부 5  (0) 2019.04.28
C언어 공부 4  (0) 2019.04.28
C언어 공부 3  (0) 2019.04.28
프로그래밍 연습 1  (0) 2019.04.28
728x90

고정폭 데이터형

int32_t : 32비트 부호있는 정수형을 나타냄.

int_least8_t : 8비트 부호있는 정수값을 가진다.

int_fast8_t : 8비트 부호있는 값을 가장 빠르게 계산

intmax_t : 부호있는 최대폭 정수형

uintmax_t : 부호 없는 최대폭 정수형 <- long long, unsigned int 보다 크다

 

부동소수점수

float, double, long double

 

float 은 6자리 유효숫자를 표기해야하며 10E-37 ~ 10E37 까지의 범위를 허용해야 한다.

double은 유호숫자의 최소 자릿수를 10으로 확장한다.

long double 도 있다.

 

%f 포맷 지정자를 사용하여 float, double형 수를 10진수로 출력

%e 포맷 지정자를 사용하여 지수 표기 출력

float, double 형 출력을 위해 %f, %e, %a 지정자 사용

 

float 형의 가장 큰 값 : 3.4E38

 

오버플로(너무 커서 표현할 수 없는 수를 만드는 계산)일 때 printf()는 그 값을 inf 또는 infinity 중 하나로 출력한다.

 

복소수형, 허수형 변수

복소수형 변수 : float_Complex, double_Complex, long double_Complex

허수형 변수 : float_Imaginary, double_Imaginary, long double_Imaginary

 

complex.h 헤더 파일을 포함시키면 _Complex 대신 complex로 _Imaginary 대신 imaginary로 바꿔 쓸 수 있다.

또한 -1의 제곱근을 나타내기 위해 기호 I를 사용 할 수 있다.

 

바이트 단위의 크기를 알려주는 sizeof()

sizeof의 포맷 지정자로 %zd를 쓰기도함

 

int : 4byte                char : 1byte          long : 8byte        long long : 8byte

double : 8byte          long double : 16byte

 

float형 값을 %d를 사용하여 출력했을 때 float형 값에 가까운 정수가 나오는것이 아닌 전혀 다른 이상한 수가 나온다.

 

 

728x90

'Programming > C' 카테고리의 다른 글

C언어 공부 5  (0) 2019.04.28
프로그래밍 연습 2  (0) 2019.04.28
C언어 공부 3  (0) 2019.04.28
프로그래밍 연습 1  (0) 2019.04.28
C언어 공부 2  (0) 2019.04.28
728x90

정수형 : int           부동 소수정 : float -> 더넓은 범위의 데이터 처리가능

                               %.2f -> 소수점 이하 둘째자리 까지 출력

 

정수 : 소수부가 없는 수 ex)2,-23,2456

부동 소수점수 : 수학에서 말하는 실수 ex)2.75, 3.16E7, 7.00, 2e-8

                     어떤 값에 소수점을 붙이면 부동 소수점 값이 된다.

 

※ 부동소수점수를 저장하는 방법이 정수와 다르다.

부동소수점 표기에서는, 하나의 수를 소수부와 지수부로 쪼개어 저장한다.

ex) 0.7E1 -> 0.7이 소수부 1이 지수부

 

int형은 부호 있는 정수(signed integer)이다.

int형의 최소범위 -32767, 32767

 

변수를 선언하면 변수를 저장하기 위한 기억공간을 할당하고, 거기에 이름을 연결하고, 각 변수에 초기값을 대입한다.

 

C언어에서는 10진수, 8진수, 16진수를 구별하기 위해 수 앞에 특별한 접두사를 붙인다.

ex) 10진수    8진수      16진수 

     16         020         0x10

위 접두사는 사용자를 위한 서비스 이다. 수가 저장되는 방식에 영향을 주지 않는다. 즉, 16,020,0x10 중 어느것을 사용하더라도 컴퓨터는 내부에서 사용하는 2진수 코드로 정확히 동일하게 저장한다.

 

10진수 출력 %d               8진수 출력 %o              16진수 출력 %x

접두사도 함께 출력 하려면 %#o, %#x를 사용한다. 이들은 각각 0,0x와 함꼐 출력한다.

 

short int == short              ,           long int == long

long long int == long long

unsigned int == unsigned

 

unsigned int 출력 : %u                     long형 값 출력 : %ld          long형 16진수 출력 : %lx     8진수 출력 : %lo

short형 10진 정수 : %hd                   short형 8진 정수 :ho          short형 16진 정수 : %hx

long long 형 : %lld                    unsigned long : %lu

 

 

 

char형 변수의 크기는 1byte, 'A'의 값은 65이다.

char형 변수에 'FATE'를 대입하면 마지막 문자상수인 E만 저장된다.

 

이스케이프 시퀀스

\a : 경보    \b : 백스페이스    \f : 폼 피드    \n : 개행    \r : 캐리지 리턴    \t : 수평 탭    \v : 수직 탭    

\\ : 백슬래쉬(\)    \':작은따옴표(')    \":큰 따옴표(")     \? : 물음표(?)    \0oo : 8진수값    \xhh : 16진수 값

 

출력장치 제어 문자

\b(back space) : 현재 라인에서 한스페이스 뒤로 옮긴다.

\f(form feed) : 다음 페이지의 시작으로 옮긴다.

\n(new line) : 다음라인 시작으로 옮긴다.

\r(carriage return) : 현재라인의 시작으로 옮긴다.

\t(horizontal tab) : 수평탭의 다음 위치로 옮긴다.

\v(vertical tab) : 수직탭의 다음 위치로 옮긴다.

 

scanf() 함수의 엠퍼샌드(&)가 그 문자를 변수 ch에 대입되도록 안내한다.

printf() 함수의 포맷 지정자는, 데이터가 저장되는 포맷이 아니라 데이터가 출력되는 포맷을 결정한다.

 

_Bool 형은 true or flase로 0아니면 1의 값을 가진다.

 

 

728x90

'Programming > C' 카테고리의 다른 글

프로그래밍 연습 2  (0) 2019.04.28
C언어 공부 4  (0) 2019.04.28
프로그래밍 연습 1  (0) 2019.04.28
C언어 공부 2  (0) 2019.04.28
C언어 공부  (0) 2019.04.28
728x90

64p -1
64p - 3
65p - 5
65 - 7

728x90

'Programming > C' 카테고리의 다른 글

C언어 공부 4  (0) 2019.04.28
C언어 공부 3  (0) 2019.04.28
C언어 공부 2  (0) 2019.04.28
C언어 공부  (0) 2019.04.28
C 데이터  (0) 2018.12.28
728x90

이스케이프 시퀀스(escape sequence)

이스케이프 시퀀스는 타이핑하기 어렵거나 불가능한 문자를 나타내는데 사용한다.

\n : 개행     \t : 탭(tab)    \b : 백스페이스 문자(back space)

이스케이프 시퀀스는 항상 백슬래쉬(\)로 시작

 

프로그램은 하나 또는 그이상의 함수 집합으로 구성된다.

함수(function)는 헤더(header)와 몸체(body)로 구성된다.

 

함수 헤더 : 그함수가 리턴하는 정보의 타입, 그 함수에 전달되는 정보의 타입, 함수 이름으로 구성

 

ex)

 

#include <stdio.h>    - 전처리기 지시자

int main(void)           -전달인자를 가진 함수 이름

------------------------------------------↑함수 헤더

{

 int q;

 q = 1;

~~~~

return 0;

}

--------------------------------------------↑ 함수 몸체

 

모든 C프로그램은 main()이라는 함수가 반드시 필요하다

-> main()은 프로그램이 처음 시작할 때 호출되는 함수이기 때문

728x90

'Programming > C' 카테고리의 다른 글

C언어 공부 4  (0) 2019.04.28
C언어 공부 3  (0) 2019.04.28
프로그래밍 연습 1  (0) 2019.04.28
C언어 공부  (0) 2019.04.28
C 데이터  (0) 2018.12.28
728x90

컴파일러 : 소스코드를 중간코드로 변환한다.

링커 : 중간코드 + 다른코드 => 실행파일을 만든다.

 

컴파일링과 링킹을 통해 프로그램 모듈화

 

링커는 이미 컴파일 된 라이브러리 코드를 가져와 프로그램에 결합한다.

 

중간파일은 오브젝트 파일이다. (file.o)

 

오브젝트 ㅍ일은 소스코드를 기계어 코드로 단순히 번역한 것일 뿐 아직 완전한 프로그램이 아니다.

(오브젝트 파일 + 다른 코드 => 실행파일)

                         ↓

다른코드 1. 시동코드

시동코드는 프로그램과 운영체제 사이의 인터페이스를 담당한다. 

->ex)window와 linux 모두 같은 하드웨어에서 운영되므로 동일한 오브젝트 코드가 두운영체제에서 모두 동작하나 두운영체제는 프로그램을 처리하는 방식이 다르기 때문에 각자에게 맞는 시동코드가 필요하다.

 

다른코드 2.라이브러리 루틴을 위한 코드

-> ex) printf()또한 실제코드는 라이브러리 (stdio.h) 안에 있다.

 

링커의 역할은 오브젝트 코드, 사용하는시스템에 맞는 시동코드, 라이브러리 코드를 묶어서 하나의 실행파일로 만드는 것이다.

 

소스코드 -> 컴파일러 -> 오브젝트 코드 -> 링커(시동코드, 라이브러리 코드) -> 실행 코드

a.out -> 실행파일

728x90

'Programming > C' 카테고리의 다른 글

C언어 공부 4  (0) 2019.04.28
C언어 공부 3  (0) 2019.04.28
프로그래밍 연습 1  (0) 2019.04.28
C언어 공부 2  (0) 2019.04.28
C 데이터  (0) 2018.12.28
728x90


int32_t -> 32비트 부호있는 정수형 변수이다.


PRId32는 inttypes.h에 정의되어 있는 "d"로 대체된다.

-------> inttypes.h 헤더 파일은 PRId32를 32비트 부호있는 값의 적당한 포맷지정자ㅋ를 나타내는 문자열로 정의한다.

해당 부분을 대체시키면

printf("me32 = %""d""\n",me32);

이 된다. 

C는 연속된 큰따옴표 문자열들을 하나의 큰따옴표 문자열로 결합한다. 

즉 printf("me32= %d\n",me32); 가 된다.


출력내용








int32_t 는 정확하게 32비트를 사용하기 때문에  고정폭 데이터형(exact width type)이라 부른다.

int_least8_t형은 8비트 부호있는 정수값을 가질 수 있는 최소폭 데이터형의 별명이다.

int_fast8_t 형은 8비트 부호있는 값들을 가장 빠르게 계산 할 수 있다. 이 데이터형을 최고속 초소폭 데이터형(fastest minimum width type)이라 부른다.




intmax_t 형은 최대폭 정수형이다.

uintmax_t 형은 부호없는 최대폭 정수형이다. 

-----> 이들은 long long 과 unsigned long 보다 더클 수 있다. C 컴파일러들이 이보다 더큰 데이터형을 정의하는것을 허용한다.




데이터형들의 크기




sizeof에 사용되는 데이터형을 위한 %zd 지정자가 존재한다.







잘못된 전달인자 사용의 예



printf함수와 scanf함수는 전달인자의 개수가 가변적이기 때문에 위와같이 전달인자를 잘못 넣을 수 있다.


float 형 값을 %d로 출력할 때, float형 값의 가장 가까운 int형값으로 변환되지않고 이상한 값을 출력한다.

전달인자의 개수를 잘못 줬을 때 컴파일러에서 에러를 출력하기도하지만 프로그램은 정상적으로 작동하기때문에 그냥 넘어갈 수 있다.

printf함수에 정확한 개수의 전달인자를 사용했는지 확인하라. 


이스케이프 문자사용



\a는 경보음을 내야하지만 내가 사용한 시스템에서는 경보음이 출력되지않았다.

\b는 백스페이스이다.

\b 7개를 통해 커서가 _ 7개 앞으로 가있다.

이후 입력을 해주고.

\n은 줄내림, \t는 tap이다. \r은 캐리지 리턴으로 커서를 현재라인의 시작 위치로 옮긴다.

입력한후에 enter키가 들어가고 10번째 줄의 printf에 의해 커서를 한줄더 밑으로 내립니다. 

10번째줄이 실행되고 11번째가 실행되지만 11번쨰 줄의 \r 캐리지 리턴으로 인해 커서가 맨앞으로가고 "우와"가 먼저 출력되고 

\t 이 실행된후 문자열이 출력되고 끝이난다.


우와 이후에 10번째 줄이 줄내림 이후에 출력는것이 아닌 이유는 11번째 함수가 10번째 함수가 실행된 후에 실행되기 때문이다. 

728x90

'Programming > C' 카테고리의 다른 글

C언어 공부 4  (0) 2019.04.28
C언어 공부 3  (0) 2019.04.28
프로그래밍 연습 1  (0) 2019.04.28
C언어 공부 2  (0) 2019.04.28
C언어 공부  (0) 2019.04.28

+ Recent posts