등산 수송 경제적인 스토브

int는 얼마나 보유하고 있나요? 데이터 유형 및 변수. 정수 데이터 유형 접두사

이 섹션에서는 C++의 기본 데이터 유형에 대해 설명합니다. 이러한 데이터 유형을 내장이라고도 합니다. C++ 프로그래밍 언어는 확장 가능한 프로그래밍 언어입니다. 확장 가능이라는 용어는 기본 제공 데이터 유형 외에도 고유한 데이터 유형을 만들 수 있음을 의미합니다. 이것이 바로 C++에 수많은 데이터 유형이 있는 이유입니다. 주요 내용만 공부하겠습니다.

표 1 - C++ 데이터 유형
유형 바이트 허용되는 값의 범위

정수(부울) 데이터 유형

부울 1 0 / 255

정수(문자) 데이터 유형

1 0 / 255

정수 데이터 유형

짧은 정수 2 -32 768 / 32 767
부호 없는 짧은 정수 2 0 / 65 535
정수 4
부호 없는 정수 4 0 / 4 294 967 295
긴 정수 4 -2 147 483 648 / 2 147 483 647
부호 없는 긴 정수 4 0 / 4 294 967 295

부동 소수점 데이터 유형

뜨다 4 -2 147 483 648.0 / 2 147 483 647.0
긴 플로트 8
더블 8 -9 223 372 036 854 775 808 .0 / 9 223 372 036 854 775 807.0

표 1은 C++의 주요 데이터 유형을 보여줍니다. 전체 테이블은 세 개의 열로 나뉩니다. 첫 번째 열은 각각 고유한 데이터 유형을 결정하는 예약어를 나타냅니다. 두 번째 열은 해당 데이터 유형의 변수에 할당된 바이트 수를 나타냅니다. 세 번째 열에는 허용되는 값의 범위가 표시됩니다. 표에는 모든 데이터 유형이 가장 작은 것부터 가장 큰 것 순으로 정렬되어 있습니다.

부울 데이터 유형

표의 첫 번째 항목은 bool 데이터 유형입니다. 유효한 값의 범위는 0에서 255까지의 정수이므로 정수 데이터 유형입니다. 그러나 이미 알고 있듯이 괄호 안에는 논리 데이터 유형이 표시되어 있으며 이는 또한 사실입니다. 왜냐하면 부울부울 표현식의 결과를 저장하는 데만 사용됩니다. 부울 표현식은 true 또는 false라는 두 가지 결과 중 하나를 가질 수 있습니다. true - 논리식이 true인 경우 false - 논리식이 false인 경우입니다.

그러나 bool 데이터 유형의 유효한 값 범위는 0부터 255까지이므로 이 범위를 프로그래밍 언어에 정의된 논리 상수 true 및 false와 어떻게든 일치시켜야 했습니다. 따라서 상수 true는 1부터 255까지의 모든 숫자와 동일하지만 상수 false는 단 하나의 정수(0)와 동일합니다. bool 데이터 유형을 사용하는 프로그램을 고려하십시오.

// data_type.cpp: 콘솔 애플리케이션의 진입점을 정의합니다. #include "stdafx.h" #include 네임스페이스 std 사용; int main(int argc, char* argv) ( bool boolean = 25; // boolean이라는 bool 유형의 변수 if (boolean) // if cout 연산자의 조건<< "true = " << boolean << endl; // выполнится в случае истинности условия else cout << "false = " << boolean << endl; // выполнится в случае, если условие ложно system("pause"); return 0; }

안에 9호선유형 변수가 선언되었습니다.부울 , 이는 25로 초기화됩니다. 이론적으로는 이후9행, 부울 변수에서 숫자 25가 포함되어야 하는데 실제로 이 변수에는 숫자 1이 포함되어 있습니다. 앞서 말했듯이 숫자 0은 거짓 값이고 숫자 1은 참 값입니다. 요점은 다음과 같은 변수에서부울 0(false) 또는 1(true)의 두 가지 값을 포함할 수 있습니다. 반면 데이터 유형에서는부울 전체 바이트가 할당됩니다. 즉, 다음 유형의 변수가 할당됩니다.부울 0에서 255까지의 숫자를 포함할 수 있습니다. 거짓 값과 참 값을 결정하려면 0과 1 두 값만 필요합니다. "다른 253 값은 무엇입니까?"라는 질문이 생깁니다.

이러한 상황을 토대로 우리는 2부터 255까지의 숫자를 숫자 1과 동등한 숫자, 즉 진실로 사용하기로 합의했습니다. 이것이 바로 부울 변수에 1이 아닌 숫자 25가 포함되는 이유입니다. 라인 10-13선언되어 제어권이 운영자에게 전달됩니다. 라인 11, 조건이 true이고 연산자가 라인 13, 조건이 거짓인 경우. 프로그램의 결과는 그림 1에 나와 있습니다.

True = 1 계속하려면 아무 키나 누르십시오. . .

그림 1 - bool 데이터 유형

데이터 유형 문자

char 데이터 유형은 문자를 나타내는 데 사용되는 정수 데이터 유형입니다. 즉, 각 문자는 범위의 특정 숫자에 해당합니다. char 데이터 유형은 char 덕분에 C++에서 문자의 그래픽 표현이 가능하므로 문자 데이터 유형이라고도 합니다. C++에서 문자를 표현하기 위해 char 데이터 유형에는 1바이트가 할당되고, 1바이트에는 8비트가 포함됩니다. 그런 다음 2를 8제곱하여 값 256(인코딩할 수 있는 문자 수)을 얻습니다. 따라서 char 데이터 유형을 사용하면 256자 중 무엇이든 표시할 수 있습니다. 인코딩된 모든 문자는 로 표시됩니다.

ASCII(정보 교환을 위한 영어 표준 코드) - 정보 교환을 위한 미국 표준 코드입니다.

char 데이터 유형을 사용하는 프로그램을 고려하십시오.

// 기호.cpp: 콘솔 애플리케이션의 진입점을 정의합니다. #include "stdafx.h" #include 네임스페이스 std 사용; int main(int argc, char* argv) ( char 기호 = "a"; // char 유형의 변수를 선언하고 "a" 기호로 초기화 cout<< "symbol = " << symbol << endl; // печать символа, содержащегося в переменной symbol char string = "сайт"; // объявление символьного массива (строки) cout << "string = " << string << endl; // печать строки system("pause"); return 0; }

그래서, 9호선이름이 붙은 변수상징 , 기호 값이 할당됩니다"ㅏ" ( ASCII 코드). 안에 10번째 줄계산 연산자 변수에 포함된 문자를 인쇄합니다.상징 안에 라인 11이름이 있는 문자열 배열을 선언했습니다., 배열의 크기는 암시적으로 지정됩니다. 문자열은 문자열 배열에 저장됩니다."웹사이트" . 다음과 같은 변수에 기호를 저장할 때 주의하세요., 등호 뒤에 기호를 쓴 작은따옴표를 넣습니다. 특정 문자열로 문자열 배열을 초기화할 때, 특정 문자열을 쓰는 등호 뒤에 큰따옴표를 붙입니다. 일반 문자와 마찬가지로 연산자를 사용하여 문자열을 출력합니다.쿠우트 , 12번째 줄. 프로그램의 결과는 그림 2에 나와 있습니다.

기호 = 문자열 = 사이트 계속하려면 아무 키나 누르십시오. . .

