산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C++ 변수 타입 완벽 이해: 메모리, 범위, 연산

변수는 프로그램이 조작할 수 있는 명명된 저장소를 제공합니다. C++의 각 변수는 특정 타입을 가지며, 이는 변수 메모리의 크기와 레이아웃, 해당 메모리에 저장할 수 있는 값의 범위, 변수에 적용할 수 있는 연산 집합을 결정합니다.

변수 이름은 문자, 숫자, 밑줄 문자로 구성할 수 있으며, 문자나 밑줄로 시작해야 합니다. C++은 대소문자를 구분하므로 대문자와 소문자는 서로 다릅니다.

지난 장에서 설명한 C++의 기본 변수 타입은 다음과 같습니다.

번호타입 및 설명
1

bool

true 또는 false 값을 저장합니다.

2

char

일반적으로 단일 옥텟(1바이트). 정수 타입입니다.

3

int

기계에서 가장 자연스러운 크기의 정수입니다.

4

float

단정밀도 부동소수점 값입니다.

5

double

배정밀도 부동소수점 값입니다.

6

void

타입의 부재를 나타냅니다.

7

wchar_t

와이드 문자 타입입니다.

C++은 이후 장에서 다룰 열거형, 포인터, 배열, 참조, 데이터 구조, 클래스 등 다양한 다른 변수 타입도 정의할 수 있게 합니다.

다음 섹션에서는 다양한 타입의 변수를 정의, 선언, 사용하는 방법을 다룹니다.

C++에서 변수 정의

변수 정의는 컴파일러에게 변수를 위해 어디서 얼마나 많은 저장소를 생성할지 알려줍니다. 변수 정의는 데이터 타입을 지정하고, 해당 타입의 변수 목록을 다음과 같이 포함합니다.

type variable_list;

여기서 type은 char, w_char, int, float, double, bool 또는 사용자 정의 객체 등 유효한 C++ 데이터 타입이어야 하며, variable_list는 쉼표로 구분된 하나 이상의 식별자 이름으로 구성될 수 있습니다. 유효한 선언 예:

int i, j, k;
char c, ch;
float f, salary;
double d;

int i, j, k; 줄은 변수 i, j, k를 선언하고 정의하며, 컴파일러에게 int 타입의 i, j, k 변수를 생성하도록 지시합니다.

변수는 선언 시 초기화(초기값 할당)할 수 있습니다. 초기화는 등호와 상수 표현식으로 구성됩니다.

type variable_name = value;

예시:

extern int d = 3, f = 5; // d와 f의 선언
int d = 3, f = 5; // d와 f의 정의 및 초기화
byte z = 22; // z의 정의 및 초기화
char x = 'x'; // 변수 x의 값은 'x'

초기화 없이 정의된 경우: 정적 저장 기간을 가진 변수는 암시적으로 NULL(모든 바이트가 0)로 초기화되며, 그 외 변수의 초기값은 정의되지 않습니다.

C++에서 변수 선언

변수 선언은 주어진 타입과 이름의 변수가 존재함을 컴파일러에게 보증해, 컴파일러가 변수에 대한 완전한 세부 사항 없이도 추가 컴파일을 진행할 수 있게 합니다. 변수 선언은 컴파일 시에만 의미가 있으며, 프로그램 링크 시에는 실제 변수 정의가 필요합니다.

여러 파일을 사용하고 변수를 그중 하나에 정의해 링크 시에 사용할 수 있게 할 때 변수 선언이 유용합니다. 변수를 어디서든 선언하려면 extern 키워드를 사용합니다. C++ 프로그램에서 변수를 여러 번 선언할 수 있지만, 정의는 파일, 함수, 코드 블록에서 단 한 번만 할 수 있습니다.

예제

맨 위에서 변수가 선언되었지만 메인 함수 내부에서 정의된 예제를 시도해 보세요.

Live Demo
#include <iostream>
using namespace std;
// 변수 선언:
extern int a, b;
extern int c;
extern float f;
int main () {
    // 변수 정의:
    int a, b;
    int c;
    float f;
    // 실제 초기화
    a = 10;
    b = 20;
    c = a + b;
    cout << c << endl;
    f = 70.0/3.0;
    cout << f << endl;
    return 0;
}

위 코드를 컴파일하고 실행하면 다음 결과가 나옵니다.

30
23.3333

같은 개념이 함수 선언에도 적용됩니다. 함수 이름을 선언 시에 제공하고 실제 정의는 다른 곳에서 줄 수 있습니다. 예:

// 함수 선언
int func();
int main() {
    // 함수 호출
    int i = func();
}
// 함수 정의
int func() {
    return 0;
}

Lvalue와 Rvalue

C++에는 두 종류의 표현식이 있습니다.

변수는 lvalue이므로 대입 연산의 좌변에 나타날 수 있습니다. 숫자 리터럴은 rvalue이므로 대입될 수 없으며 좌변에 나타날 수 없습니다. 다음은 유효한 문장입니다.

int g = 20;

하지만 다음은 유효하지 않은 문장이며 컴파일 타임 에러를 발생시킵니다.

10 = 20;

C 언어

  1. C++ 연산자 마스터하기: 유형별 완벽 가이드와 실전 예제
  2. Java 기본 데이터 타입: 8가지 타입 완벽 가이드와 예제
  3. C++ 변수와 데이터 타입: int, double, char, string, bool 전문가 가이드
  4. C++ 연산자 총정리: 종류, 예제, 샘플 프로그램
  5. C++ 포인터 완전 정복: 개념, 예제, 실전 활용
  6. C++ char 타입 마스터: 선언, ASCII 코드, 문자열 변환 기법
  7. C 포인터 완벽 가이드: 타입, 사용법, 모범 사례
  8. Java 변수 타입 이해: 종합 가이드
  9. C 변수 완전 이해: 선언, 정의, 초기화, 저장 클래스, Lvalue/Rvalue
  10. C++ 변수 타입 완벽 이해: 메모리, 범위, 연산