현재 위치는 - 분류정보망 - 안경정보 - C 언어에는 어떤 종류의 변수가 있나요? 이러한 변수를 어떻게 정의하나요?

C 언어에는 어떤 종류의 변수가 있나요? 이러한 변수를 어떻게 정의하나요?

기본 데이터 유형에는 정수, 실수, 문자, 포인터 등이 포함됩니다.

확장 데이터 유형에는 배열, 구조, 공용체, *** 등이 포함됩니다.

사용자 정의 유형을 가질 수도 있습니다.

다음은 기본 유형에 대한 자세한 설명입니다.

종이 버전이든 전자 버전이든 C 언어 책을 읽는 것이 가장 좋습니다. Tan Gaoqiang의 C 프로그래밍을 읽는 것이 좋습니다. , 최신이 3판인데 2판에서 공부하던 중이었습니다.

정수수량

정수수량에는 정수상수와 정수변수가 포함됩니다. 정수 상수는 정수 상수입니다. C 언어에는 8진수, 16진수, 10진수 세 가지 유형의 정수 상수가 사용됩니다.

정수 상수

1. 8진 정수 상수 8진 정수 상수는 0으로 시작해야 합니다. 즉, 0을 8진수 접두사로 사용합니다. 디지털 값은 0~7 입니다. 8진수는 일반적으로 부호가 없습니다.

다음 숫자는 유효한 8진수입니다:

015(10진수 13) 0101(10진수 65) 0177777(10진수 65535)

다음은 숫자는 유효한 8진수가 아닙니다:

256(접두사 0 없음) 03A2(8진수가 아닌 숫자 포함) -0127(빼기 기호 표시)

2. p>

16진수 정수 상수에는 0X 또는 0x 접두사가 붙습니다. 디지털 값은 0~9, A~F 또는 a~f입니다.

다음 숫자는 유효한 16진수 정수 상수입니다:

0X2A(십진수는 42) 0XA0(십진수는 160) 0XFFFF(십진수는 65535)

다음 숫자는 유효한 16진수 상수가 아닙니다:

5A(접두사 0X 없음) 0X3H(16진수가 아닌 숫자 포함)

10진수 정수 상수

10진수 정수 상수에는 접두사가 없습니다. 숫자의 범위는 0부터 9까지입니다.

다음 숫자는 유효한 십진 정수 상수입니다:

237 -568 65535 1627

다음 숫자는 유효한 십진 정수 상수가 아닙니다:

023 (앞에 0이 올 수 없음) 23D (10진수가 아닌 숫자 포함)

프로그램에서는 접두사를 기준으로 다양한 기본 숫자가 구별됩니다. 따라서 상수를 작성할 때 잘못된 접두사를 사용하여 잘못된 결과를 초래하지 않도록 하십시오. 4. 정수 상수의 접미사는 16비트 워드 길이를 갖는 기계에 있다. 기본 정수의 길이도 16비트이므로 표현되는 숫자의 범위도 제한된다. 10진수 무부호 정수 상수의 범위는 0~65535이고, 부호 있는 숫자는 -32768~32767입니다. 부호 없는 8진수의 표현 범위는 0~0177777입니다. 16진수 부호 없는 숫자의 표현 범위는 0X0~0XFFFF 또는 0x0~0xFFFF입니다. 사용된 숫자가 위 범위를 초과하는 경우 긴 정수로 표현해야 합니다. 긴 정수는 접미사 "L" 또는 "l"로 표시됩니다. 예:

10진수 긴 정수 상수 158L(10진수는 158) 358000L(10진수는 -358000)

8진수 긴 정수 상수 012L(10진수는 10) 077L(10진수는 63) 0200000L(10진수는 65536)

16진수 장정수 상수 0X15L(10진수는 21) 0XA5L(10진수는 165) 0X10000L(10진수는 65536)