그림 2 - char 데이터 유형

정수 데이터 유형

정수 데이터 유형은 숫자를 나타내는 데 사용됩니다. 표 1에는 그 중 6개가 있습니다: short int, unsigned short int, int, unsigned int, long int, unsigned long int . 그들은 모두 고유한 메모리 크기와 허용되는 값 범위를 가지고 있습니다. 컴파일러에 따라 차지하는 메모리 크기와 허용되는 값의 범위가 다를 수 있습니다. 표 1에서는 MVS2010 컴파일러에 대해 허용되는 모든 값 범위와 점유 메모리 크기를 사용합니다. 또한 표 1의 모든 데이터 종류는 메모리 점유 크기와 허용 값 범위가 큰 순서로 나열되어 있다. 허용되는 값의 범위는 어떤 식으로든 점유된 메모리의 크기에 따라 다릅니다. 따라서 점유하는 메모리의 크기가 클수록 허용되는 값의 범위가 커집니다. 또한 부호 없는 접두사를 사용하여 데이터 유형을 선언하면 허용되는 값의 범위가 변경됩니다. unsigned 접두사는 데이터 유형이 부호 있는 값을 저장할 수 없음을 의미하며, short int 및 unsigned short int 데이터 유형과 같이 양수 값의 범위가 두 배가 됩니다.

정수 데이터 유형 접두사:

짧은 접두사는 차지하는 메모리 크기를 줄여 적용되는 데이터 유형을 줄입니다.

접두사는 차지하는 메모리 크기를 늘려 적용되는 데이터 유형을 확장합니다.

unsigned - 접두사는 양수 값의 범위를 두 배로 늘리는 반면 음수 값의 범위는 이 데이터 유형에 저장할 수 없습니다.

따라서 본질적으로 정수를 나타내는 하나의 정수 유형, 즉 int 데이터 유형이 있습니다. short, long, unsigned 접두사 덕분에 점유된 메모리 크기 및 허용되는 값 범위가 다른 다양한 int 데이터 유형이 나타납니다.

부동 소수점 데이터 유형

C++에는 float와 double이라는 두 가지 유형의 부동 소수점 데이터가 있습니다. 부동 소수점 데이터 유형은 부동 소수점 숫자를 저장하도록 설계되었습니다. float 및 double 데이터 유형은 양수 및 음수 부동 소수점 숫자를 모두 저장할 수 있습니다. float 데이터 유형은 double 데이터 유형의 메모리 공간의 절반을 차지하므로 허용되는 값의 범위도 더 작습니다. float 데이터 유형이 긴 접두사로 선언되면 허용되는 값의 범위는 double 데이터 유형의 허용되는 값 범위와 같습니다. 기본적으로 부동 소수점 데이터 유형은 금전 거래와 같이 계산 정밀도가 높은 문제를 해결하는 데 필요합니다.

그럼 지금까지 C++의 주요 데이터형에 관한 주요 내용을 살펴보았습니다. 남은 것은 이러한 모든 허용 값 범위와 점유 메모리 크기가 어디에서 왔는지 보여주는 것입니다. 이를 위해 위에서 논의한 모든 유형의 데이터의 주요 특성을 계산하는 프로그램을 개발할 것입니다.

// data_types.cpp: 콘솔 애플리케이션의 진입점을 정의합니다. #include "stdafx.h" #include // I/O 조작 라이브러리 #include // 수학 함수의 헤더 파일 #include 네임스페이스 std 사용; int main(int argc, char* argv) ( cout<< " data type " << "byte" << " " << " max value "<< endl // 열 헤더 <<"bool = " << sizeof(bool) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных bool*/ << (pow(2,sizeof(bool) * 8.0) - 1) << endl << "char = " << sizeof(char) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных char*/ << (pow(2,sizeof(char) * 8.0) - 1) << endl << "short int = " << sizeof(short int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных short int*/ << (pow(2,sizeof(short int) * 8.0 - 1) - 1) << endl << "unsigned short int = " << sizeof(unsigned short int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных unsigned short int*/ << (pow(2,sizeof(unsigned short int) * 8.0) - 1) << endl << "int = " << sizeof(int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных int*/ << (pow(2,sizeof(int) * 8.0 - 1) - 1) << endl << "unsigned int = " << sizeof(unsigned int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных unsigned int*/ << (pow(2,sizeof(unsigned int) * 8.0) - 1) << endl << "long int = " << sizeof(long int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных long int*/ << (pow(2,sizeof(long int) * 8.0 - 1) - 1) << endl << "unsigned long int = " << sizeof(unsigned long int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных undigned long int*/ << (pow(2,sizeof(unsigned long int) * 8.0) - 1) << endl << "float = " << sizeof(float) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных float*/ << (pow(2,sizeof(float) * 8.0 - 1) - 1) << endl << "double = " << sizeof(double) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных double*/ << (pow(2,sizeof(double) * 8.0 - 1) - 1) << endl; system("pause"); return 0; }

이 프로그램은 귀하의 시스템에서 데이터 유형의 특성을 볼 수 있도록 게시되었습니다. 프로그램은 아직 익숙하지 않은 제어문을 사용하므로 코드를 이해할 필요가 없습니다. 프로그램 코드에 대한 피상적인 이해를 위해 아래에서 몇 가지 사항을 설명하겠습니다. 운영자크기() 데이터 유형이나 변수에 할당된 바이트 수를 계산합니다. 기능힘(x,y) 의미를 높인다 x의 y제곱 , 이 기능은 헤더 파일에서 사용할 수 있습니다. . 고정 및 setprecision() 조작자 헤더 파일에서 사용 가능 . 첫 번째는 해결되었습니다. , 고정된 형식의 값을 출력 스트림에 전달합니다. 속이는 사람 setprecision(n)은 n을 표시합니다. 소수점 자리. 특정 데이터 유형의 최대값은 다음 공식을 사용하여 계산됩니다.

Max_val_type = 2^(b * 8 - 1) - 1; // 음수와 양수가 있는 데이터 유형의 경우 // 여기서 b는 이 데이터 유형의 변수에 대해 메모리에 할당된 바이트 수입니다. // 1바이트에 8비트가 있으므로 8을 곱합니다. // 괄호에서 1을 뺍니다. 범위 번호는 양수 및 음수 값에 대해 둘로 나누어야하므로 // 숫자 범위는 0부터 시작하므로 끝에서 1을 빼야합니다. // 접두사가 붙은 데이터 유형 unsigned max_val_type = 2^(b * 8) - 1; // 양수만 있는 데이터 유형의 경우 // 수식에 대한 설명은 유사하며 괄호에서 단위만 빼지 않습니다.

프로그램 작동 방식의 예는 그림 3에서 볼 수 있습니다. 첫 번째 열은 C++의 주요 데이터 유형을 나타내고, 두 번째 열은 각 데이터 유형에 할당된 메모리 크기를 나타내며, 세 번째 열은 해당 데이터 유형에 해당하는 최대값을 나타냅니다. 데이터 유형은 다음을 포함할 수 있습니다. 최소값은 최대값과 유사한 것으로 나타났습니다. 부호 없는 접두사가 있는 데이터 유형의 경우 최소값은 0입니다.

