C++ 2주차

2023. 9. 13. 12:48💻 프로그래밍 언어/C++


C언어 문법 정리1 식별자 / 리터럴 / 자료형 / 변수 / 전처리기 / 연산자


프로그래밍 언어의 자료형

프로그래밍 언어의 자료형(data type)은 데이터의 종류를 나타내는 것으로, 변수가 메모리에 어떤 종류의 데이터를 저장할 수 있는지, 그리고 그 데이터가 어떤 크기와 범위를 가질 수 있는지 결정합니다.

대표적인 자료형에는 다음과 같은 것들이 있습니다:

1. 정수형(Integer types): 정수 값을 표현하기 위한 자료형입니다. 예를 들어, C/C++에서는 int, short, long 등이 있고, Java에서는 byte, short, int, long 등이 있습니다.
2. 실수형(Floating-point types): 소수점을 포함하는 실수 값을 표현하기 위한 자료형입니다. 예를 들어, C/C++에서는 float, double 등이 있고, Java에서도 같은 이름의 실수형을 사용합니다.
3. 문자형(Character types): 문자나 문자열을 표현하기 위한 자료형입니다. 예를 들어, C/C++에서는 문자 하나를 표시하는 'char'와 문자열을 표시하는 'string'이 있으며, Java에서는 'char'와 'String' 클래스가 이에 해당합니다.
4. 논리(Boolean types): 참(true) 또는 거짓(false)만을 값으로 가지는 논리값을 표시하는 자료형인데 대부분의 언어에서 'boolean'으로 명명되어 있습니다.
5. 복합(Compound types): 여러 개의 다른 타입들을 한꺼번에 담을 수 있는 타입으로 배열(array), 구조체(structure), 클래스(class), 연합체(union) 등이 이에 해당합니다.


각 프로그래밍 언어마다 지원하는 자료 형태와 그 세부 사항은 다르므로 학습 시 각양각색의 문서나 참조자료를 활용해야 합니다.

 

정수형과 실수형 차이점 표                                   

기준 정수형(Integer Type)    실수형(Floating Point Type)
값의 종류 정수만 표현 가능합니다. 예를 들어, -1, 0, 1, 2 등입니다. 소수점을 포함하는 숫자를 표현 가능합니다. 예를 들어, -1.23, 0.0, 3.14 등입니다.
메모리 사용량 (일반적인 경우) 일반적으로 메모리 사용량이 적습니다 (예: C++에서 int는 보통 4바이트). 일반적으로 메모리 사용량이 많습니다 (예: C++에서 double은 보통 8바이트).
정확도 값에 대한 완벽한 정확성을 제공합니다. 즉 오차가 없습니다. 값에 대한 완벽한 정확성을 제공하지 않을 수 있습니다(소숫점 이하 자릿수가 많아질 때 오차 발생 가능성). 이는 부동 소숫점 연산의 한계 때문입니다.
연산 속도 일반적으로 빠른 연산 속도를 가집니다. 일반적으로 정수 연산보다 느린 연산 속도를 가집니다.

 

자동으로 만들어진 C++ 소스

int main()
{
    std::cout << "Hello World!\n";
}


프로그래밍 언어에서 모니터에 출력하는 대표적인 함수 비교
                                                       

언어 출력 함수  예제
C printf() printf("Hello, World!\n");
C++ std::cout std::cout << "Hello, World!" << std::endl;
Java System.out.println() System.out.println("Hello, World!");
JavaScript console.log() console.log("Hello, World!");
C# Console.WriteLine()  

 

Console programming : C++ vs C

#include <iostream> //C++
#include <stdio.h>  //C

int main()
{
    std::cout << "Hello World!\n";  //C++
    printf("Hello");    //C
}
#include <iostream>
using namespace std;
//네임스페이스로 std 사용, 잘 쓰지 않음
int main()
{
	cout << "Hello" << endl;
	return 0;
}
#include <iostream>
using std::cout; //더 좋은 방법
using std::endl;
//이제부터 cout은 std::cout을 참조하겠다!
int main()
{
cout<<"Hello"<<endl;
return 0;
}

 

입출력 스트림 객체 cout, cin

#include <iostream>
using std::cout;
using std::cin;
int main()
{
	int input;
	cout << "나이를 입력하세요: ";
	cin >> input;
	cout << "당신의 나이는: " << input << "살 입니다.";
	return 0;
}

 

