C 변수


변수는 실제로 프로그램이 동작할 수 있는 저장 영역의 이름일 뿐입니다. C의 각 변수에는 특정 유형이 있습니다. 유형에 따라 변수 저장소의 크기와 레이아웃이 결정됩니다. 이 범위 내의 값은 메모리에 저장될 수 있으며 변수에 연산자가 적용될 수 있습니다.

변수 이름은 문자, 숫자, 밑줄 문자로 구성될 수 있습니다. 문자나 밑줄로 시작해야 합니다. C는 대소문자를 구분하므로 대문자와 소문자는 다릅니다. 이전 장에서 설명한 기본형을 바탕으로 다음과 같은 기본 변수형이 있습니다.

유형 설명
char은 일반적으로 옥텟(1바이트)입니다. 이는 정수 유형입니다.
int기계에 대한 가장 자연스러운 정수 크기입니다.
float단일 정밀도 부동 소수점 값.
double이중 정밀도 부동 소수점 값입니다.
void은 유형이 없음을 나타냅니다.

C 언어에서는 열거형, 포인터, 배열, 구조체, 공용체 등과 같은 다양한 다른 유형의 변수를 정의할 수도 있습니다. 이에 대해서는 다음 장에서 먼저 기본 변수 유형을 설명합니다.

C의 변수 정의

변수 정의는 컴파일러에게 변수 저장소를 생성할 위치와 변수 저장소를 생성하는 방법을 알려줍니다. 변수 정의는 아래와 같이 데이터 유형을 지정하고 해당 유형의 하나 이상의 변수 목록을 포함합니다.

type variable_list;

여기서 type은 char, w_char, int , float가 될 수 있는 유효한 C 데이터 유형이어야 합니다. , double, bool 또는 사용자 정의 개체인 variable_list는 쉼표로 구분된 하나 이상의 식별자 이름으로 구성될 수 있습니다. 몇 가지 유효한 선언이 아래에 나열되어 있습니다.

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

lineint 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 和 fbyte z = 22;                // 定义并初始化 zchar x = 'x';               // 变量 x 的值为 'x'

초기화가 없는 정의: 정적 저장 기간이 있는 변수는 암시적으로 NULL로 초기화됩니다(모든 바이트의 값은 0), 다른 모든 변수의 초기값은 정의되지 않습니다.

C

변수 선언의 변수 선언은 변수가 지정된 유형과 이름으로 존재함을 컴파일러에 보장하므로 컴파일러는 변수의 전체 세부 사항을 알지 못한 채 추가 컴파일을 진행할 수 있습니다. 변수 선언은 컴파일 타임에만 의미가 있습니다. 컴파일러는 프로그램이 링크될 때 실제 변수 선언을 요구합니다.

변수 선언에는 두 가지 상황이 있습니다.

  • 1. 하나는 저장 공간을 만들어야 합니다. 예: int a는 선언될 때 이미 저장 공간을 생성했습니다.

  • 2. 다른 방법은 extern 키워드를 사용하여 변수 이름을 정의하지 않고 선언함으로써 저장 공간을 생성할 필요가 없습니다. 예: extern int a 여기서 변수 a는 다른 파일에서 정의될 수 있습니다.

  • extern 키워드가 없으면 모두 변수 정의입니다.

extern int i; //声明,不是定义int i; //声明,也是定义

Example

변수가 헤더에 선언되었지만 기본 함수에서 정의되고 초기화되는 다음 예를 시도해 보세요.

#include <stdio.h>// 变量声明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;
  printf("value of c : %d \n", c);

  f = 70.0/3.0;
  printf("value of f : %f \n", f); 
  return 0;}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

value of c : 30value of f : 23.333334

C의 Lvalues ​​​​(Lvalues) 및 rvalues ​​​​(Rvalues)

C에는 두 가지 유형의 표현식이 있습니다.

  1. Lvalue(lvalue): 메모리 위치를 가리키는 표현식은 다음과 같습니다. lvalue 표현식이라고 합니다. lvalue는 할당 번호의 왼쪽이나 오른쪽에 나타날 수 있습니다.

  2. Rvalue: rvalue라는 용어는 메모리의 일부 주소에 저장된 숫자 값을 나타냅니다. rvalue는 할당할 수 없는 표현식입니다. 즉, rvalue는 할당 번호의 오른쪽에 나타날 수 있지만 왼쪽에는 나타날 수 없습니다.

변수는 lvalue이므로 과제 번호 왼쪽에 나타날 수 있습니다. 숫자 리터럴은 rvalue이므로 할당할 수 없으며 할당 번호 왼쪽에 나타날 수 없습니다. 유효한 진술은 다음과 같습니다.

int g = 20;

그러나 다음은 유효한 문이 아니며 컴파일 시간 오류를 생성합니다.

10 = 20;