데이터 유형 바이트 최대값 bool = 1 255.00 char = 1 255.00 short int = 2 32767.00 unsigned short int = 2 65535.00 int = 4 2147483647.00 unsigned int = 4 4294967295.00 long int = 4 2147483647.00 un signed long int = 4 4294967295.00 float = 4 2147483647.00 double = 8 9223372036854775808.00 계속하려면 아무 키나 누르세요. . .

그림 3 - C++ 데이터 유형

예를 들어, short int 유형의 변수에 값 33000이 할당되면 short int 유형 변수의 최대값이 32767이므로 비트 그리드가 오버플로됩니다. 즉, 다른 값이 변수에 저장됩니다. short int 유형이면 음수일 가능성이 높습니다. int 데이터 유형을 다루었으므로 int 키워드를 생략하고 short 와 같이 작성할 수 있다는 점에 주목할 필요가 있습니다. 컴파일러는 이러한 항목을 short int 로 해석합니다. long 및 unsigned 접두사에도 동일하게 적용됩니다. 예를 들어:

// 데이터 유형의 약어 int short a1; // short int와 동일 long a1; // long int unsigned a1과 동일; // unsigned int unsigned short a1과 동일; // unsigned short int와 동일

정수형 char은 메모리에서 1바이트(8비트)를 차지하며 2^8개의 값 ​​= 256을 바이너리로 표현할 수 있게 해준다. char 유형에는 양수 값과 음수 값이 모두 포함될 수 있습니다. 값의 범위는 -128부터 127까지입니다.

우차르

uchar 정수 유형도 char 유형과 마찬가지로 메모리에서 1바이트를 차지하지만, uchar는 양수 값에만 사용됩니다. 최소값은 0이고 최대값은 255입니다. uchar 유형 이름의 첫 번째 u는 unsigned의 약어입니다.

짧은

정수형 short 타입은 2바이트(16비트)의 크기를 가지며, 그에 따라 2의 16승인 2^16 = 65,536과 같은 값의 집합을 표현할 수 있게 해준다. 부호가 있고 양수 값과 음수 값을 모두 포함하는 경우 범위 값은 -32,768에서 32,767 사이입니다.

유쇼

unsigned short 유형은 ushort이며 크기도 2바이트입니다. 최소값은 0, 최대값은 65,535입니다.

정수

정수형 int의 크기는 4바이트(32비트)입니다. 최소값은 -2,147,483,648이고, 최대값은 2,147,483,647입니다.

단위

부호 없는 정수형 uint는 4바이트의 메모리를 차지하며 0부터 4,294,967,295까지의 정수 값을 표현할 수 있게 해줍니다.

정수형 long의 크기는 8바이트(64비트)입니다. 최소값은 -9,223,372,036,854,775,808이고, 최대값은 9,223,372,036,854,775,807입니다.

울롱

ulong 정수형도 8바이트를 차지하며 0부터 18,446,744,073,709,551,615까지의 값을 저장할 수 있습니다.

예:

문자 채널= 12 ;
짧은 sh=- 5000 ;
int = 2445777 ;

부호 없는 정수 유형은 음수 값을 저장하도록 설계되지 않았기 때문에 음수 값을 설정하려고 하면 예상치 못한 결과가 발생할 수 있습니다. 이와 같은 무고한 스크립트는 끝없는 루프로 이어집니다.

올바른 방법은 다음과 같습니다.

결과:

채널= -128 u_ch= 128
채널= -127 u_ch= 129
채널= -126 u_ch= 130
채널= -125 u_ch= 131
채널= -124 u_ch= 132
채널= -123 u_ch= 133
채널= -122 u_ch= 134
채널= -121 u_ch= 135
채널= -120 u_ch= 136
채널= -119 u_ch= 137
채널= -118 u_ch= 138
채널= -117 u_ch= 139
채널= -116 u_ch= 140
채널= -115 u_ch= 141
채널= -114 u_ch= 142
채널= -113 u_ch= 143
채널= -112 u_ch= 144
채널= -111 u_ch= 145
...

마지막 업데이트: 2017년 9월 17일

각 변수에는 특정 유형이 있습니다. 그리고 이 유형은 변수가 가질 수 있는 값, 변수에 대해 수행할 수 있는 작업, 메모리에서 얼마나 많은 바이트를 차지할 것인지를 결정합니다. C++ 언어에는 다음과 같은 기본 데이터 유형이 정의되어 있습니다.

    bool : 부울 유형. true와 false 두 가지 값 중 하나를 사용할 수 있습니다. 이 유형의 메모리 공간은 정확하게 정의되어 있지 않습니다.

    char : 단일 ASCII 문자를 나타냅니다. 메모리에서 1바이트(8비트)를 차지합니다. -128에서 127까지 또는 0에서 255까지의 값을 저장할 수 있습니다.

    signed char : 단일 문자를 나타냅니다. 메모리에서 1바이트(8비트)를 차지합니다. -128부터 127까지의 값을 저장할 수 있습니다.

    unsigned char : 단일 문자를 나타냅니다. 메모리에서 1바이트(8비트)를 차지합니다. 0부터 255까지의 값을 저장할 수 있습니다.

    wchar_t : 와이드 문자를 나타냅니다. Windows에서는 2바이트(16비트)의 메모리를 사용하고 Linux에서는 4바이트(32비트)의 메모리를 사용합니다. 0~65,535(2바이트의 경우) 또는 0~4,294,967,295(4바이트의 경우) 범위의 값을 저장할 수 있습니다.

    char16_t : 단일 유니코드 문자를 나타냅니다. 메모리에서 2바이트(16비트)를 차지합니다. 0부터 65,535까지의 값을 저장할 수 있습니다.

    char32_t : 단일 유니코드 문자를 나타냅니다. 메모리에서 4바이트(32비트)를 차지합니다. 0부터 4,294,967,295까지의 값을 저장할 수 있습니다.

    short : –32768 ~ 32767 범위의 정수를 나타냅니다. 2바이트(16비트)의 메모리를 차지합니다.

    이 유형에는 short int, signed short int, signed short와 같은 동의어도 있습니다.

    unsigned short : 0~65535 범위의 정수를 나타낸다. 2바이트(16비트)의 메모리를 차지한다.

    이 유형에는 unsigned short int 동의어도 있습니다.

    int: 정수를 나타냅니다. 프로세서 아키텍처에 따라 2바이트(16비트) 또는 4바이트(32비트)를 차지할 수 있습니다. 그에 따라 한계 값의 범위는 -32768에서 32767(2바이트) 또는 -2,147,483,648에서 2,147,483,647(4바이트)까지 다양할 수 있습니다. 단, 어떠한 경우에도 사이즈는 숏타입의 사이즈보다 크거나 같고, 롱타입의 사이즈보다 작거나 같아야 합니다.

    이 유형에는 signed int 및 signed 동의어가 있습니다.

    unsigned int : 양의 정수를 나타냅니다. 프로세서 아키텍처에 따라 2바이트(16비트) 또는 4바이트(32비트)를 차지할 수 있으며 이로 인해 제한 값의 범위는 0에서 65535(2바이트의 경우)까지 다양할 수 있습니다. 0 ~ 4,294,967,295(4바이트의 경우).

    unsigned는 이 유형의 동의어로 사용될 수 있습니다.

    long : -2,147,483,648~2,147,483,647 범위의 정수를 나타내며, 4바이트(32비트)의 메모리를 차지한다.

    이 유형에는 long int, signed long int 및 signed long 동의어도 있습니다.

    unsigned long : 0~4,294,967,295 범위의 정수를 나타내며, 4바이트(32비트)의 메모리를 차지한다.

    unsigned long int 동의어가 있습니다.

    long long: -9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807 범위의 정수를 나타내며 일반적으로 8바이트(64비트)의 메모리를 차지합니다.

    동의어는 long long int , signed long long int 및 signed long long 입니다.

    unsigned long long : 0~18,446,744,073,709,551,615 범위의 정수를 나타내며, 일반적으로 8바이트(64비트)의 메모리를 차지한다.

    unsigned long long int 동의어가 있습니다.

    float : +/- 3.4E-38 ~ 3.4E+38 범위의 단정밀도 부동 소수점 실수를 나타냅니다. 메모리에서 4바이트(32비트)를 차지합니다.

    double : +/- 1.7E-308 ~ 1.7E+308 범위의 배정밀도 부동 소수점 실수를 나타냅니다. 메모리에서 8바이트(64비트)를 차지합니다.

    long double : 최소 8바이트(64비트)의 배정밀도 부동 소수점 실수를 나타냅니다. 점유된 메모리의 크기에 따라 유효한 값의 범위가 달라질 수 있습니다.

    void : 값이 없는 유형

