C++ 변수 및 유형: Int, Char, Float, Double, 문자열 및 부울

C++의 변수

C++ 변수는 명명된 저장 기능을 제공합니다. 이를 통해 프로그래머는 필요에 따라 데이터를 조작할 수 있습니다. C++에서는 모든 변수에 유형이 있습니다. 변수 유형은 변수 메모리 맵의 크기와 레이아웃, 해당 메모리 내에 저장할 수 있는 값의 범위, 여기에 적용될 수 있는 작업 집합을 결정하는 데 도움이 됩니다.

C++의 기본 변수 유형

C++ 변수의 기본 유형은 다음과 같습니다.

정수:

정수는 분수나 지수 부분이 없는 숫자 리터럴(숫자와 연결됨)입니다. 예. 120, -90 등

Double:

그것은 double-정밀 부동 소수점 값. 예: 11.22, 2.345

숯:

문자 리터럴은 작은따옴표 안에 단일 문자를 묶어서 생성됩니다. 예: 'a', 'm', 'F', 'P', '}' 등.

흙손:

부동 소수점 리터럴은 분수 형식이나 지수 형식을 갖는 숫자 리터럴입니다. 예: 1.3, 2.6

문자열 리터럴 :

문자열 리터럴은 다음으로 묶인 일련의 문자입니다. double-따옴표. 예: “잘 지내세요?”

부울:

부울 값 true 또는 false를 보유합니다.

C++에서 변수 선언 규칙

다음은 변수 이름 지정에 대한 몇 가지 일반적인 규칙입니다.

  • C++ 변수 이름에는 알파벳, 숫자, 밑줄만 사용할 수 있습니다.
  • C++ 변수 이름은 숫자로 시작할 수 없습니다.
  • 변수 이름은 대문자로 시작할 수 없습니다.
  • C++에서 사용하는 변수 이름은 키워드가 될 수 없습니다. 예를 들어 int는 정수를 나타내는 데 사용되는 키워드입니다.
  • C++ 변수 이름은 밑줄로 시작할 수 있습니다. 그러나 이는 좋은 습관으로 간주되지 않습니다.

C++ 변수 데이터 유형

C++는 전체 기본 유형 세트를 정의합니다.

최대 XNUMXW 출력을 제공하는 무효화 type에는 연관된 값이 없으며 몇 가지 상황에서만 사용할 수 있습니다. 값을 반환하지 않는 함수의 반환 유형으로 가장 일반적입니다.

최대 XNUMXW 출력을 제공하는 산술 유형 문자, 정수, 부울 값 및 부동 소수점 숫자를 포함합니다. 산술형을 2가지로 더 분류하면

  1. 부동 소수점 유형. float(또는 부동 유형)은 32진수를 나타냅니다. IEEE 표준은 최소 유효 자릿수를 지정합니다. 대부분의 컴파일러는 일반적으로 지정된 최소값보다 더 높은 정밀도를 제공합니다. 일반적으로 부동 소수점은 XNUMX비트로 표현됩니다. double64비트이고 길다. double96 또는 128비트입니다.
  2. 일체형 (문자, 정수 및 부울 유형 포함) 그만큼 부울 type에는 True 또는 False라는 두 가지 유형의 값만 있습니다. 여러 가지가 있습니다 이륜 전차 유형은 대부분 국제화를 지원하기 위해 존재합니다. 가장 기본적인 문자 유형은 char입니다. char은 단일 바이트를 의미하는 단일 머신 바이트와 동일한 크기입니다.

최대 XNUMXW 출력을 제공하는 일체형 서명되거나 서명되지 않을 수 있습니다.

서명된 유형: 음수 또는 양수(8 포함)를 나타냅니다. 부호 있는 형식에서는 범위를 +ve와 -ve 값으로 균등하게 나누어야 합니다. 따라서 127비트 부호 있는 문자는 -127부터 XNUMX까지의 값을 보유합니다.

부호 없는 유형: unsigned 유형에서 모든 값은 >= 0입니다. 8비트 unsigned char에는 0부터 255(둘 다 포함)까지 포함될 수 있습니다.

C++ 변수 데이터 유형

변수 이름 또는 식별자

식별자는 문자, 숫자, 밑줄 문자 또는 이들의 조합으로 구성될 수 있습니다. 이름 길이에는 제한이 없습니다.

식별자는 다음과 같아야 합니다.

  • 문자나 밑줄('_')로 시작하세요.
  • 대소문자를 구분합니다. 대문자와 소문자는 구별됩니다.

// 네 가지 다른 int 변수를 정의합니다.

int guru99, gurU99, GuRu99, GURU99;