여러 변수 값 출력(printf vs cout)

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	int a, b, c;
	a = 100;
	b = 200;
	c = a + b;
	printf("%d, %d, %d\n", a, b, c);//C, 함수
	cout << a << ',' << b << ',' << c;//C++, 객체
	return 0;
}

 

 

C언어 소스를 C++ 소스로 변경하기

//#define _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>
#include <iostream>
using std::cout;
using std::cin;
int main(void)
{
	int num;

	//printf("숫자 하나를 입력하세요=");
	cout << "숫자 하나를 입력하세요= ";
	//scanf("%d", &num);
	cin >> num;
	//printf("입력받은 수는 %d입니다.\n", num);
	cout << "입력받은 수는 " << num << "입니다.";
	return 0;
}
#include <iostream> // iostream 헤더 파일을 포함. std::cin과 std::cout를 사용하기 위해 필요합니다.

int main() { // 프로그램의 시작점인 main 함수를 선언합니다.
    int num; // 정수형 변수 num을 선언합니다.

    std::cout << "숫자 하나를 입력하세요="; // 사용자에게 숫자 입력을 요청하는 메시지를 출력합니다.
    std::cin >> num; // 사용자로부터 입력받은 숫자를 변수 num에 저장합니다.

    std::cout << "입력받은 수는 " << num << "입니다.\n"; // '입력받은 수는' 이라는 문자열과 변수 num의 값을 출력합니다.

    return 0; // 프로그램이 정상적으로 종료되었음을 운영체제에 알립니다.
}

 

구두점(punctuator) : 토큰을 구분

구두점

프로그래밍 언어에서 {}, [], () 사용의 의미

1. {} (중괄호)

    대부분의 프로그래밍 언어에서 코드 블록을 정의하는데 사용됩니다. 예를 들어, 함수나 제어 구조(if, for, while 등)의 본문을 나타내는데 사용됩니다.

if (condition) {
    // 이 부분이 if 문의 본문입니다.
}//cpp

JavaScript나 Python 등 일부 언어에서는 객체를 정의하는데도 사용됩니다.

 

2. [] (대괄호)

   배열에 접근하거나 배열을 정의하는 데에 주로 사용됩니다.

int arr[5] = {1, 2, 3, 4, 5}; // C++에서 배열을 정의하고 초기화합니다.
int firstElement = arr[0];     // 배열의 첫 번째 요소에 접근합니다.
//cpp

Python이나 JavaScript와 같은 언어에서는 리스트 또는 배열을 생성할 때도 사용합니다.

 

3. () (소괄호)

   함수 호출시 인자를 전달하는데 사용됩니다.

print("Hello World!") # Python에서 print 함수를 호출하고 "Hello World!" 문자열을 인자로 전달합니다.
//python

 

문장 끝에 ;를 사용하는 언어

1. C
2. C++
3. Java
4. JavaScript
5. PHP
6. Perl
7. Swift (하지만, Swift에서는 세미콜론은 선택사항이며, 대부분 생략 가능합니다)
8. Go

 

예약어(reserved word, keyword)

예약어

 

키워드와 대응하는 매크로(macro)

키워드와 대응하는 매크로

 

C언어 소스 C++로 변경하기

//#include <stdio.h> printf()함수 원형이 선언되어 있음, 전처리기
#include <iostream>
using std::cout;

int main(void) //콘솔 기반 C프로그램의 시작점
{ //main()함수의 시작

	int num1, num2; //변수 선언문, 실행문 보다 먼저 씀
	/* 변수명: 영문자(A-Z, a-z), 숫자(0-9), 밑줄(_)로 구성
	변수(variable):프로그램이 실행되는 동안 자료를
	기억시키기 위한 기억장소의 이름 */

	num1 = 100; //대문자와 소문자는 다른 변수로 인식
	num2 = -300; //변수에 상수 대입;
	cout << "두 수의 합은" << num1 + num2 << "입니다.";
	//표준 라이브러리 함수
	return 0;
} //main()함수의 끝

 

프로그래밍 언어에서 식별자를 만드는 공통적인 규칙