긴 정수 158L 및 기본 정수 상수 158은 수치상 차이가 없습니다. 그러나 158L의 경우 긴 정수이기 때문에 C 컴파일 시스템은 이에 대해 4바이트의 저장 공간을 할당합니다. 158의 경우 기본 정수형이므로 2바이트의 저장 공간만 할당된다. 따라서 오류를 방지하려면 연산 및 출력 형식에 주의를 기울여야 합니다. 부호 없는 숫자는 접미사로 표시할 수도 있습니다. 정수 상수의 부호 없는 숫자에 대한 접미사는 "U" 또는 "u"입니다.

예: 358u, 0x38Au, 235Lu는 모두 부호가 없는 숫자입니다. 접두사와 접미사를 동시에 사용하여 다양한 유형의 숫자를 나타낼 수 있습니다. 예를 들어, 0XA5Lu는 16진수 부호 없는 긴 정수 A5(십진수로 165)를 나타냅니다.

정수 변수

정수 변수는 다음 범주로 나눌 수 있습니다:

1. 기본 유형

유형 지정자는 int 입니다. 메모리에서 2바이트를 차지하며 그 값은 기본 정수 상수이다.

2. 짧은 정수

유형 지정자는 short int 또는 short'C110F1입니다. 점유 바이트 및 값 범위는 기본 타입과 동일합니다.

3. 긴 정수

유형 지정자는 long int 또는 long이며 메모리에서 4바이트를 차지하고 해당 값은 긴 정수 상수입니다.

4. 부호 없는 유형

유형 지정자는 부호가 없습니다.

unsigned 유형은 위의 세 가지 유형을 일치시켜 구성할 수 있습니다:

(1) Unsigned 기본 유형 유형 지정자는 unsigned int 또는 unsigned입니다.

(2) unsigned short 정수 유형 지정자는 unsigned short입니다.

(3) unsigned long 정수 유형 지정자는 unsigned long입니다.

각 unsigned 유형이 차지합니다. 해당 부호 있는 유형과 동일한 수의 메모리 공간 바이트. 다만, 부호비트가 생략되어 음수는 표현할 수 없다. 다음 표에는 Turbo C의 다양한 정수 유형에 할당된 메모리 바이트 수와 해당 숫자의 표현 범위가 나열되어 있습니다.

타입 지정자 번호 범위에 할당된 바이트 수

int -32768~32767 ■■

short int -32768~32767 ■■

signed int -32768~32767 ■■

unsigned int 0~65535 ■■

long int -2147483648~2147483647 ■■■■

unsigned long 0~4294967295 ■■■■

정수형 변수 설명

변수 설명의 일반적인 형식은 유형 지정자 변수 이름 식별자, 변수 이름 식별자,... ; 예:

int a, b, c; (a, b, c는 정수 변수)

long x, y; (x, y는 정수 변수)

unsigned p, q; (p, q는 부호 없는 정수 변수입니다.)

변수 설명을 작성할 때 다음 사항에 주의해야 합니다:

1 . 유형 지정자 뒤에 동일한 유형의 여러 변수를 지정할 수 있습니다. 변수 이름을 쉼표로 구분하세요. 유형 지정자와 변수 이름 사이에는 공백이 하나 이상 있어야 합니다.

2. 마지막 변수 이름은 ";"으로 끝나야 합니다.

3. 변수 설명은 변수 사용 전에 반드시 넣어야 합니다. 일반적으로 함수 본문의 시작 부분에 배치됩니다.

[연습] //1int a, b;

short int c; -20;

b=a d;

c=a b d;

d=d-a c-b;'Vtable

a, 2, 0

b, 2, 0

c, 2, 0

d, 2, 100

Vtable

'업데이트

1, 0, 0; /p>

2,180

3,360

4,200

Vupdate

연습

[연습 ] //2int a=5;

int b=9; a b-7;

d=a*b*c;

c=d*d*d;

a= c-d; p>

a, 2, 5

b, 2, 9

c, 4, 0

d, 4, 0

Vtable

'Vupdate

1, 5

2, 9

3, 0

4, 0

3, 7

4, 315

3, 31255875

1, - 5112

Vupdate

연습

[연습] //3int a=6, b=19;

unsigned int c ;

int d;

c=a-b 7;

d=b*c;

a=b c d;

b= -a;'V테이블

a, 2, 6

b, 2, 19

c, 2, 0

d, 2, 0