C++ 언어에는 사용을 위해 일부 이름이 예약되어 있습니다.

변수 이름 또는 식별자

변수 이름을 지정하는 데 허용되는 많은 규칙이 있습니다. 다양한 프로그래밍 언어. 폴로wing 이러한 규칙은 프로그램의 가독성을 향상시킬 수 있습니다.

  • 식별자는 최소한 그 의미를 어느 정도 표시해야 합니다.
  • 변수 이름은 일반적으로 소문자입니다(Guru99 또는 GURU99가 아닌 guru99).
  • 우리가 정의하는 클래스는 일반적으로 대문자로 시작합니다.
  • 여러 단어가 포함된 식별자는 모든 단어를 시각적으로 구별해야 합니다. 예를 들어, guru99website가 아닌 guru99_website입니다.

C++ 변수 선언 및 정의

변수를 선언하면 해당 변수가 정의된 범위 내에서 프로그램에 이름이 알려집니다. 예:

int a=5;
int b;
char c='A'; 
int a,b;
a=b=1000;
List initialization
int a(5);
int b{5};

C++의 Const 한정자

사용자로부터 가져올 입력 수를 나타내는 변수 buffsize가 있다고 가정합니다. 여기서는 프로그램 전체에서 buffsize 값을 변경하고 싶지 않습니다. 우리는 값이 변경되어서는 안 되는 변수를 정의하고 싶습니다.

이 경우 const 키워드를 사용하십시오.

const int bufSize = 512;    // input buffer size

이는 bufSize를 상수로 정의합니다. bufSize를 할당하거나 변경하려고 하면 오류가 발생합니다.

여기서는 const 객체를 생성한 후에는 그 값을 변경할 수 없으며 반드시 선언하고 초기화해야 합니다. 다른wise 컴파일러에서 오류가 발생합니다.

const int i = get_size();  // ok: initialized at run time
const int j = 42;          // ok: initialized at compile time
const int k;               // error: k is uninitialized const
int i = 42;
const int ci = i;    	   // ok: the value in i is copied into ci 

C++의 변수 범위

범위는 변수가 의미를 갖는 프로그램의 범위입니다. 대부분 동일한 이름은 다른 범위 내의 다른 엔터티를 참조하는 데 사용될 수 있습니다. 변수는 선언된 지점부터 선언이 나타나는 범위의 끝까지 표시됩니다.

#include <iostream>	
int main()	
{	
    int sum = 0;	
    // sum values from 1 through 10 inclusive	
    for (int val = 1; val <= 10; ++val)	
        sum += val;  // equivalent to sum = sum + val	
    cout << "Sum of 1 to 10 inclusive is "<< sum <<endl;	
    return 0;	
}	 

이 프로그램은 3개의 이름을 정의합니다. viz, 메인, 합계 및 발. 네임스페이스 이름 std와 해당 네임스페이스의 다른 두 이름인 cout 및 endl을 사용합니다.

  • 함수 이름 "main"은 중괄호 외부에 정의됩니다. 함수 외부에 정의된 대부분의 다른 이름과 마찬가지로 함수 이름 main은 전역 범위를 갖습니다. 이는 일단 선언되면 해당 위치에 있는 이름을 의미합니다. 글로벌 범위 프로그램 전반에 걸쳐 접근 가능합니다.
  • 변수 sum은 주 함수의 본문인 블록 범위 내에서 정의됩니다. 선언 지점과 나머지 기본 함수 본문 전체에서 액세스할 수 있습니다. 그러나 그 밖에는 없습니다. 이는 변수 합계가 블록 범위.
  • val 변수는 “for 문” 범위에서 정의됩니다. 해당 명령문에서는 쉽게 사용할 수 있지만 주 함수의 다른 곳에서는 사용할 수 없습니다. 그것은 가지고있다 로컬 범위.

중첩된 범위

범위에는 다른 범위가 포함될 수 있습니다. 포함된(또는 중첩된) 범위를 내부 범위라고 합니다. 포함 범위는 외부 범위입니다.

#include <iostream>	
using namespace std;	
// Program for illustration purposes only: It is bad style for a function	
// to use a global variable and also define a local variable with the same name	
int reused = 42;  // reused has global scope	
int main()	
{	
    int unique = 0; // unique has block scope	
    // output #1: uses global reused; prints 42 0	
    cout << reused << " " << unique << endl;	
    int reused = 0; // new, local object named reused hides global reused	
    // output #2: uses local reused; prints 0 0	
    cout << reused << " " << unique << endl;	
    // output #3: explicitly requests the global reused; prints 42 0	
    cout << ::reused << " " << unique << endl;	
    return 0;	
}	 

