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언어 정보 모음 #배열 #포인터
Since 2023 04 - 10
'소프트웨어 | Software > 프로그래밍 | C언어 | C' 카테고리의 다른 글
윤성우 열혈 C 프로그래밍 도전! 프로그래밍 3 답 (0) | 2023.05.22 |
---|---|
내가 보려고 만드는 C언어 정보 모음(심화) #배열 #포인터 (0) | 2023.05.10 |
윤성우 열혈 C 프로그래밍 도전! 프로그래밍 2 답 (0) | 2023.05.03 |
내가 보려고 만드는 C언어 정보 모음 #배열 #포인터 (0) | 2023.04.25 |
윤성우 열혈 C 프로그래밍 도전! 프로그래밍 1 답 (0) | 2023.04.20 |