1. 문자와 숫자: 식별자는 알파벳(대소문자 모두), 숫자, 밑줄(_)로 구성됩니다.
2. 시작 문자: 대부분의 언어에서 식별자는 숫자로 시작할 수 없습니다. 보통 알파벳이나 밑줄로 시작합니다.
3. 대소문자 구분: 대부분의 프로그래밍 언어는 대소문자를 구분합니다. 예를 들어, myVariable과 myvariable은 서로 다른 식별자로 취급됩니다.
4. 예약어 사용 금지: 각 언어의 예약어(reserved words)나 키워드(keywords)를 식별자로 사용할 수 없습니다. 예를 들면 if, else, for, while 등입니다.
5. 길이 제한: 일부 프로그래밍 언어에서는 식별자의 길이에 제한을 두기도 합니다(하지만 이제 많은 현대 언어들에서는 이런 제한을 두지 않습니다).
6. 특수 문자 사용 금지: 일반적으로 특수 문자(@, #, $, % 등)는 식별자에 포함시킬 수 없습니다(일부 언어에서는 허용되기도 합니다).

 

카멜 표기법

1. Lower Camel Case (소문자 카멜 표기법): 첫 번째 단어의 첫 글자는 소문자로, 그 후의 모든 단어의 첫 글자는 대문자로 시작합니다. 예를 들면 firstName, isAvailable, printHelloWorld 등입니다.
2. Upper Camel Case (대문자 카멜 표기법): 모든 단어의 첫 글자가 대문자로 시작합니다. 일반적으로 클래스 이름을 지을 때 많이 사용됩니다. 예를 들면 Person, BankAccount, PrintStream 등입니다.

 

리터럴(literal)

리터럴

 

이스케이프 시퀀스(확장 문자열)

이스케이프 시퀀스

 

이스케이프 시퀀스를 사용하는 언어

1. C
2. C++
3. Java
4. JavaScript
5. Python
6. PHP
7. Ruby
8. Swift

 

문자형(character) 리터럴

#include <iostream>  // iostream 헤더 파일을 포함시킵니다. 이 헤더는 C++의 입출력 기능을 제공합니다.

using std::cout;    // std 네임스페이스의 cout 객체를 사용하기 위해 선언합니다. 
                    // 이렇게 하면 "std::cout" 대신 "cout"만으로도 cout 객체를 사용할 수 있습니다.

int main()          // 프로그램의 시작점인 main 함수를 정의합니다.
{
	int a = 10;   // 정수형 변수 a를 선언하고, 그 값을 10으로 초기화합니다.

	cout << 'a';  // 문자 'a'를 출력합니다. 이때 'a'는 문자 리터럴입니다.

	cout << a;    // 변수 a의 값을 출력합니다. 즉, 숫자 10을 출력하게 됩니다.

	return 0;     // 프로그램이 성공적으로 종료되었음을 운영 체제에 알리기 위해 main 함수에서 0을 반환합니다.
}

 

자동 형 변환

자동 형 변환

 

자동 형 변환을 하는 프로그래밍 언어

1. C
2. C++
3. Java
4. Python
5. JavaScript
6. PHP

ex)

#include <iostream>
using std::cout;
int main()
{
	cout << 10 / 4 <<"		 " << 10.0 / 4 << "		 " << 10 / 4.0 << "		 " << 10.0 / 4.0;	//2   2.5    2.5    2.5

	return 0;
}

 

증가, 감소 연산자

증감연산자

 

증가, 감소 연산자 예

#include <stdio.h>
int main(void)
{
	int a = 10, b = 10, c = 20, d = 20;
	int ap, bp, cm, dm;
	ap = ++a; // a=a+1; ap=a; ap=11, a=11 
	printf("a=%d, ap=%d\n", a, ap);
	bp = b++; // bp=b; b=b+1; bp=10, b=11 
	printf("b=%d, bp=%d\n", b, bp);
	cm = --c; // c=c-1; cm=c; cm=19, c=19 
	printf("c=%d, cm=%d\n", c, cm);
	dm = d--; // dm=d; d=d-1; dm=20, d=19 
	printf("d=%d, dm=%d\n", d, dm);
	printf("%d\n", dm++);
	printf("%d\n", ++dm);
	return 0;
}

 

cast 연산자

캐스트 연산자

#include <iostream>
using std::cout;
int main(void)
{
	cout << 10 / 4 << "  " << 10.0 / 4 << "   " << 10 / 4.0 << "\n";	//자동 형 변환
	cout << 10 / (double)4 << "   " << (double)10 / 4;	//강제 형 변환

	return 0; 
}

출처: C++ 프로그래밍 강의 자료

'💻 프로그래밍 언어 > C++' 카테고리의 다른 글

C++ 9주차  (0) 2023.11.01
C++ 6주차  (1) 2023.10.18
C++ 5주차  (1) 2023.10.11
C++ 4주차  (0) 2023.09.27
C++ 3주차  (0) 2023.09.20