출력 #1 재사용이라는 로컬 정의 앞에 나타납니다. 따라서 이 출력은

문은 전역 범위에 정의된 재사용 이름을 사용하는 문입니다. 이 명령문은 다음을 출력합니다.

42 0

출력 #2 재사용의 로컬 정의 이후에 발생합니다. 이제 범위에 포함됩니다. 따라서 이 두 번째 출력 문은 전역 개체가 아닌 재사용이라는 로컬 개체를 사용하여 출력합니다.

0 0

출력 #3 다음을 사용하여 기본 범위 지정 규칙을 재정의합니다. 범위 연산자. 전역 범위에는 이름이 없습니다. 따라서 범위 연산자(::)의 왼쪽이 비어 있는 경우입니다. 이는 전역 범위의 오른쪽에 있는 이름을 가져오는 요청으로 해석됩니다. 따라서 표현식은 전역 재사용 및 출력을 사용합니다.

42 0

변수 유형 변환

한 유형의 변수를 다른 유형으로 변환할 수 있습니다. 이를 "유형 변환"이라고 합니다. 다양한 C++ 변수 유형을 변환하는 규칙을 살펴보겠습니다.

bool 변수에 bool이 아닌 값을 할당하면 값이 0이면 false가 되고 그렇지 않으면 true가 됩니다.wise.

bool b = 42;            // b is true

다른 산술 유형 중 하나에 bool을 할당하면 bool이 true이면 1이 생성되고 bool이 false이면 0이 생성됩니다.

bool b = true;
int i = b;              // i has value 1

int 유형의 변수에 부동 소수점 값을 할당하면 잘린 값이 생성됩니다. 저장되는 값은 소수점 이하 부분입니다.

int i = 3.14;               // i has value 3

float 유형의 변수에 int 값을 할당하면 소수 부분이 XNUMX이 됩니다. 정수에 부동 변수가 수용할 수 있는 것보다 많은 비트가 있으면 일반적으로 정밀도가 손실됩니다.

Int i=3;
double pi = i;          // pi has value 3.0

부호 없는 유형의 변수에 범위를 벗어난 값을 할당하려고 하면 결과는 값의 나머지 부분입니다. %(모듈로)

예를 들어, 8비트 unsigned char 유형은 0부터 255까지의 값을 보유할 수 있습니다. 이 범위 밖의 값을 할당하면 컴파일러는 해당 값의 나머지 부분을 모듈로 256으로 할당하게 됩니다. 따라서 위의 논리에 따라 1비트 부호 없는 문자에 -8을 할당하면 해당 개체에 값 255가 제공됩니다.

unsigned char c = -1;   // assuming 8-bit chars, c has value 255

부호 있는 유형의 객체에 범위를 벗어난 값을 할당하려고 하면 결과를 예측할 수 없습니다. 정의되지 않았습니다. 프로그램이 외부에서 작동하는 것처럼 보일 수도 있고, 충돌이 발생하거나, 쓰레기 값을 생성할 수도 있습니다.

signed char c2 = 256;   // assuming 8-bit chars, the value of c2 is undefined

컴파일러는 다른 유형의 값이 예상되는 한 유형의 값을 사용할 때 이와 동일한 유형의 변환을 적용합니다.

int i = 42;
if (i) // condition will evaluate as true
i = 0; 

이 값이 0이면 조건은 false입니다. 다른 모든(0이 아닌) 값은 true를 생성합니다. 같은 개념으로, 산술 표현식에서 부울을 사용하면 그 값은 항상 1이나 XNUMX로 변환됩니다. 결과적으로 산술 표현식에서 부울을 사용하는 것은 일반적으로 거의 틀림없이 올바르지 않습니다.

주의: 서명된 유형과 서명되지 않은 유형을 혼합하지 마십시오

부호 있는 값과 부호 없는 값을 혼합하는 식은 부호 있는 값이 음수일 때 예상치 못한 잘못된 결과를 낳을 수 있습니다. 위에서 설명한 대로 부호 있는 값은 자동으로 부호 없는 값으로 변환됩니다.

예를 들어, 다음과 같은 산술 표현식에서

x* y

x가 -1이고 y가 1이고 x와 y가 모두 int이면 값은 예상대로 -1입니다.

x가 int이고 y가 unsigned인 경우 이 표현식의 값은 정수가 컴파일 시스템에 있는 비트 수에 따라 달라집니다. 우리 컴퓨터에서 이 표현식은 4294967295를 생성합니다.

변수 등록

