'c 공부' 카테고리의 다른 글
함수 Function (0) | 2023.12.26 |
---|---|
반복문_For (0) | 2023.12.26 |
조건문_Switch (0) | 2023.12.22 |
IF _조건문 (0) | 2023.12.20 |
2_Operator (1) | 2023.12.20 |
함수 Function (0) | 2023.12.26 |
---|---|
반복문_For (0) | 2023.12.26 |
조건문_Switch (0) | 2023.12.22 |
IF _조건문 (0) | 2023.12.20 |
2_Operator (1) | 2023.12.20 |
특정 입력을 받아서 프로그래머가 원하는 동작을 실행하거나, 결과 값을 반환하는 기능
(어떠한 공식을 만드는 것과 비슷!)
함수의 선언방법
반환형 함수이름(매개변수)
{
명령문;
}
ex)
int main()
{
return 0;
}
인트형의 매개변수가 없는 0을 반환하는 함수
반환형
함수의 결과 값의 형식, 변수형
반환형이 없는 함수는 명령문만 실행해주는 함수이다.
반환형이 없는 경우 void로 작성한다 (void = 공허하다 비어있다 반환형이 없다.)
ex)
void Attack()
{
printf("Attack\n");
}
반환을 하는게 아니라 Attack을 출력하는 함수 명령문만 실행해주는 함수이다.
출력을 할려면 main 함수에 써줘야하며 Attack(); 을 써서 함수를 호출해주어야 한다.
같은 이름의 함수를 '매개변수' 만 다르게 정의하는 C++ 의 기능
매개변수
일종의 변수선언 함수 내부에서만 작동함 지역변수임
함수 호출 했을 때 값을 매개변수에 대입을 시켜줌
호출 했을 때 값을 넣어주기 때문에 함수를 만들 떄 매개변수를 초기화 시켜주지 않는다.
반환형 : 리턴이 있다 반환형이다. 함수의 의한 어떤 결과값의 형식 동작을 한다.
Class (0) | 2024.01.05 |
---|---|
반복문_For (0) | 2023.12.26 |
조건문_Switch (0) | 2023.12.22 |
IF _조건문 (0) | 2023.12.20 |
2_Operator (1) | 2023.12.20 |
초기식 -> 조건식-> 명령문 ( ->조건식-> 증감식-> 명령문 ) ( -> 조건식-> 증감식-> 명령문 )
for문의 형식
for(초기식; 조건식; 증감식;)
{
명령문;
}
for문의 i는 index이다.
index = 순서를 정의할 때 index로 표현 보통 0부터 시작한다.
Class (0) | 2024.01.05 |
---|---|
함수 Function (0) | 2023.12.26 |
조건문_Switch (0) | 2023.12.22 |
IF _조건문 (0) | 2023.12.20 |
2_Operator (1) | 2023.12.20 |
조건 변수에 특정 값이 들어오면, 그 값에 해당되는 동작을 실행한다.
선언 방법
switch (조건 변수이름)
{
case 조건값1:
명령문1;
break;
case 조건값2:
명령문2;
break;
case 조건값3:
명령문3;
break;
}
break 문을 쓰지 않으면 멈추지 않고 계속 동작하거나 터질 수 있으므로 case가 끝날 때 break를 넣어줘야한다.
함수 Function (0) | 2023.12.26 |
---|---|
반복문_For (0) | 2023.12.26 |
IF _조건문 (0) | 2023.12.20 |
2_Operator (1) | 2023.12.20 |
1_Variable (0) | 2023.12.19 |
조건문 (Conditional Statement)
조건식이 true 일 때 명령문을 실행하게 해주는 문구
if (조건식)
{
명령문;
}
else if(조건식)
{
명령문;
}
else
{
명령문;
}
else if 는 여러개 쓸 수 있다.
else는 마지막 else가 오면 더 이상 쓸 수 없다.
함수 Function (0) | 2023.12.26 |
---|---|
반복문_For (0) | 2023.12.26 |
조건문_Switch (0) | 2023.12.22 |
2_Operator (1) | 2023.12.20 |
1_Variable (0) | 2023.12.19 |
연산자(Operator)
산술연산자(Arithmetic Operator) : + , -, *, /, % (modulus, mod, 나머지연산자)
대입연산자(Assignment Operator) : =, +=, -=, *=, /=, %/
증감연산자(Increment Operator) : n++, ++n, n--, --n
비교연산자(Comparison Operator) : ==, !=, >, >=, <, <=
논리연산자(Logical Operator) : &&(and), ||(or), !(not)
삼항연산자() : 조건식 ? true일 때 결과 값 : false일 때 결과값;
범위 지정 연산자(Scope Resolution Operator)
멤버 포인터 연산자(Point-To-Member Operator)
typeid 연산자
연산자의 우선순위(Operator Precedence)와 결합 방향(Associativity)
산술연산자 (Arithmetic Operator)
사칙연산을 다루는 기본적이고 가장 많이 사용되는 연산자입니다.
산술 연산자는 모두 두 개의 피 연산자를 가지는 이항 연산자이며, 피연산자들의 결합 방향은 왼쪽에서 오른쪽입니다.
+ | 왼쪽의 피연산자에 오른쪽의 피연산자를 더함. |
- | 왼쪽의 피연산자에서 오른쪽의 피 연산자를 뺌. |
* | 왼쪽의 피연산자에 오른쪽의 피연산자를 곱함. |
/ | 왼쪽의 피연산자를 오른쪽의 피연산자로 나눔. |
% | 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 반환함 |
대입 연산자 (Assignment Operator)
대입 연산자는 변수에 값을 대입할 때 사용하는 이항 연산자 피연산자들의 결합 방향은 오른쪽에서 왼쪽입니다.
또한 산술 연산자와 결합한 복합 대입 연산자가 존재합니다.
= | 왼쪽의 피연산자에 오른쪽의 피연산자를 대입함. |
+= | 왼쪽의 피연산자에 오른쪽의 피연산자를 더한 후, 그 결과값을 왼쪽의 피연산자에 대입함. |
-= | 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺀 후, 그 결과값을 왼쪽의 피연산자에 대입함. |
*= | 왼쪽의 피연산자에 오른쪽의 피연산자를 곱한 후, 그 결과값을 왼쪽의 피연산자에 대입함. |
/= | 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 결과값을 왼쪽의 피연산자에 대입함. |
%= | 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 왼쪽의 피연산자에 대입함. |
증감 연산자(Increment And Decrement Operator)
증감연산자는 피연산자를 1씩 증가 시키거나 감소 시키는 연산자로, 피연산자가 하나인 단항 연산자
증감 연산자는 해당 연산자가 피연산자의 어느 쪽에 위치하는가에 따라 연산의 순서와 결과가 달라짐
++n | 변수를 사용하기 전 피연산자의 값을 1 증가시킨 후에 해당 연산을 진행함. |
n++ | 변수를 사용하고 후에 피연산자의 값을 1 증가시킴. |
--n | 변수를 사용하기 전 피연산자의 값을 1 감소시킨 후에 해당 연산을 진행함. |
n-- | 변수를 사용하고 후에 피연산자의 값을 1 감소시킴. |
비교 연산자 (Comparison Operator)
비교 연산자는 피연산자 사이의 상대적 크기를 판단하는 연산자임 모두 두 개의 피 연산자를 가지는 이항 연산자이며,
피연산자들의 결합 방향은 왼쪽에서 오른쪽
== | 왼쪽의 피연산자와 오른쪽의 피 연산자가 같으면 1을 반환함. |
!= | 왼쪽의 피연산자와 오른쪽의 피연산자가 같지 않으면 1을 반환함. |
> | 왼쪽의 피연산자가 오른쪽의 피연산자보다 크면 1을 반환함. |
>= | 왼쪽의 피연산자가 오른쪽의 피연산자보다 크거나 같으면 1을 반환함. |
< | 왼쪽의 피연산자가 오른쪽의 피연산자보다 작으면 1을 반환함. |
<= | 왼쪽의 피연산자가 오른쪽의 피연산자보다 작거나 같으면 1을 반환함. |
Flase는 0이며, 0이 아닌 모든 값을 참(True)
논리 연산자(Logical Operator)
논리 연산자는 주어진 논리식을 판단하여, 참(True)와 거짓(False)를 결정하는 연산자
AND와 OR 연산은 두 개의 피연산자를 가지며, 피연산자의 결합 방향은 왼쪽에서 오른쪽
NOT 연산자는 피연산자가 하나인 단한 연산자이며, 피연산자의 결합 방향은 오른쪽에서 왼쪽
&& | 논리식이 모두 참이면 1을 반환함. (논리 AND 연산) |
|| | 논리식 중에서 하나라도 참이면 1을 반환함. (논리 OR 연산) |
! | 논리식의 결과가 참이면 0을, 거짓이면 1을 반환함. (논리 NOT 연산) |
비트 연산자 (Bitwise Operator)
비트연산자는 논리 연산자와 비슷하지만, 비트 단위로 논리 연산을 하는 연산자입니다.
1의 보수를 만들 때 사용
& | 대응되는 비트가 모두 1이면 1을 반환함. (비트 AND 연산) |
| | 대응되는 비트 중에서 하나라도 1이면 1을 반환함. (비트 OR 연산) |
^ | 대응되는 비트가 서로 다르면 1을 반환함. (비트 XOR 연산) |
~ | 비트를 1이면 0으로, 0이면 1로 반전시킴. (비트 NOT 연산, 1의 보수) |
<< | 지정한 수만큼 비트를 전부 왼쪽으로 이동시킴. (Left Shift 연산) |
>> | 부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킴. (Right Shift 연산) |
삼항 연산자 (Ternary Operator)
삼항연산자는 다른 언어에는 존재하지 않은 C언어만의 독특한 연산자입니다.
이 연산자는 C언어에서도 유일하게 피연산자를 세 개나 가지는 조건 연산자
조건식 ? 반환값1 : 반환값2
물음표 앞의 조건식의 결과에 따라 참(True) 이면 반환값1 을 반환하고, 거짓(False) 이면 반환값2를 반환합니다.
이를 이용하면 간단한 조건문은 if문 없이 코드 한 줄로 대체할 수 있고, 굉장히 유용하게 사용되는 연산자 입니다.
sizeof 연산자
컴퓨팅 환경에 따라 타입에 할당 되는 메모리의 크기가 달라질 수 있습니다. 그 때 확인하는 방법은
sizeof() 인데요, 아를 함수로 아시는 분들도 많은데 sizeof 단항 연산자로 피연산자의 크기를 바이트 단위로
반환하는 연산자입니다.
이 연산자의 피연산자로는 타입 뿐 아니라 변수의 상수도 올 수 있습니다. sizeof 연산자에 변수나 상수가
피연산자로 전달되면 해당 변수나 상수값에 해당되는 타입의 크기를 반환합니다.
범위 지정 연산자(Scope Resoluation Operator)
마지막에서 우선순위에 대해 알아본껀데, C++에서 가장 우선순위가 높은 연산자는 범위 지정 연산자입니다.
범위 지정 연산자(::)는 여러 범위에서 사용된 식별자를 식별하고 구분하는데 사용됩니다.
이러한 식별자로는 변수, 함수, 또는 열거체가 올 수 있습니다.
범위 지정 연산자를 변수 이름 앞에 붙이면 해당 변수는 전역으로 사용한다는 의미가 됩니다. 또한 클래스에
이 연산자를 사용하면 네임스페이스의 멤버를 식별하거나, 클래스의 정적 멤버를 호출할 수 있습니다.
::식별자
클래스이름::식별자
네임스페이스::식별자
열거체::식별자
멤버 포인터 연산자(Pointer-To-Member Operator)
C에는 없고 C++에만 존재하는 연산자로, 멤버 포인터 연산자를 사용해 클래스 멤버를 가리키는 포인터를 정의할 수 있음
두가지 형태가 존재
1. 왼쪽의 피연산자가 클래스 타입의 객체인 경우 : *
2. 왼쪽의 피연산자가 크랠스 타입의 객체를 가리키는 포인터인 경우 ->*
클래스타입의객체.*멤버이름
클래스타입의객체포인터->*멤버이름
typeid 연산자
C++에서는 typeid 연산자를 사용해 객체의 타입에 대한 정보를 알 수 있음. typeid 연산자는 런타임에 객체를 타입을
결정하는데 사용하고, 또한 템플릿에서 템플릿 매개변수의 타입을 결정할 떄도 사용함
typeid(표현식)
연산자의 우선순위 (Operator Precedence)와 결합 방향 (Associativity)
연산자의 우선순위는 수식 내에 여러 연산자가 함께 등장할 때, 어느 연산자가 먼저 처리될 것인가를 결정함
우선순위가 빠른 연산자가 가장 먼저 실행 됨
C++ 연산자의 우선순위표
1 | :: | 범위 지정 연산자 | - |
2 | ++ | 후위 증가 연산자 | 왼쪽에서 오른쪽으로 |
-- | 후위 감소 연산자 | 왼쪽에서 오른쪽으로 | |
() | 함수 호출 | 왼쪽에서 오른쪽으로 | |
[] | 첨자 연산자 | 왼쪽에서 오른쪽으로 | |
. | 멤버 연산자 | 왼쪽에서 오른쪽으로 | |
-> | 멤버 점근 연산자 | 왼쪽에서 오른쪽으로 | |
typeid | 타입인식 | 왼쪽에서 오른쪽으로 | |
const_cast | 상수 타입 변환 | 왼쪽에서 오른쪽으로 | |
dynamic_cast | 동적 타입 변환 | 왼쪽에서 오른쪽으로 | |
reinterpret_cast | 재해석 타입 변환 | 왼쪽에서 오른쪽으로 | |
static_cast | 정적 타입 변환 | 왼쪽에서 오른쪽으로 | |
3 | ! | 논리 NOT 연산자 | 오른쪽에서 왼쪽으로 |
~ | 비트 NOT 연산자 | 오른쪽에서 왼쪽으로 | |
+ | 양의 부호 (단항 연산자) | 오른쪽에서 왼쪽으로 | |
- | 음의 부호 (단항 연산자) | 오른쪽에서 왼쪽으로 | |
++ | 전위 증가 연산자 | 오른쪽에서 왼쪽으로 | |
-- | 전위 감소 연산자 | 오른쪽에서 왼쪽으로 | |
(타입) | 타입 캐스트 연산자 | 오른쪽에서 왼쪽으로 | |
* | 참조 연산자 (단항 연산자) | 오른쪽에서 왼쪽으로 | |
& | 주소 연산자 (단항 연산자) | 오른쪽에서 왼쪽으로 | |
sizeof | 크기 연산자 | 오른쪽에서 왼쪽으로 | |
new | 객체 생성 | 오른쪽에서 왼쪽으로 | |
delete | 객체 제거 | 오른쪽에서 왼쪽으로 | |
4 | .* | 멤버 포인터 연산자 | 왼쪽에서 오른쪽으로 |
->* | 참조 멤버 포인터 연산자 | 왼쪽에서 오른쪽으로 | |
5 | * | 곱셈 연산자 | 왼쪽에서 오른쪽으로 |
/ | 나눗셈 연산자 | 왼쪽에서 오른쪽으로 | |
% | 나머지 연산자 | 왼쪽에서 오른쪽으로 | |
6 | + | 덧셈 연산자 (이항 연산자) | 왼쪽에서 오른쪽으로 |
- | 뺄샘 연산자 (이항 연산자) | 왼쪽에서 오른쪽으로 | |
7 | << | 비트 왼쪽 시프트 연산자 | 왼쪽에서 오른쪽으로 |
>> | 부호 비트를 확장하면서 비트 오른쪽 시프트 | 왼쪽에서 오른쪽으로 | |
8 | < | 관계 연산자 (보다 작은) | 왼쪽에서 오른쪽으로 |
<= | 관계 연산자 (보다 작거나 같은) | 왼쪽에서 오른쪽으로 | |
> | 관계 연산자 (보다 큰) | 왼쪽에서 오른쪽으로 | |
>= | 관계 연산자 (보다 크거나 같은) | 왼쪽에서 오른쪽으로 | |
9 | == | 관계 연산자 (와 같은) | 왼쪽에서 오른쪽으로 |
!= | 관계 연산자 (와 같지 않은) | 왼쪽에서 오른쪽으로 | |
10 | & | 비트 AND 연산자 | 왼쪽에서 오른쪽으로 |
11 | ^ | 비트 XOR 연산자 | 왼쪽에서 오른쪽으로 |
12 | | | 비트 OR 연산자 | 왼쪽에서 오른쪽으로 |
13 | && | 논리 AND 연산자 | 왼쪽에서 오른쪽으로 |
14 | || | 논리 OR 연산자 | 왼쪽에서 오른쪽으로 |
15 | ?: | 삼항 조건 연산자 | 오른쪽에서 왼쪽으로 |
16 | = | 대입 연산자 및 복한 대입 연산자 (=, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |=) |
오른쪽에서 왼쪽으로 |
17 | throw | 예외 발생 | 왼쪽에서 오른쪽으로 |
18 | , | 쉼표 연산자 | 왼쪽에서 오른쪽으로 |
함수 Function (0) | 2023.12.26 |
---|---|
반복문_For (0) | 2023.12.26 |
조건문_Switch (0) | 2023.12.22 |
IF _조건문 (0) | 2023.12.20 |
1_Variable (0) | 2023.12.19 |
수학에서의 변수란, 어떤 정해지지 않은 임의 값을 표현하기 위해 사용된 '기호' 입니다.
데이터를 담는 공간
Variable 변수 _ 변할 수 있는 수
Constant 상수 _ 변할 수 있는 수
정수형
shot, int, long, longlong
실수형
float, double long double
논리형 bool(boolean 1byte)
문자형 char(character, 1byte) 글자 1개를 담는다
메모리의 최소 단위 1bit
메모리의 기본 단위 1byte (8bit 256가지)
변수 선언 시 유의 사항
1. 같은 이름의 변수를 중복해서 선언 할 수 없다 (대소문자)
2. 기본적인 변수 선언 방식 : 변수형 변수이름; 변수형 변수이름 = 초기값;
3. 변수 이름 제일 앞에는 숫자가 올 수 없다.
4. 특수 문자는 사용이 불가능 (단 , _는 사용 가능)
변수 네이밍 규칙
1. Camel 표기법
소문자로 시작해서 띄어쓰기를 대문자로 표시 (bloodType)
-변수에 주로 사용
2.Pascal 표기법
대문자로 시작해서 띄어씌기를 대문자로 표시 (BloodType)
- 함수에 주로 사용
3.Hungarian 표기법
소문자로 시작해서 띄어쓰기를 '_'(언더바)로 표시 (blood_type)
- 상수에 주로 사용
빌드
프로그램을 실행하기 위한 준비과정
빌드과정
1. 전처리기 _ 주석제거
2. 컴파일러 _ 코드해석 -> 어셈블리어
3. 어셈블러 _ 이진수로 번역 (biranry)로 번역
4. 링커 _ 앞의 모든 내용을 결함
제어문자의 종류 (Escape Squence)
제어문자 | 의미 | 제어문자 | 의미 |
\a | 경고음 | \t | 수평 탭(Tab) 키 |
\b | 백스페이스 | \v | 수직 탭(Tab) 키 |
\f | 폼피드 | \\ | 백슬리시(\) |
\n | 줄바꿈 | \' | 작은 따옴표 |
\r | 캐리지 리턴 | \" | 큰따옴표 |
서식 시정자 (format specifier)
서식 지정자 | 출력 형태 | 서식 지정자 | 출력형태 |
%c | 단일 문자 | %x | 부호가 없는 정수로서 16진수(소문자) |
%d | 부호가 있는 정수로서 10진수 | %X | 부호가 없는 정수로서 16진수(대문자) |
%i | 부호가 있는 정수로서 10진수 | %e | 과학 계산기용 표기(소문자'e') |
%f | 실수로서 10진수 | %cE | 과학 계산기용 표기(대문자'E') |
%s | 문자열 | %g | %e, %f중 더 짧은 표현을 사용함 |
%o | 부호가 없는 정수로서 8진수 | %cG | %E, %f중 더 짧은 표현을 사용함 |
%u | 부호가 없는 정수로서 10진수 | %% | % 부호를 출력함 |
함수 Function (0) | 2023.12.26 |
---|---|
반복문_For (0) | 2023.12.26 |
조건문_Switch (0) | 2023.12.22 |
IF _조건문 (0) | 2023.12.20 |
2_Operator (1) | 2023.12.20 |