Vtable

'Vupdate

1, 6, 19

3, 0

4, 0

3, 65530

4, -114

1, -101

2, 101

Vupdate

실습

void main(){

long x, y;

int a, b , c, d;

y=6; /p>

c=x a;

d=y b;

printf("c=x a=d, d=y b=d\n ", c, d) ;

}

main을 void를 반환하는 것으로 설명합니다. 즉, 어떤 유형의 값도 반환하지 않습니다.

x, y는 long Type으로 정의됩니다.

a, b, c, d는 int 유형으로 정의됩니다.

5-gt; x

6-gt; a

8-gt; b

x a-gt; c

y b-gt; 실행 중인 프로그램 표시 긴 x, y;

int a, b, c, d;

c=x a;<의 결과

/p>

d=y b;

프로그램에서 볼 수 있습니다: x, y는 긴 정수 변수이고, a, b는 기본 정수 변수입니다. 이들 사이에는 연산이 허용되며, 연산 결과는 긴 정수형이다. 다만, c, d는 기본 정수형으로 정의되어 있으므로 최종 결과는 기본 정수형이 된다. 이 예는 다양한 유형의 수량이 작업에 참여하고 서로에게 값을 할당할 수 있음을 보여줍니다. 유형 변환은 컴파일 시스템에 의해 자동으로 완료됩니다. 유형 변환 규칙은 나중에 소개됩니다.

실수 유형 수량

실수 유형 상수

실수 유형은 부동 소수점 유형이라고도 합니다. 실수 상수는 실수 또는 부동 소수점 숫자라고도 합니다. C 언어에서 실수는 소수 표기법만 사용합니다. 두 가지 형태가 있습니다: 십진수 형태의 지수 형태

1. 십진수 형태

숫자 0~9와 소수점으로 구성됩니다. 예를 들어 0.0, .25, 5.789, 0.13, 5.0, 300., -267.8230 등은 모두 유효한 실수입니다.

2. 지수 형식

10진수와 지수 코드 기호 "e" 또는 "E" 및 지수 코드(정수만 가능, 부호 가능)로 구성됩니다. 일반적인 형식은 E n(a는 10진수, n은 10진수 정수)이고 값은 a*10, n입니다. 예: 2.1E5(2.1*10, 5와 동일), 3.7E-2(동일) 3.7*10,) -2*) 0.5E7(0.5*10, 7과 동일), -2.8E-2(-2.8*10,)-2*) 다음은 유효한 실수가 아닙니다. 345(아니요) 소수점) E7(지수 기호 E 숫자 앞에 없음) -5(지수 플래그 없음) 53.-E3(잘못된 위치에 음수 기호) 2.7E(지수 없음)

표준 C에서는 부동 소수점을 허용합니다. 접미사를 사용하는 숫자. "f" 또는 "F" 접미사는 숫자가 부동 소수점 숫자임을 나타냅니다. 예를 들어 356f와 356.은 동일합니다. 예제 2.2는 이러한 상황을 보여줍니다:

void main()

{

printf("f\nf\n", 356., 356f)

p>

}

void는 main이 어떤 값도 반환하지 않고 printf를 사용하여 결과를 표시함을 나타냅니다.

실제 유형 변수

실제 유형 변수 는 단정밀도 유형과 배정밀도 유형의 두 가지 클래스로 나뉩니다.

유형 지정자는 부동 소수점 단정밀도 지정자, 이중 배정밀도 지정자입니다. Turbo C에서 단정밀도 유형은 4바이트(32비트)의 메모리 공간을 차지하고 값 범위는 3.4E-38 ~ 3.4E 38이며 유효 숫자 7개만 제공할 수 있습니다. 배정밀도 유형은 8바이트(64비트)의 메모리 공간을 차지하고 값 범위는 1.7E-308 ~ 1.7E 308이며 유효 숫자 16자리를 제공할 수 있습니다.

실수형 변수 설명의 형식과 작성 규칙은 정수형 변수 설명과 동일합니다.

예: float x, y;(x, y는 단정밀도 실수 유형)

double a, b, c(a, b, c는 배정밀도; 실수형) 수량)

