C언어와 C++ 기초 비교

#include <iostream> //C++
int main()
{
    std::cout << "Hello World\n"; //C++
    printf("dd"); //C
} 

원래 C에서 쓰는 방법은 printf지만, c++에서 새로 생긴 방법은 cout이다.

c++에서 cout은 std(standard)네임스페이스 안에 만들어져 있으므로 std를 불러올 필요가 있으며 방법은 세가지 정도가 있다.

//1
using namespace std;
//2
using namespace std::cout;
//3
std::cout << "";

1번은 std라는 namespace를 전역으로 사용할때 쓴다, 가장 편하지만 소규모 코드가 아니라면 사용하기 힘들다.

2번은 cout을 사용할때 std를 사용하겠다는 코드다. 많이 쓰인다.

3번은 직접 코드마다 네임스페이스를 붙이는 방식으로 생산성은 떨어지지만 바로 어느 네임스페이스를 사용하는지 알 수 있다.

#include <iostream>
 using std::cout;
 using std::cin;
 int main()
{
	int input;
	cin >> input;
	cout << input <endl;
	return 0;
}

c++에서도 printf와 scanf를 사용할 수 있다.
하지만 새로 추가된 방식이 두가지가 있는데 cin과 cout이다.

printf와 scanf가 더 빠르고 기능이 많은 대신 덜 직관적인데
cin과 cout은 <<,>>를 사용해서 쉽게 사용할 수 있다.

endl은 \n,즉 개행의 역할을 한다.

//예제

#include <stdio.h>
int main(void)
{
	int num;
    
	//printf("숫자 하나를 입력하세요="); //c
	cout << "숫자 하나를 입력하세요="; //c++
    
	//scanf("%d", &num); //c
	cin >> num; //c++
    
	//printf("입력받은 수는 %d 	입니다.\n", num); //c
	cout << "입력받은 수는" << num << "입니다." << endl; //c++
    
	return 0;
}

공통으로 사용하는 문법은 식별자/상수/자료형/변수가 있다

식별자와 이름 만드는 규칙
식별자(identifier)란 변수, 함수 등에 부여하는 이름이다. 식별자는 영문자(A∼Z, a∼z), 숫자(0∼9),밑줄()만 가능하다. 한글이나 밑줄()을 제외한 특수 문자, int, char 등 컴파일러에 의해 미리 의미가 정해져 있는 단어인 예약어(keyword)는 불가능하다. 또한, 첫 글자는 반드시 영문자 또는 밑줄로 시작해야 한다.

상수 또는 리터럴
상수(constant)는 항상 그 값이 변하지 않는 요소로 숫자 상수는 그냥 쓰면 되지만, 문자 상수는
양쪽에 작은 따옴표(예를 들어 'a'), 문자열 상수는 양쪽에 큰 따옴표(예를 들어 "soft")로 감싸야 한다.

이스케이프 시퀀스(escape sequence)
역슬래쉬()와 영문자나 특수문자로 이루어진 문자 조합이며 문자 상수 내에서 개행 (new line) 문자, 작은 따옴표, 큰 따옴표, 특별한 의미를 갖는 문자 등을 나타내기 위해서 사용한다. 두 개의 문자로 보이지만 두 개의 문자가 하나의 의미를 갖는 단일 문자(1byte)다.

자료형
자료형(data type)은 처리, 저장하고자 하는 자료의 형태를 나타낸다. 가장 많이 사용하는 대표적인 기본 자료형은 문자형(char, 1바이트), 정수형(int, 4바이트), 실수형(double, 8바이트)이다.

자동 형 변환이 있으며 먹는 크기가 더 큰쪽으로 자료형이 합쳐진다.
ex) 10.0/4 -> 2.5, 10/4 = 2

변수
변수는 프로그램이 실행되는 동안 가변적인 자료를 저장하기 위한 기억장소의 이름으로 모든 변수는 사용하기 전에 반드시 선언을 해야 한다.


연산자
다양한 연산자가 있으며 특이사항이 있는 것만 아레 서술. 임의 변수는 X를 사용.

증감연산자
쓰는 위치에 따라 우선 순위가 달라지며 기능도 달리한다.
++x, 이 경우 전치이며 값이 증가 감소 후 변수로써 작동한다
x++, 이 경우 후치이며 변수로서 값을 넘겨주고 값이 변경된다.

캐스트 연산자
(자료형)X, 괄호 안 자료형으로 변수를 강제 변경한다

sizeof 연산자

#include <iostream>
using namespace std;

int main() {
    int x;
    int y[10];
    
    cout << sizeof("I love you!") << endl; // 12
    cout << sizeof("대한") << endl; // 5 (cp949) 또는 7 (utf-8)
    cout << sizeof(int) << endl; // 4
    cout << sizeof(x) << endl; // 4, sizeof x로도 사용 가능
    cout << sizeof(y) << endl; // 40, sizeof y로도 사용 가능
    
    return 0;
}

이렇게 변수나 자료형, 배열등이 차지하는 메모리 영역을 Byte단위로 얻는다.

대입연산자
X = 10, X에 10값이 들어가며 왼쪽에 오른쪽을 넣는다. 오른쪽에는 수식을 넣을 수 있다.

관계연산자
<,<=,>,>=,==,!= 를 사용하며 참과 거짓을 판별한다. 참이면 1, 거짓이면 0이 나온다.

논리 연산자
&&, ||, !은 각각 AND,OR,NOT의 역할을 한다. 주로 관계연산자와 함께 쓰인다.

비트 연산자와 비트 시프트 연산자
&,|,^,~ 그리고 <<,>> 가 있다. &은 비트 단위로 AND, |은 비트단위로 OR, ^은 비트 단위로 XOR, ~은 비트 단위로 NOT을 한다.

<<,>>은 비트 단위를 오른쪽 항만큼 움직인다. 즉 오른쪽 항이 2의 지수이고 << 은 곱, >>은 나눈다.

단, 몇몇 함수와 언어에서는 대입으로 쓰인다

기타연산자
[], ., ->, *
배열, 포인터와 관련되어 있는 연산자들이다.

연산자의 우선순위와 결합성

우선순위 결합성 연산자
1 R ( ), [ ], ., ->, ++(후치), --(후치)
2 L (자료형), sizeof, *, &, ++, --, +, -, ~, !
3 R -,~, *(곱셈), /, %
4 - +,-
5 - <<, >>
6 - <,<=,>,>=
7 - ==,!=
8 - &
9 - ^
10 - |
11 - &&
12 - ||
13 L ?:
14 - =, 혼합대입

출처 : Smile Han C언어 -  YouTube