𝗣𝗿𝗼𝗷𝗲𝗰𝘁 𝗔𝗩𝗦

Project AVS Since 2023.01.27

소프트웨어 | Software/프로그래밍 | C언어 | C

내가 보려고 만드는 C언어 정보 모음 #기본

아벵 AVS 2023. 4. 11. 21:37

CTRL + F 로 키워드 검색

본 글은 필자가 C언어를 공부하면서 쓰는 일종의 저장 노트입니다.

필자도 배우는 입장으로

필요하신 분 들은 적절히 사용하면 좋을 듯 하다.

 

비주기적 업데이트 예정

마지막 수정 2023 05 03 끝


 

 

실수 표현 방식


● 컴퓨터가 실수를 나타내는데엔 오차가 존재한다.

 

실수를 표현하는 식인데

m과 e에 적절한 값을 넣어서 0.0을 못 만든다.

2의 n승은 절대 0이 될 수 없다.

따라서 컴퓨터는 실수 표현을 정확히 표현하는게 아닌

근사치를 통해서 실수를 표현

 

 

● 12345

 

 연산자


&   : 비트단위 AND 연산  | 두 개의 비트가 모두 1일때 1 반환

|    : 비트단위 OR 연산     | 두 개의 비트중 하나라도 1이면 1 반환 

^   : 비트단위 XOR 연산   | 두 개의 비트가 서로 다르면 1 , 같으면 0 반환

~   : 비트단위 NOT 연산   | 비트를 0->1  , 1->0 으로 변환 , MSB도 변환한다.

<< : 비트단위 LEFT 이동  | 비트열을 오른쪽에 있는 값 만큼 이동 |

                                           ex) 15<<1 15비트열을 왼쪽으로 1칸씩 이동

>> : 비트단위 Right 이동  | 이하생략

 

 

특수 문자의 종류


\a : 경고음

\b : 백스페이스(backspace)

\f : 폼 피드(form feed)

\n : 새로운 행 (new line)

\r : 캐리지 리턴 (carriage return)

\t : 수평 탭

\v : 수직 탭

\' : 작은 따옴표 출력

\" : 큰 따옴표 출력

\? : 물음표 출력

\\ : 역슬래쉬 출력

 %c


%c : 문자의 형태로 데이터를 출력(또는 입력)함.

#include <stdio.h>

int main(void)
{
	char ch_1 = 'A' , ch_2=65;
    
    printf("%c %d \n",ch_1, ch_1);
    printf("%c %d \n",ch_2, ch_2);

※ 문자를 저장하는데 int형은 적합한가? -> No

   ㄴint형으로 선언시 연산이 빨라진다. 다만 문자를 연산할 일이 없기에 char이 적합

 

char형은 문자의 표현을 목적으로 정의된 자료형이므로 "문자형"으로 분류하기도 함.

   하지만 char형은 정수형이다. 문자도 정수의 형태로 표현이 되고,

   실제로 char형 변수에 저장되는 것은 정수다.  -윤성우의 열혈 C-

 

for 문

※ 반복의 횟수가 정해진 경우라면 for 문, 그렇지 않으면 while 문

 

※ 무한 루프----------------------------------------------------------------------

 

for( ; ; )
{

}

 

if 문


※ if 문은 몇줄에 걸쳐서 표현이 되건 하나의 문장으로 인식 된다.

 

if ~else 또한 두 개의 문장이 아닌 하나의 문장이다.

 

if ~ else 대체 삼항 연산자


※ (조건) ? data1 : data2

조건이 True 이면 data1  ,  False면 data2 반환

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int num, abs;
	printf("정수 입력: ");
	scanf("%d", &num);

	abs = num > 0 ? num : num * (-1);
	printf("절댓값 : %d \n", abs);
	return 0;
}

 

break문 continue 문


break문은 가장 가까이서 감싸고 있는 반복문 하나를 빠져 나온다.

 

continue문은 조건 검사로 이동한다.

 

Switch 문