실수형 상수는 단정밀도와 배정밀도로 구분되지 않고, 모두 배정밀도로 취급됩니다.

void main()

{

float a;

double b

a=33333.33333;

b=33333.33333333333333;

printf("f\nf\n", a, b)

}

이 프로그램 부동 소수점과 이중의 차이점을 설명하세요.

a ■■■■

b ■■■■■■■

alt; p >

blt;---33333.33333333333;;

프로그램 결과 표시

이 프로그램은 float와 double의 차이점을 설명합니다.

float a;< /p >

double b;

a=33333.33333;

b=33333.33333333333333; 이 예에서 볼 수 있듯이 a는 단정밀도 부동 소수점 유형이므로, 유효한 숫자는 7개뿐입니다. 정수는 이미 5자리를 차지하고 있으므로 소수점 이하 두 자리 이하의 숫자는 모두 유효하지 않습니다. b는 16개의 유효한 숫자를 갖는 배정밀도 유형입니다. 다만, 터보C에서는 소수점 이하 6자리까지 유지하고 나머지 부분은 반올림하도록 규정하고 있다.

[연습] //floatint a=32;

float b

double d; p>

float b; p>

d=b*100;

d=d a;

d=d 58.123456;'Vtable

a, 2, 32

p>

b, 4, 0.0

d, 8, 0.0

Vtable

'Vupdate

1, 32

2, 0

3, 0

2, 12345678.00000

3, 1234567800

3, 1234567832

3, 1234567890.123456

Vupdate

연습

[연습] // 1int a=543;

float b;

b=123.123962 a;

b=b-100;

a=b ;'Vtable

a, 2, 543

b, 4, 0.0

Vtable의

'Vupdate

1, 543

2, 0.0

2, 123.123962

2, 23.123962

1, 23

Vupdate

실습

문자 변수

문자 변수에는 문자 상수와 문자 변수가 포함됩니다.

문자 상수

문자 상수는 작은따옴표로 묶인 문자입니다. 예를 들어 'a', 'b', '=', ' ' 및 '?'는 모두 유효한 문자 상수입니다. C 언어에서 문자 상수는 다음과 같은 특징을 갖습니다:

1. 문자 상수는 큰따옴표나 다른 대괄호가 아닌 작은따옴표로만 묶을 수 있습니다.

2. 문자 상수는 문자열이 아닌 단일 문자만 사용할 수 있습니다.

3. 문자는 문자 세트의 모든 문자일 수 있습니다. 그러나 숫자가 문자 유형으로 정의된 후에는

숫자 연산에 참여할 수 없습니다. 예를 들어 '5'와 5는 다릅니다. '5'는 문자 상수이므로 연산에 참여할 수 없습니다.

이스케이프 문자

이스케이프 문자는 특수 문자 상수입니다. 이스케이프 문자는 백슬래시 "\"로 시작하고 그 뒤에 하나 이상의 문자가 옵니다. 이스케이프 문자는 문자의 원래 의미와는 다른 특정 의미를 가지므로 "이스케이프" 문자라고 합니다. 예를 들어 이전 예제에서 printf 함수의 형식 문자열에 사용된 "\n"은 이스케이프 문자이며 그 의미는 "캐리지 리턴 및 줄 바꿈"입니다. 이스케이프 문자는 주로 일반 문자로는 표현하기 어려운 제어 코드를 나타내는 데 사용됩니다.

일반적으로 사용되는 이스케이프 문자와 그 의미

이스케이프 문자의 의미

\n 캐리지 리턴 및 줄 바꿈

\ t 점프 수평으로 다음 탭 위치로

\v 수직으로 건너뛰기

\b 백스페이스

\r Enter

\f 용지 공급 및 페이지 변경

\\ 백슬래시 문자 "\"

\' 작은따옴표 문자

\a 링잉

\ddd 다음으로 표시되는 문자 1~3개의 8진수

\xhh 1~2개의 16진수로 표시되는 문자