레지스터 변수는 메모리 변수에 비해 액세스 속도가 더 빠릅니다. 따라서 C++ 프로그램에서 자주 사용되는 변수는 다음을 사용하여 레지스터에 넣을 수 있습니다. 회원가입 예어. Register 키워드는 컴파일러에게 주어진 변수를 레지스터에 저장하라고 지시합니다. 레지스터에 넣을지 말지는 컴파일러의 선택입니다. 일반적으로 컴파일러 자체는 일부 변수를 레지스터에 넣는 것을 포함하여 다양한 최적화를 수행합니다. C++ 프로그램의 레지스터 변수 수에는 제한이 없습니다. 그러나 컴파일러는 변수를 레지스터에 저장하지 않을 수 있습니다. 이는 레지스터 메모리가 매우 제한되어 있고 OS에서 가장 일반적으로 사용되기 때문입니다.

정의하려면:

register int i;

코멘트

주석은 컴파일러가 무시하는 코드 부분입니다. 이를 통해 프로그래머는 소스 코드/프로그램의 관련 영역에 메모를 작성할 수 있습니다. 주석은 블록 형식이나 한 줄로 제공됩니다. 프로그램 코멘트는 설명문입니다. 이는 누구나 소스 코드를 읽는 데 도움이 되는 C++ 코드에 포함될 수 있습니다. 모든 프로그래밍 언어는 특정 형태의 주석을 허용합니다. C++에서는 한 줄 주석과 여러 줄 주석을 모두 지원합니다.

  • 한 줄 주석 //로 시작하고 줄 끝까지 계속되는 것입니다. 주석 줄의 마지막 문자가 \이면 주석은 다음 줄에서 계속됩니다.
  • 여러 줄 주석 /*로 시작하고 */로 끝나는 것입니다.
/* This is a comment */
/* C++ comments can  also 
* span multiple lines 
*/

이스케이프 시퀀스

백스페이스 및 제어 문자와 같은 일부 문자에는 표시되는 이미지가 없습니다. 이러한 문자를 인쇄할 수 없는 문자라고 합니다. 기타 문자(단일 및 double 따옴표, 물음표 및 백슬래시)는 많은 프로그래밍 언어에서 특별한 의미를 갖습니다.

우리 프로그램은 이러한 문자를 직접 사용할 수 없습니다. 대신에 이스케이프 시퀀스를 사용하여 이러한 문자를 나타낼 수 있습니다. 이스케이프 시퀀스는 백슬래시로 시작됩니다.

최대 XNUMXW 출력을 제공하는 C ++ 프로그래밍 언어 여러 이스케이프 시퀀스를 정의합니다.

그것은 무엇을합니까? 캐릭터
뉴 라인 \n
수직 탭 \v
백 슬래시 \\
캐리지 리턴 \r
수평 탭 \t
백 스페이스 키 \b
물음표 \?
폼피드 \f
알림(벨) \a
Double 견적을 원하시면, 오늘 Kevin Lee Company 에 연락주세요. \"
작은따옴표 \ '

마치 단일 문자인 것처럼 이스케이프 시퀀스를 사용합니다.

cout << '\n';        // prints a newline
cout << "\tguru99!\n";   // prints a tab followed by "guru99!" and a newline 

일반화된 이스케이프 시퀀스 \x와 그 뒤에 하나 이상의 1진수 숫자를 작성할 수도 있습니다. 또는 \ 다음에 XNUMX, XNUMX, XNUMX개의 XNUMX진수를 사용합니다. 일반화된 이스케이프 시퀀스는 문자의 숫자 값을 나타냅니다. 몇 가지 예(Latin-XNUMX 문자 집합을 가정):

\7 (bell)    \12 (newline)      \40 (blank)
\0 (null)    \115 ('M')         \x4d ('M') 

다른 문자를 사용하는 것처럼 미리 정의된 이스케이프 시퀀스를 사용할 수 있습니다.

cout << "Hi \x4dO\115!\n";  // prints Hi MOM! followed by a newline
cout << '\115' << '\n';     // prints M followed by a newline 

요약

  • C++ 변수는 명명된 저장 기능을 제공합니다.
  • C++ 변수 유형: int, double, 이륜 전차, float, string, bool 등
  • 포함된(또는 중첩된) 범위를 내부 범위라고 하며 포함하는 범위를 외부 범위라고 합니다.
  • 한 유형의 변수를 다른 유형으로 변환할 수 있습니다. 이를 "유형 변환"이라고 합니다.
  • 레지스터 변수는 메모리 변수에 비해 액세스 속도가 더 빠릅니다.
  • 주석은 컴파일러가 무시하는 코드 부분입니다.
  • 백스페이스 및 제어 문자와 같은 일부 문자에는 표시되는 이미지가 없습니다.