먼지 쌓인 키보드

C언어 기초 내용 정리 (1/2) 본문

Programming

C언어 기초 내용 정리 (1/2)

Under_Desk 2019. 12. 4. 00:37
반응형

* 자료형

문자형 char 1byte

정수형 int 4byte

부동소수형 float 4byte

double 8byte

 

* 입력함수

scanf("입력형식기호", &변수);

입력형식기호

%c 문자입력

%d 10진수

%x 16진수

%o 8진수

%f float

%lf double

%e 지수형

%s 문자열

 

ex) %x %o사용법

int a=100;

printf("%o", a) 8진법으로 나옴

printf("%x", a) 16진법으로 나옴

 

 

* scanf주의할점

scanf("%d%d%d"로 하게 되었을 때 입력을

1 2 3을 하게 되면 첫 번째는 1 두 번째는 “ ”공백으로 입력됨

1[enter]2[enter]3[enter]를 하면 첫 번째 1 두 번째 [enter]가 입력된다.

 

scanf("%d %d %d", &a, &b, &c);를 하게되면 중간의 공백이 공백이나 enter를 잡아주게되어 사용가능하다

 

 

 

*getchar()함수는 입력받은 문자를 아스키코드 값인 정수형으로 저장하는 것이다.

 

grade=getchar();//A입력

printf %c grade //문자형 출력, A출력

printf %d grade // 정수형 출력, 65출력

 

%10f는 왼쪽부터 총 10개의자리를 차지하도록한다

123의 왼쪽에서 7번간후 123이 들어가 총 10개를 차지한다.

%05f는 총 자리른 똑같이 5개고 123이라면 왼쪽부터 2번간후 123인데 왼쪽의 빈칸 2개를 0으로 채운다

 

%-10f는 왼쪽부터 123이후 오른쪽으로 나머지 7칸이 간다.

 

 

* putchar();

 

grade=getchar();//A입력

putchar(grade);//A출력

 

int a=5, b=2;

(double)5/2; //2.5

(double)(5/2) //2

 

* 프로그래밍 규칙

이름은 대문자와 소문자로 구별

변수형은 소문자

함수명은 대소문자 모두가능

상수는 대문자

 

변수명은 가급적 한글자 사용x

변수명을 어떤 값을 저장하는 변수인지 알수있도록

숫자 1과 대소문자 I, I등을 구별한다

숫자 0과 대소문자 O, o등을 구별한다.

 

* 연산자

1의 보수

10으로 01로 바꾼다

 

2의 보수

1의 보수를 취한후 1을 더한다

 

a++ 후위

++a 전위

 

* 관계연산자

< <= > >= == !=(ab가 다른 경우 참)

a 0 0 1 1

b 0 1 0 1

&& 0 0 0 1

|| 0 1 1 1

^ 0 1 1 0

! !a 1 1 0 0

<< shift left a<<b ab만큼 왼쪽으로

>> shift right a>>b ab만큼 오른쪽으로

 

int a=9;

a<<2

00000000 00000000 00000000 00001001 9

00000000 00000000 00000000 00100100 36

a<<n a*2n

음수일 때 그대로

 

a>>2

00000000 00000000 00000000 00001001 9

00000000 00000000 00000000 0000001001

00000000 00000000 00000000 00000010 2

a>>n a/2n승 후 나머지는 버린다.

ex)2.5라면 2로 한다

음수일 때 -2.5-3이다.

그 수를 넘지않은 가장 큰 정수이므로 양수일땐 2.5를 넘지안는 큰정수는 2인데 음수일때는 2.5의 가장큰 정수는 -3이다.

 

* 비트 논리 연산자

&

|

~ 1의 보수

 

 

* 조건연산자

(조건식)? 실행문:실행문;

참 거짓

 

sizeof(자료형)

sizeof(수식)

sizeof(char)

 

단항>산술>관계>논리>대입

 

 

 

 

* 우선순위

++ ==

* / %

+ -

>> <<

< <= > >=

== !=

&

^

!

&&

||

 

 

* 스위치

switch(c)

{

case 1: printf~~~

break;

case 2:

 

default : 실행문;

}

 

 

 

* 반복문

for(초기값; 조건식; 증감식)

 

while(조건식)//조건식이 참일 때 계속 반복

{

}

 

do

{

}

while(조건식);

 

continue; 그이후의 반복문 내용은 무시하고 다시 반복문으로 돌아간다.

break; 반복문을 나간다.

 

* goto

goto 변수

변수: 실행문;

 

 

* 배열

자료형 배열명[배열크기]

int a[4]={1111111, 2222222, 3333333, 444444};

int b[4]={11, 22, 33}//크기보다 작아도됨 초기화 되지 않은 배열 요소는 0으로 초기화 된다.

int c[]={111, 222, 333, 444, 555}//배열크기 생략된다. 크기는 4

int d[4]={11, 22, 33, 44, 55}//크기가 4인데 5개 원소이므로 오류

 

다차원 배열

int a[2][4]={{1, 2, 3, 4}, {5, 6, 7, 8}};//배열선언 및 초기화

int b[2][4]={1, 2, 3, 4, 5, 6}//차례대로 초기화되어 b[0][1]부터 b[1][1]까지 6개 초기화후 b[1][2], b[1][3]은 선언되지 않았으므로 0으로 초기화된다.

int c[][4]={1, 2, 3, 4, 5, 6, 7, 8];

1234

5678 로 되면서 행의 크기는 2가 된다.

int d[4][] //에러

 

int nums[5]

sizeof(nums) 배열 전체 크기 5*4

sizeof(nums[0]) nums[0]의 크기

sizeof(nums)/sizeof(int) 배열 수 5

 

문자열

c[]="abcd";

c[0]c[1]c[2]c[3]c[4]

a b c d \0

크기 5 byte

 

%s

char name[13];

scanf("%s", name);

 

char b[][5]={"a","ab","abc","abcd"};

a \0\0\0\0

a b \0\0\0

a b c \0\0

a b c d \0

\0제외하고 4byte크기만큼 저장할수있음

 

 

gets puts 함수 문자열의 입출력

char name[10];

gets(name)//name 입력 크기 10byte

puts(name)//name 출력

반응형
Comments