※ 두 개의 레이블을 하나로 묶어서 표현 가능

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	char sel = 'n';
	switch (sel)
	{
	case 'M':
		printf("sel 값은 M or m \n");
	case 'm':
		printf("sel 값은 M or m \n");

	case 'N' : case 'n' : printf("sel 값은 N or n \n");
		break;
	}
	return 0;
}

switch 문은 if ... else if ... else 에 비해 가급적 분기의 수가 많을 때 사용

     그렇다고 해서 억지로 쓰지는 말자 if else가 더 편한 경우도 있다.

 

goto 문


※ goto문을 자주 쓰지는 않는다. 추천을 하지는 않는다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int num;
	printf("자연수 입력 : ");
	scanf("%d", &num);

	if (num == 1)
		goto ONE;
	else
		goto OTHER;

ONE:
	printf("입력값 1 \n");
	goto END;
OTHER:
	printf("1아님 \n");

END:
	return 0;

}

함수


※ 값을 반환하지 않는 형태 (종종 있음)

	void NoReturn(int num)
	{
		if (num < 0)
			return; //값을 반환하지 않음
	}

※ 함수 정의 순서(원래는 함수를 선언 하고 함수를 호출 해야하나 아래의 형태로도 가능)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int INC(int n); //int n 을 int로 변경 가능 -> 선언에서는 매개변수의 갯수 및 자료형만 포함 하면 된다.


int main(void)
{
	int num = 2;
	num = INC(num);
	printf("%d \n", num);
	return 0;
}

int INC(int n)
{
	n++;
	return n;
}

※ 피보나치 함수 C언어

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void Fib(int num) {
	int f1 = 0, f2 = 1, f3, i;
	if (num == 1)
		printf("%d \n", f1);
	else
		printf("%d %d ", f1, f2);

	for (i=0;i<num-2;i++)
	{
		f3 = f1 + f2;
		printf("%d ", f3);
		f1 = f2;
		f2 = f3;
	}
}

int main(void)
{
	int input;
	scanf("%d", &input);

	if (input < 1) {
		printf("1이상 입력해라 \n");
		return -1;
	}
	Fib(input);
	return 0;
}

 

 함수 - 지역 변수


※ 지역 변수는 중괄호 내에 선언되는 변수 -> 중괄호는 함수의 정의 , 반복문과 조건문에서도 선언

 

※ 지역 변수는 해당 지역을 벗어나면 자동으로 소멸 -> 선언문이 존재하는 함수가 반환(종료)하면 메모리 상에서 소멸

 

※ 선언된 지역이 다르면 이름이 같아도 문제가 되지 않는다.

 

매개변수는 지역변수임. -> 그 역은 성립 X | 지역변수를 '자동변수'라고 함. -> 자동으로 소멸 되기 때문

 

 함수 - 전역 변수


프로그램 시작과 동시에 메모리 공간 할당 , 초기화 진행하지 않을 시 0으로 초기화 

 

가급적 선언 자재 -> 스파게티 코드 형성 가능성 증가

 

그 외 변수


※ static | 선언된 함수 내에서만 접근 가능(지역변수) , 1회 초기화후 종료 시까지 메모리 공간 존재(전역 변수)

 

※ register | 레지스터 변수 , CPU내에 존재하는 '레지스터'라는 곳에 저장 -> 연산 속도가 매우 빠름

최종 결정은 컴파일러가 결정

 

다음편 :

2023.04.25 - [소프트웨어 | Software/프로그래밍 | C언어 | C] - 내가 보려고 만드는 C언어 정보 모음 #배열 #포인터

 

내가 보려고 만드는 C언어 정보 모음 #배열 #포인터

● 1차원 배열 ※ 배열의 길이 정보는 상수로 해주는 것이 좋다. 허나 최근에는 상수가 아닌 변수 선언도 허용하나 범용적으로 상수 선언을 권장한다. #define _CRT_SECURE_NO_WARNINGS #include int main(void) {

avs-won.tistory.com

Since 2023 04 - 10

 

반응형