따라서 void를 제외한 모든 데이터 유형은 문자(char, wchar_t, char16_t, char32_t), 정수(short, int, long, long long) 및 부동 소수점 숫자 유형(float, double, long double)의 세 그룹으로 나눌 수 있습니다.

문자 유형

애플리케이션에서 문자를 나타내는 데 사용되는 유형은 char, wchar_t, char16_t 및 char32_t입니다.

여러 변수를 정의해 보겠습니다.

문자 c="d"; wchar_t d="c";

char 변수는 작은따옴표로 묶인 문자 하나를 값으로 사용합니다( char c ="d" ). 목록에 위에 지정된 범위의 숫자( char c = 120 )를 할당할 수도 있습니다. 이 경우 변수 c의 값은 ASCII 문자 테이블에서 코드 120을 갖는 문자가 됩니다.

wchar_t 문자를 콘솔에 출력하려면 std::cout이 아닌 std::wcout 스트림을 사용해야 한다는 점을 고려해 볼 가치가 있습니다.

#포함하다 int main() ( char a = "H"; wchar_t b = "e"; std::wcout<< a << b << "\n"; return 0; }

이 경우 std::wcout 스트림은 char 및 wchar_t 모두에서 작동할 수 있습니다. 그리고 wchar_t 변수에 대한 std::cout 스트림은 문자 대신 숫자 코드를 출력합니다.

C++11 표준에는 유니코드 사용을 지향하는 char16_t 및 char32_t 유형이 추가되었습니다. 그러나 이러한 유형으로 작업하기 위한 스레드는 아직 OS 수준에서 구현되지 않았습니다. 따라서 이러한 유형의 변수 값을 콘솔에 표시해야 하는 경우 변수를 char 또는 wchar_t 유형으로 변환해야 합니다.

#포함하다 int main() ( char a = "H"; wchar_t b = "e"; char16_t c = "l"; char32_t d = "o"; std::cout<< a << (char)b << (char)c << (char)d << "\n"; return 0; }

이 경우 출력시 변수 앞에 char형 -(char)으로의 형변환 연산이 선행되는데, 이로 인해 변수 b, c, d의 값이 char형으로 변환되어 출력될 수 있다. std::cout 스트림을 사용하는 콘솔.

정수 유형

정수 유형은 short, unsigned short, int, unsigned int, long, unsigned long, long long 및 unsigned long long 유형으로 표시됩니다.

짧은 a = -10; 부호 없는 짧은 b= 10; int c = -30; 부호 없는 int d = 60; 긴 e = -170; 부호 없는 긴 f = 45; 긴 긴 g = 89;

부동 소수점 숫자의 유형

부동 소수점 및 분수 유형은 float, double 및 long double로 표시됩니다.

부동 a = -10.45; 더블 b = 0.00105; 긴 더블 c = 30.890045;

데이터 유형 크기

위 목록은 각 유형이 메모리에서 차지하는 크기를 보여줍니다. 그러나 컴파일러 개발자는 컴퓨터의 하드웨어 기능에 따라 독립적으로 유형의 크기 제한을 선택할 수 있다는 점은 주목할 가치가 있습니다. 표준은 있어야 할 최소값만을 설정합니다. 예를 들어, int 및 short 유형의 경우 최소값은 long 유형의 경우 16비트이고, long double 유형의 경우 32비트입니다. 이 경우, long 타입의 크기는 int 타입의 크기 이상, int 타입의 크기는 short 타입의 크기 이상, long double 타입의 크기는 반드시 두 배보다 커야 합니다. 예를 들어, Windows용 g++ 컴파일러는 긴 double에 12바이트를 사용하고, Visual Studio에 내장되어 Windows에서도 실행되는 컴파일러는 long double에 8바이트를 사용합니다. 즉, 동일한 플랫폼 내에서도 컴파일러마다 특정 데이터 유형의 크기에 대한 접근 방식이 다를 수 있습니다. 그러나 일반적으로 데이터 유형을 기술할 때 위에 표시된 크기가 사용됩니다.

그러나 특정 유형의 크기를 정확히 알아야 하는 상황이 있습니다. 이를 위해 C++에는 변수가 차지하는 메모리 크기를 바이트 단위로 반환하는 sizeof() 연산자가 있습니다.

#포함하다 int main() (긴 이중 숫자 = 2; std::cout<< "sizeof(number) =" << sizeof(number); return 0; }

g++에서 컴파일할 때 콘솔 출력:

sizeof(숫자) = 12

동시에, 변수를 정의할 때 변수의 값이 해당 유형에 대해 설명된 제한을 초과해서는 안 된다는 점을 이해하는 것이 중요합니다. 예를 들어:

부호 없는 짧은 숫자 = -65535;

G++ 컴파일러는 이 라인으로 프로그램을 컴파일할 때 값 -65535가 부호 없는 짧은 유형의 유효한 값 범위 내에 있지 않다는 오류를 생성하고 잘립니다.

Visual Studio에서는 컴파일이 오류 없이 진행될 수 있지만 number 변수는 숫자 -65535를 부호 없는 짧은 형식으로 변환한 결과인 값 2를 받습니다. 즉, 결과는 예상했던 것과 정확히 일치하지 않습니다. 변수의 값은 특정 유형에 따라 해석되는 메모리의 비트 모음일 뿐입니다. 그리고 다른 유형의 경우 동일한 비트 세트가 다르게 해석될 수 있습니다. 따라서 변수에 값을 할당할 때 특정 유형의 값 범위를 고려하는 것이 중요합니다.

자동 지정자

때로는 표현 유형을 결정하는 것이 어려울 수 있습니다. 그리고 최신 표준에 따르면 컴파일러가 객체 자체의 유형을 추론하도록 할 수 있습니다. 그리고 이를 위해 자동 지정자가 사용됩니다. 또한 자동 지정자를 사용하여 변수를 정의하는 경우 이 변수는 일부 값으로 초기화되어야 합니다.

자동 번호 = 5;

할당된 값을 기반으로 컴파일러는 변수 유형을 추론합니다. 자동 지정자를 사용하여 초기화되지 않은 변수는 허용되지 않습니다.