대체로 C 언어 문자 세트의 모든 문자는 이스케이프 문자로 표시될 수 있습니다. 이 목적을 위해 표 2.2의 \ddd 및 \xhh가 제안되었습니다. ddd 및 hh는 각각 8진수 및 16진수 ASCII 코드입니다. 예를 들어, \101은 문자 "A"를 나타내고, \102는 문자 "B"를 나타내고, \134는 백슬래시를 나타내고, \XOA는 줄 바꿈을 나타냅니다. 이스케이프 문자 사용

void main( )

{

int a, b, c

b=6; ("d \n\td d\n d d\t\bd\n",a,b,c,a,b,c);

}

이 프로그램은 탈출을 연습합니다. 문자 사용

a, b, c는 정수 5-gt; a, 6-gt b, 7-gt; 프로그램 실행 결과를 표시하려면 printf를 호출하세요.

p>

printf("d\n\td d\n d d\t\bd\n",a,b,c,a,b,c);

프로그램은 값 5를 출력합니다. 그 후 첫 번째 열에 "\n"이 있으므로 캐리지 리턴 및 줄 바꿈이 있고 "\t"가 있으므로 다음 탭 위치로 점프한 다음(탭 위치 간격을 8로 설정) 출력합니다. b 값 6은 공백 두 개를 남겨두고 c를 출력합니다. 값 7 뒤에는 다시 "\n"이 표시되므로 두 개의 공백 뒤에 다시 입력하고 줄 바꿈하면 세 개의 공백 뒤에 값 5가 출력됩니다. b 값은 6으로 출력되고 다시 "\t" 뒤에는 다음 탭 위치(이전 줄의 6에 맞춰 정렬됨)로 이동하지만 다음 이스케이프 문자 "\b"는 공백 하나를 반환하므로 c 값은 다음과 같습니다. 6 다음에 7이 출력됩니다.

문자 변수

문자 변수의 값은 문자 상수, 즉 단일 문자입니다. 문자 변수의 유형 지정자는 char입니다. . 문자형 변수 유형 지정의 형식 및 작성 규칙은 정수형 변수와 동일합니다.

예:

char a, b; 메모리 공간이 있으므로 문자 값은 변수의 메모리 단위에 ASCII 코드 형식으로 저장됩니다. 예를 들어 x의 ASCII 코드 10진수는 120이고 y의 10진수 ASCII 코드는 입니다. 121. 문자 변수 a와 b에 'x' 및 'y' 값을 할당합니다. a='x'; b='y'는 실제로 120과 121의 이진 코드를 두 개의 단위 a와 b에 저장합니다. 0 1 1 1 1 0 0 0

b 0 1 1 1 1 0 0 1

그래서 C 언어에서는 문자 값을 할당할 수 있습니다. 정수형 변수로, 정수값으로 문자형 변수로.

출력 시 문자형 변수는 정수로 출력이 허용되며, 정수도 문자로 출력이 허용됩니다. 정수값은 2바이트 값이고, 문자값은 1바이트 값이다. 정수값을 문자값으로 처리할 경우 하위 옥텟만 처리에 참여한다.

main()

{

문자 a, b

a=120; 121;

printf("c,c\nd,d\n",a,b,a,b);

}

a ■ b ■

a lt;-- 120

b lt;--- 121

프로그램 결과 표시

이 프로그램은 , b는 문자형이지만 대입문에서는 정수값을 대입한다. 결과에서 a 및 b 값의 출력 형식은 printf 함수 형식 문자열의 형식 문자에 따라 달라집니다. 형식 문자가 "c"인 경우 해당 출력 변수 값은 형식 문자입니다. "d", 해당 출력 값은 다음과 같습니다. 변수 값은 정수입니다.

void main()

{

char a, b

a='x'; > b='y';

a=a-32;

b=b-32;

printf("c,c\nd,d \n", a, b, a, b);

}

a, b는 문자 변수로 선언되고 문자 값이 할당됩니다.

소문자 변경 대문자로 변경

정수형과 문자형으로 출력

이 예에서는 a와 b가 문자변수로 기술되어 있으며, C언어에서는 문자변수가 숫자형에 참여할 수 있도록 허용하고 있다. 즉, 문자의 ASCII 코드를 사용하여 작업에 참여합니다. 대문자와 소문자의 ASCII 코드가 32만큼 다르기 때문에 연산 후 소문자는 대문자로 변환됩니다. 그런 다음 각각 정수형과 문자형으로 출력합니다.