데이터 유형

C#은 강력한 형식의 언어이기 때문에 데이터 형식이 특히 중요합니다. 이는 모든 작업이 컴파일러에 의해 엄격한 유형 검사를 받고 불법적인 작업이 컴파일되지 않음을 의미합니다. 결과적으로 엄격한 유형 검사를 통해 오류가 제거되고 프로그램의 신뢰성이 향상됩니다. 유형 검사를 시행하려면 모든 변수, 표현식 및 값이 특정 유형이어야 합니다. 이 프로그래밍 언어에는 "유형이 없는" 변수라는 것이 전혀 없습니다. 또한 값의 유형에 따라 수행할 수 있는 작업이 결정됩니다. 한 데이터 유형에 적합한 작업이 다른 데이터 유형에는 유효하지 않을 수 있습니다.

C#에는 기본 제공 데이터 형식에 대한 두 가지 일반적인 범주가 있습니다. 값 유형그리고 참조 유형. 변수의 내용이 다릅니다. 개념적으로 둘 사이의 차이점은 값 유형은 데이터를 직접 저장하는 반면 참조 유형은 값에 대한 참조를 저장한다는 것입니다.

이러한 유형은 메모리의 다양한 위치에 저장됩니다. 값 유형은 스택이라는 영역에 저장되고 참조 유형은 관리되는 힙이라는 영역에 저장됩니다.

한 번 보자 값 유형.

정수 유형

C#은 9개의 정수 유형을 정의합니다. char, 바이트, sbyte, short, ushort, int, uint, long 및 ulong. 그러나 char 유형은 주로 문자를 나타내는 데 사용되므로 별도로 취급됩니다. 나머지 8개의 정수 유형은 숫자 계산을 위한 것입니다. 다음은 숫자와 비트 심도의 범위입니다.

C# 정수 유형
유형 CTS를 입력하세요 비트 크기 범위
바이트 시스템.바이트 8 0:255
s바이트 시스템.SByte 8 -128:127
짧은 시스템.Int16 16 -32768: 32767
유쇼 시스템.UInt16 16 0: 65535
정수 시스템.Int32 32 -2147483648: 2147483647
단위 시스템.UInt32 32 0: 4294967295
시스템.Int64 64 -9223372036854775808: 9223372036854775807
울롱 시스템.UInt64 64 0: 18446744073709551615

위 표에서 볼 수 있듯이 C#은 다양한 정수 유형의 부호 있는 변형과 부호 없는 변형을 모두 정의합니다. 부호 있는 정수 유형은 정수의 최상위 비트를 해석하는 방식에서 부호 없는 정수 유형과 다릅니다. 따라서 프로그램이 부호 있는 정수 값을 지정하는 경우 C# 컴파일러는 정수의 최상위 비트를 부호 플래그로 사용하는 코드를 생성합니다. 부호 플래그가 0이면 숫자는 양수로 간주되고 1이면 음수로 간주됩니다.

음수는 거의 항상 2의 보수법으로 표현됩니다. 즉, 음수의 모든 이진수를 먼저 반전시킨 다음 해당 숫자에 1을 더합니다.

아마도 프로그래밍에서 가장 일반적인 정수 유형은 다음과 같습니다. 정수형. int 유형의 변수는 루프 제어, 배열 인덱싱 및 범용 수학 계산에 자주 사용됩니다. int 유형보다 표현 범위가 더 넓은 정수 값이 필요한 경우 이 목적에 사용할 수 있는 다른 정수 유형이 많이 있습니다.

따라서 부호 없이 값을 저장해야 하는 경우 해당 값을 선택할 수 있습니다. 단위 유형, 큰 부호 있는 값의 경우 - 긴 유형, 그리고 부호 없는 큰 값의 경우 - 유형 울롱. 예를 들어, 아래는 지구에서 태양까지의 거리를 센티미터 단위로 계산하는 프로그램입니다. 이렇게 큰 값을 저장하기 위해 긴 변수를 사용합니다.

시스템 사용; System.Collections.Generic을 사용합니다. System.Linq 사용; System.Text 사용; 네임스페이스 ConsoleApplication1 ( 클래스 Program ( static void Main(string args) ( long result; const long km = 149800000; // 거리(km). 결과 = km * 1000 * 100; Console.WriteLine(result); Console.ReadLine(); ) ) )

모든 정수 변수에는 10진수 또는 16진수 표기법으로 값을 할당할 수 있습니다. 후자의 경우 0x 접두사가 필요합니다.

긴 x = 0x12ab;

정수 값이 int, uint, long 또는 ulong 유형인지 확실하지 않은 경우 기본 int가 허용됩니다. 값이 가져야 하는 다른 정수 유형을 명시적으로 지정하려면 다음 문자를 숫자에 추가할 수 있습니다.

단위 ui = 1234U; 긴 l = 1234L; 울롱 ul = 1234UL;

U와 L은 소문자로도 쓸 수 있지만 소문자 L은 숫자 1(일)과 시각적으로 쉽게 혼동될 수 있습니다.

부동 소수점 유형

부동 소수점 유형을 사용하면 숫자를 분수 부분으로 표현할 수 있습니다. C#에는 두 가지 유형의 부동 소수점 데이터 유형이 있습니다. 뜨다그리고 더블. 이들은 각각 단정밀도와 배정밀도로 숫자 값을 나타냅니다. 따라서 float 유형의 너비는 32비트이며 이는 대략 5E-45에서 3.4E+38까지의 숫자 표현 범위에 해당합니다. 그리고 double형의 너비는 64비트로 대략 5E-324부터 1.7E+308까지의 숫자 표현 범위에 해당한다.

float 데이터 유형은 정밀도가 덜 요구되는 더 작은 부동 소수점 값을 위한 것입니다. double 데이터 유형은 float보다 크고 더 높은 정밀도(15비트)를 제공합니다.

정수가 아닌 값이 소스 코드(예: 12.3)에 하드 코딩된 경우 컴파일러는 일반적으로 double 값이 의도된 것으로 가정합니다. 값을 부동 소수점으로 지정해야 하는 경우 F(또는 f) 문자를 추가해야 합니다.

플로트 f = 12.3F;

소수 데이터 유형

고정밀 부동 소수점 숫자를 표현하기 위해 10진수 유형도 제공됩니다. 소수, 재무 계산에 사용하기 위한 것입니다. 이 유형은 1E-28부터 7.9E+28까지의 숫자 값을 표현하기 위해 128비트의 너비를 가집니다. 일반적인 부동 소수점 연산에서는 소수점 반올림 오류가 발생하기 쉽다는 것을 알고 계실 것입니다. 이러한 오류는 소수점 이하 28자리(경우에 따라 29자리)까지 숫자를 표시할 수 있는 소수점 형식을 사용하면 제거됩니다. 이 데이터 유형은 반올림 오류 없이 소수 값을 나타낼 수 있으므로 재무 관련 계산에 특히 유용합니다.

시스템 사용; System.Collections.Generic을 사용합니다. System.Linq 사용; System.Text 사용; 네임스페이스 ConsoleApplication1 ( 클래스 프로그램 ( static void Main(string args) ( // *** 투자 비용 계산 *** // *** 고정 수익률*** 십진법, 백분율; int i; const 바이트 연도 = 15 ; 돈 = 1000.0m; 퍼센트 = 0.045m; for (i = 1; i

이 프로그램의 결과는 다음과 같습니다.

기호

C#에서는 문자가 C++ 등 다른 많은 프로그래밍 언어처럼 8비트 코드로 표현되지 않고 16비트 코드로 표현됩니다. 유니코드. 유니코드의 문자 집합은 매우 광범위하여 전 세계 거의 모든 자연어의 문자를 포함합니다. 영어, 프랑스어, 독일어를 포함한 많은 자연어는 상대적으로 작은 알파벳을 사용하는 반면, 중국어와 같은 일부 다른 언어는 8비트 코드로 표현할 수 없는 상당히 큰 문자 집합을 사용합니다. 이러한 제한을 극복하기 위해 C#에서는 다음을 정의합니다. 문자를 입력하세요 0부터 65,535까지의 부호 없는 16비트 값을 나타냅니다. 그러나 표준 8비트 ASCII 문자 집합은 0부터 127까지의 유니코드의 하위 집합입니다. 따라서 ASCII 문자는 C#에서 여전히 유효합니다.

프로그래밍에서 데이터 유형은 두 세트, 즉 값 세트와 이에 적용될 수 있는 작업 세트의 모음입니다. 예를 들어, 덧셈(+), 곱셈(*), 정수 나눗셈(/), 나머지(%), 뺄셈(−) 연산은 유한한 자연수 집합으로 구성된 음이 아닌 정수 데이터 형식에 적용될 수 있습니다.

프로그래밍 언어에는 일반적으로 기본 내장 단위로 프로그래밍 언어에서 제공하는 기본 데이터 유형 세트가 있습니다. C++에서 언어 작성자는 이러한 유형을 기본 유형이라고 부릅니다. C++의 기본 유형은 다음과 같습니다.

  • 부울(bool);
  • 문자(예: 문자);
  • int(예: int);
  • 부동 소수점(예: 부동 소수점);
  • 열거형(프로그래머가 정의함)
  • 무효의 .

나열된 유형 외에도 다음 유형이 구축됩니다.

  • 실증적(예: int*);
  • 배열(예: 문자);
  • 참조(예: double&);
  • 다른 구조.

리터럴(예: 1, 2.4F, 25e-4, 'a' 등)의 개념으로 넘어가겠습니다. 리터럴은 고정된 값을 나타내는 프로그램 소스 코드의 항목입니다. 즉, 리터럴은 단순히 프로그램 코드에서 특정 유형의 객체(값)를 표현한 것입니다. C++에는 정수, 부동 소수점, 문자, 부울 및 문자열 값을 쓸 수 있는 기능이 있습니다.

정수 유형 리터럴은 다음과 같이 작성할 수 있습니다.

  • 10번째 숫자 체계. 예를 들어 1205 ;
  • 0 + 숫자 형식의 8번째 숫자 시스템입니다. 예를 들어 0142;
  • 0x + 숫자 형식의 16번째 숫자 시스템입니다. 예를 들어 0x2F입니다.

24, 030, 0x18 - 이들은 모두 다른 숫자 체계로 된 동일한 숫자의 레코드입니다.
부동 소수점 숫자를 쓰려면 점 표기법(0.1, .5, 4)을 사용하십시오.
지수 표기법 - 25e-100. 그러한 레코드에는 공백이 없어야 합니다.

리터럴로 작성된 값을 연결할 수 있는 이름을 변수라고 합니다. 변수는 데이터에 액세스하는 데 주소를 사용할 수 있는 이름이 지정되거나 주소 지정이 가능한 메모리 영역입니다. 이 데이터는 프로그램 실행 중에 특정 방식으로 메모리에 기록되고 다시 기록되고 삭제됩니다. 변수를 사용하면 언제든지 데이터에 액세스하고 필요한 경우 데이터를 변경할 수 있습니다. 변수 이름에서 검색할 수 있는 데이터를 변수 값이라고 합니다.
프로그램에서 변수를 사용하기 위해서는 선언이 필요하며, 필요하다면 정의(=초기화)가 가능합니다. 프로그램 텍스트의 변수 선언에는 기본 유형과 선언자라는 두 부분이 반드시 포함됩니다. 지정자와 초기화자는 선택적인 부분입니다:

Const int 예 = 3; // 여기서 const는 지정자입니다. // int는 기본 유형입니다. // 예는 변수의 이름입니다. // = 3 - 초기화 프로그램입니다.

변수 이름은 라틴 알파벳 문자(소문자 및 대문자), 숫자 및/또는 밑줄로 구성된 일련의 문자이지만 첫 번째 문자는 숫자가 될 수 없습니다. 변수 이름은 저장 내용을 항상 쉽게 추측할 수 있도록 선택해야 합니다(예: "monthPayment"). 노트와 실습에서는 변수 기록 규칙에 CamelCase 표기법을 사용하겠습니다. 변수 이름은 해당 언어에 예약된 단어와 일치할 수 없습니다. 이러한 단어의 예로는 if, while, function, goto, switch 등이 있습니다.

변수 이름 외에도 선언자에는 다음과 같은 추가 문자가 포함될 수 있습니다.

  • * - 포인터; 이름 앞에;
  • *const - 상수 포인터; 이름 앞에;
  • &-링크; 이름 앞에;
  • - 배열; 이름 뒤에;
  • () - 기능; 이름 뒤에.

이니셜라이저를 사용하면 변수 선언 직후에 변수 값을 정의할 수 있습니다. 이니셜라이저는 동등 리터럴(=)로 시작한 다음 변수 값 설정을 진행합니다. 일반적으로 C++의 등호는 할당 작업을 나타냅니다. 이를 통해 변수 값을 설정하고 변경할 수 있습니다. 종류별로 다를 수 있습니다.

지정자는 유형 이외의 추가 속성을 지정합니다. 예제에 제공된 const 지정자를 사용하면 변수 값에 대한 후속 변경을 금지할 수 있습니다. 이러한 불변 변수를 상수 또는 상수라고 합니다.

초기화 없이 상수를 선언하는 것은 논리적인 이유로 작동하지 않습니다.

상수 EMPTY_CONST; // 오류, 상수 변수가 초기화되지 않았습니다. const int EXAMPLE = 2; // 값이 2인 상수 EXAMPLE = 3; // 오류입니다. 상수 변수에 값을 할당하려고 했습니다.

상수의 이름을 지정할 때는 대문자만 사용하고 단어는 밑줄로 구분하는 것이 일반적입니다.

C++의 기본 데이터 유형

각 유형을 검토하는 동안 독자는 데이터 유형의 정의를 잊어서는 안됩니다.

1. 정수형(char, short(int), int, long(int), long long)

이름에서 값 집합이 정수로 구성된다는 것을 쉽게 이해할 수 있습니다. 또한 나열된 각 유형의 값 세트는 부호가 있거나 부호가 없을 수 있습니다. 세트에 포함된 요소 수는 해당 유형의 값을 저장하는 데 사용되는 메모리 크기에 따라 다릅니다. 예를 들어, char 유형의 변수에 대해 1바이트의 메모리가 할당되므로 총 요소는 다음과 같습니다.

  • 2 8N = 2 8 * 1 = 256, 여기서 N은 값을 저장할 메모리 크기(바이트)입니다.

이 경우 사용 가능한 정수의 범위는 다음과 같습니다.

  • - 서명되지 않은 문자의 경우
  • [-128..127] - 서명된 문자의 경우

기본적으로 정수 변수는 부호 있는 것으로 간주됩니다. 변수가 부호가 없어야 함을 코드에서 나타내기 위해 부호 있는 속성이 왼쪽의 기본 유형에 추가됩니다. 서명되지 않음:

부호 없는 긴 값; // 정수(long) 부호 없는 유형을 지정합니다.

나열된 유형은 저장에 필요한 메모리 크기만 다릅니다. C++ 언어는 기계에 상당히 의존적이므로 언어 ​​표준은 다음 조건만 보장합니다.

  • 1 = 문자 크기 ≤ 짧은 크기 ≤ int 크기 ≤ 긴 크기.

일반적으로 유형의 크기는 char - 1, short - 2, int - 4, long -8, long long - 8바이트입니다.

+, -, *, /, %와 같은 정수 유형의 값으로 산술 연산을 수행할 수 있습니다. 비교 연산: ==, !=,<=, <, >, >=; 비트 연산: &, |, xor,<<, >>.
덧셈, 곱셈, 뺄셈, 비교 등 대부분의 연산은 이해하기 쉽습니다. 때로는 산술 연산을 수행한 후 결과가 값 범위를 벗어날 수 있습니다. 이 경우 프로그램에서 오류가 발생합니다.
정수 나누기(/)는 한 정수를 다른 정수로 나눈 정수 부분을 찾습니다. 예를 들어:

  • 6 / 4 = 1;
  • 2 / 5 = 0;
  • 8 / 2 = 4.

백분율 기호(%)는 두 정수를 나눈 나머지를 결정하는 연산을 나타냅니다.

  • 6 % 4 = 2;
  • 10 % 3 = 1.

연산을 이해하기가 더 어려운 것은 비트 연산입니다: & (AND), | (OR), xor(배타적 OR),<< (побитовый сдвиг влево), >>(비트 오른쪽 시프트).

비트 연산 AND, OR 및 XOR은 각 정보 비트에 해당 논리 연산을 적용합니다.

  • 1 10 = 01 2
  • 3 10 = 11 2
  • 1 10 & 3 10 = 01 2 & 11 2 = 01 2
  • 1 10 | 3 10 = 01 2 | 11 2 = 11 2
  • 1 10 xor 3 10 = 01 2 xor 11 2 = 10 2

이미지 처리에서는 빨간색, 파란색, 녹색의 3개 채널이 색상에 사용되며 투명도도 int 변수에 저장됩니다. 각 채널에는 0에서 255까지의 값 범위가 있습니다. 16진수 시스템에서 특정 값은 다음과 같이 기록됩니다. 0x180013FF; 값 18 16은 빨간색 채널, 00 16 - 파란색, 13 16 - 녹색, FF - 알파 채널(투명도)에 해당합니다. 이러한 정수에서 특정 채널을 선택하려면 소위 채널이 사용됩니다. 여기서 관심 있는 위치는 F 16 또는 1 2입니다. 즉, 파란색 채널의 값을 강조하려면 마스크를 사용해야 합니다. 비트 AND:

Int blue_channel = 0x180013FF & 0x00FF0000;

그 후 결과 값은 필요한 비트 수만큼 오른쪽으로 이동됩니다.

비트 시프트는 연산의 오른쪽에 지정된 만큼의 이진수만큼 숫자를 왼쪽이나 오른쪽으로 이동합니다. 예를 들어 char 유형의 숫자 ​​39는 00100111과 같이 이진수로 작성됩니다.

Char 바이너리예제 = 39; // 00100111 char 결과 = 바이너리예제<< 2; // сдвигаем 2 бита влево, результат: 10011100

변수가 부호 없는 유형인 경우 결과는 숫자 156이 되고 부호 있는 유형의 경우 결과는 -100과 같습니다. 부호 있는 정수 유형의 경우 비트 표현의 최상위 비트 단위는 숫자가 음수라는 표시입니다. 이 경우 모두 1로 구성된 이진 형식의 값은 -1에 해당합니다. 1이 가장 중요한 숫자에만 있고 나머지 숫자는 0인 경우 해당 숫자는 특정 유형에 대한 최소값을 갖습니다. char의 경우 -128입니다.

2. 부동소수점형(float, double(float))

부동 소수점 값 집합은 실수의 하위 집합이지만 모든 실수가 이진수로 표현 가능한 것은 아니므로 때로는 어리석은 오류가 발생합니다.

부동 값 = 0.2; 값 == 0.2; // 오류, 여기 값은 0.2와 같지 않습니다.

부동 소수점 변수로 작업할 때 프로그래머는 동등 또는 불평등 테스트를 사용해서는 안 됩니다. 대신 특정 간격 내에 속하는 테스트가 일반적으로 사용됩니다.

값 - 0.2< 1e-6; // ok, подбирать интервал тоже нужно осторожно

비교 연산 외에도 부동 소수점 유형은 실수를 사용한 수학적 연산에 완전히 대응하는 4개의 산술 연산을 지원합니다.

3. 부울(논리) 유형(bool)

true(true)와 false(false)의 두 가지 값으로만 ​​구성됩니다. 이 유형의 변수를 사용하려면 논리 연산이 사용됩니다: ! (NOT), ==(동등), !=(비동등), &&(논리적 AND), || (논리적 OR). 각 연산의 결과는 해당 진리표에서 확인할 수 있습니다. 예를 들어:

XY XOR0 0 0 0 1 1 1 0 1 1 1 0

4. 문자형(char, wchar_t)

char 유형은 정수 유형(보통 이 유형을 바이트라고 함)일 뿐만 아니라 테이블의 문자 번호를 ASCII 문자로 저장하는 문자 유형이기도 합니다. 예를 들어 코드 0x41은 문자 'A'에 해당하고 0x71 - 't'에 해당합니다.

때때로 ASCII 테이블에 고정되지 않은 문자를 사용해야 하므로 저장에 1바이트 이상이 필요합니다. 이를 위한 와이드 문자(wchar_t)가 있습니다.

5.1. 배열

배열을 사용하면 동일한 유형의 순차적 요소 집합을 저장할 수 있습니다. 배열은 연속된 블록으로 메모리에 저장되므로 크기를 지정하지 않으면 배열을 선언할 수 없습니다. 배열을 선언하려면 크기를 나타내는 변수 이름 뒤에 대괄호()를 씁니다. 예를 들어:

Int myArray; // 정수 유형의 5개 요소 배열

배열을 초기화하려면 값이 중괄호 안에 나열됩니다. 변수 선언 시에만 이 방법으로 초기화할 수 있습니다. 그런데 이 경우 배열의 크기를 지정할 필요가 없습니다.

내부 배당률 = (1, 3, 7, 9, 11); // 배열은 5개의 값으로 초기화됩니다.

배열(배열 요소)의 특정 값에 액세스하려면 요소 번호(번호는 0부터 시작)를 나타내는 인덱스 액세스 연산()을 사용합니다. 예를 들어:

승산; // 배열의 첫 번째 요소에 액세스합니다. 1 확률 값을 반환합니다. // 세 번째 요소에 액세스합니다. 7 확률 = 13 값을 반환합니다. // 배열 배당률의 5번째 요소에 새 값을 할당합니다. // 접근 오류

5.3. 문자열

문자열을 작성하기 위해 프로그래머는 문자열이 일련의 문자(배열)라는 개념을 사용합니다. 줄 끝을 식별하려면 특수 줄 끝 문자 '\0'을 사용합니다. 백슬래시와 식별 문자로 구성된 이러한 특수 문자를 제어 또는 이스케이프 문자라고 합니다. 예를 들어 '\n' - 새 줄의 시작, '\t' - 표 형식도 있습니다. 문자열에 백슬래시를 쓰려면 이스케이프가 사용됩니다. 기호 자체 앞에 또 다른 슬래시가 배치됩니다: '\'. 이스케이프는 따옴표를 쓰는 데에도 사용됩니다.

문자열 변수를 만들어 보겠습니다.

Char textExample = ('T', 'e', ​​​​'s', 't', '\0'); // 문자열 "Test"가 기록됩니다.

문자열 초기화에 대한 단순화된 표기법이 있습니다.

Char textExample = "테스트"; // 마지막 문자는 기록되지 않지만 크기는 여전히 5입니다.

자세히 설명하지 않고 여기에 또 다른 유용한 데이터 유형인 문자열이 있습니다. 문자열
예를 들어 다음 유형을 추가할 수 있습니다.

String hello = "안녕하세요,"; 문자열 이름 = "맥스!"; 문자열 hello_name = 안녕하세요 + 이름; // "Hello, Max!" 문자열을 가져옵니다.

6. 링크

정수 a = 2; // 변수 "a"는 값 2를 가리킵니다. int &b = a; // 변수 "b"는 "a"와 같은 위치를 가리킵니다. b = 4; // b 값을 변경하면 프로그래머는 a 값을 변경합니다. 이제 a = 4 int &c = 4; // 오류입니다. 왜냐하면 이 작업을 수행할 수 없기 때문입니다. 참조에 값을 할당할 수 없습니다.

7. 색인

이 데이터 유형을 이해하려면 이 유형의 많은 값이 데이터가 시작되는 메모리 셀의 주소라는 점을 기억해야 합니다. 포인터는 더하기(+), 빼기(-) 및 역참조(*) 작업도 지원합니다.

주소 0x0은 포인터가 비어 있음을 의미합니다. 어떤 데이터도 가리키지 않습니다. 이 주소에는 자체 리터럴(NULL)이 있습니다.

Int *nullPtr = NULL; // 널 포인터

정수 또는 다른 주소로 주소를 더하거나 빼면 다음이 가능합니다.
프로그램에 사용 가능한 메모리를 이동합니다.

포인터에 저장된 주소부터 시작하여 데이터를 검색하는 작업을 역참조(*)라고 합니다. 프로그램은 필요한 수의 메모리 셀을 읽고 메모리에 저장된 값을 반환합니다.

Int valueInMemory = 2; // 정수형 변수 설정 int *somePtr = // 변수의 주소를 복사합니다. 여기서 & - 변수 somePtr의 주소를 반환합니다. // 메모리 셀의 주소(예: 0x2F) *somePtr; // 값은 4개 셀(0x2F, 0x30, 0x31 및 0x32)에 저장됩니다.

복사 작업과 구문상 동일한 할당 작업은 포인터에 사용할 수 없습니다. 즉, 다른 포인터의 주소나 변수의 주소를 복사할 수는 있지만 주소의 값을 직접 결정할 수는 없습니다.

포인터 자체는 다른 타입의 변수 값과 마찬가지로 메모리에 저장되며 4바이트를 차지하므로 포인터에 대한 포인터를 생성할 수 있다.

8. 환승

열거형은 프로그래머가 정의한 유일한 기본 유형입니다. 전반적으로 열거형은 명명된 정수 상수의 순서가 지정된 집합이며, 열거형의 이름은 기본 유형입니다.

열거형 색상(RED, BLUE, GREEN);

기본적으로 RED = 0, BLUE = 1, GREEN = 2입니다. 따라서 값을 서로 비교할 수 있습니다. 빨간색< BLUE < GREEN. Программист при объявлении перечисления может самостоятельно задать значения каждой из констант:

열거형 액세스(READ = 1, WRITE = 2, EXEC = 4)

값이 2의 거듭제곱인 열거형을 사용하는 것이 편리한 경우가 많습니다. 이진 표현에서 2의 거듭제곱인 숫자는 1과 0으로 구성됩니다. 예를 들어:

8 10 = 00001000 2

이 숫자를 더한 결과는 항상 어떤 숫자가 추가되었는지 명확하게 나타냅니다.

37 10 = 00100101 2 = 00000001 2 + 00000100 2 + 00100000 2 = 1 10 + 4 10 + 32 10

무효의

구문론적으로 void 유형은 기본 유형에 속하지만 더 복잡한 유형의 일부로만 사용될 수 있습니다. void 유형의 객체가 없습니다. 일반적으로 이 유형은 함수에 반환 값이 없음을 나타내거나 정의되지 않은 유형의 객체에 대한 포인터의 기본 유형으로 사용됩니다.

공허한 물체; // 오류, void 유형의 객체가 없습니다. void // 오류, void에 대한 참조가 없습니다. void *ptr; // 좋습니다. 알 수 없는 유형에 대한 포인터를 저장합니다.

종종 우리는 함수가 어떤 값도 반환하지 않는다는 것을 나타내기 위해 특별히 void를 사용합니다. void 유형 포인터는 프로그래머가 메모리 무결성과 올바른 유형 캐스팅에 대해 전적인 책임을 질 때 사용됩니다.

깁스

한 유형의 변수 값을 다른 유형으로 변환해야 하는 경우가 종종 있습니다. 원래 유형의 값 집합이 더 큰 유형의 하위 집합인 경우(예: int는 long의 하위 집합이고 long은 double임) 컴파일러는 암시적으로( 암묵적으로) 값 유형을 변경합니다.

정수 = 2; 부동 부동 = 정수; // 부동 = 2.0

정보가 손실된 상태에서 역방향 캐스팅이 수행되므로 부동 소수점 숫자의 정수 부분만 남고 소수 부분은 손실됩니다.

명시적인 유형 변환 가능성이 있습니다. 이를 위해 변수 왼쪽이나 원래 유형의 값에 캐스트가 수행될 유형을 괄호 안에 작성하십시오.

정수 값 = (int) 2.5;

단항 및 이항 연산

이전에 수행한 연산을 이진 연산이라고 합니다. 연산 기호의 왼쪽과 오른쪽에는 값 또는 변수(예: 2 + 3)가 있습니다. 프로그래밍 언어에서는 이진 연산 외에도 변수에 적용되는 단항 연산도 사용합니다. . 변수의 왼쪽이나 오른쪽에 위치할 수 있습니다. 이러한 작업은 이전에 여러 번 발생했습니다. 역참조 작업(*)과 변수의 주소를 가져오는 작업(&)은 단항입니다. 연산자 “++”와 “—”는 정수 변수의 값을 각각 1씩 증가 및 감소시키며 변수의 왼쪽이나 오른쪽에 쓸 수 있습니다.

C++에서는 표현식의 왼쪽과 오른쪽에 동일한 변수가 포함된 경우 이진 연산에 대한 약칭 표기법도 사용합니다. 변수 값에 대해 일부 작업이 수행되고 작업 결과가 동일한 변수에 저장됩니다.

A += 2; // a = a + 2와 동일; b /= 5; // b = b / 5와 동일; c &= 3; // c와 동일 = c & 3;