[연습] //charint a=49;

char b;

char d; /p>

d=a b;'Vtable

a, 2, 49

b, 1, 무작위

d, 1, 무작위

p>

p>

Vtable

'Vupdate

1, 49

2, 무작위

3, 무작위

2, ';'

3, 'l'

Vupdate

연습

[연습] // char c1, c2;

c1='a';

c1-32;

c1, 1, 무작위

c2, 1, 무작위

Vtable

'Vupdate

1 , 무작위 2, 무작위

1, 'a' 2, 'b'

1, 'A' 2, 'B'

Vupdate

연습

문자열 상수

문자열 상수는 큰따옴표 쌍으로 묶인 일련의 문자입니다. 예를 들어 "CHINA", "C 프로그램:", "$12.5" 등은 모두 유효한 문자열 상수입니다. 문자열 상수와 문자 상수는 서로 다른 양입니다. 주요 차이점은 다음과 같습니다.

1. 문자 상수는 작은따옴표로 묶이고, 문자열 상수는 큰따옴표로 묶습니다.

2. 문자 상수는 단일 문자만 사용할 수 있지만 문자열 상수는 하나 이상의 문자를 포함할 수 있습니다.

3. 문자 상수를 문자 변수에 할당할 수 있지만 문자열 상수를 문자 변수에 할당할 수는 없습니다. C 언어에는 해당 문자열 변수가 없습니다.

BASIC 언어와는 다릅니다. 그러나 문자 배열을 사용하여 문자열 상수를 저장할 수 있습니다. 이는 배열 장에서 소개됩니다.

4. 문자 상수는 1바이트의 메모리 공간을 차지합니다. 문자열 상수가 차지하는 메모리 바이트 수는 문자열의 바이트 수에 1을 더한 것과 같습니다. 추가된 바이트에는 문자 "\0"(ASCII 코드는 0)이 저장됩니다. 이것이 문자열 표시의 끝입니다. 예를 들어, 메모리에서 "C 프로그램" 문자열이 차지하는 바이트는 C 프로그램\0입니다. 문자 상수 'a'와 문자열 상수 'a'는 둘 다 문자가 하나만 있지만 메모리에서의 상황은 다릅니다.

'a'는 메모리에서 1바이트를 차지하며 다음과 같이 표현됩니다. a

"a"는 메모리에서 2바이트를 차지하며 다음과 같이 표현됩니다: a\0 기호 상수

기호 상수

C 언어에서는 식별자를 사용하여 기호 상수라고 하는 상수를 나타낼 수 있습니다. 사용하기 전에 기호 상수를 정의해야 합니다. 일반적인 형식은 다음과 같습니다.

#define 식별자 상수

여기서 #define도 전처리 명령입니다(전처리 명령은 모두?quot;# "). , 매크로 정의 명령이라고 합니다(9장 전처리기에서 자세히 소개됩니다). 이 명령의 기능은 식별자를 다음에 나오는 상수 값으로 정의하는 것입니다. 프로그램에서 이후에 나타나는 모든 식별자는 대문자를 사용하는 것이 일반적입니다. 차이를 표시하기 위한 기호 상수 식별자와 소문자. void main()

{

float s, r=5 ;

s=PI*r*r;

printf("s=f\n", s)

}

매크로 정의 명령은 PI를 3.14159 s로 정의하고 r은 실수로 정의됩니다. 5 -gt;r PI*r*r-gt;s

프로그램 결과 표시 float s, r= 5; s=PI*r*r; 이 프로그램은 PI를 3.14159로 정의하기 전에 매크로 명령으로 정의되며 이 값을 사용하여 프로그램에서 PI를 s=와 동일하게 만듭니다. 3.14159*r*r 기호 상수는 변수가 아니며 그것이 나타내는 값은 범위 내에서 변경될 수 없습니다. 즉, 프로그램에서 할당문을 사용하여 다시 할당할 수 없습니다. .