1. 变量

1.1变量的概念

变量就是在程序中可以发生变化的量,变量有类型。

变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。(1字节=8位)

1.2定义格式

存储类型 数据类型 变量名;

例如:(auto) int a;

  • 变量名是标识符,要符合标识符命名规则。
  • 存储类型:变量存储的位置。
  • 数据类型包含:名字 字节 取值范围

类型

存储大小

值范围

char

字符类型

1 字节

-2^7 到 (2^7-1)

unsigned char

无符号字符类型

1 字节

0 到 (2^8-1)

int

整数类型

4 字节

-2^31 到 (2^31-1)

unsigned int

无符号整数类型

4 字节

0 到 (2^32-1)

short

短整型

2 字节

-2^15 到 (2^15-1)

unsigned short

无符号短整形

2 字节

0 到 (2^16-1)

long

长整型

4 字节

-2^31 到 (2^31-1)

unsigned long

无符号长整形

4 字节

0 到 (2^32-1)

float

单精度浮点型

4字节

有效数据6-7位

double

双精度浮点型

8字节

有效数据15-16位

C语言——数据类型_c语言

C语言——数据类型_开发语言_02

1.3 初始化格式**

(1)可以定义的时候初始化

int a=0;

(2)先定义后初始化

int a;

a=0;

1.4 局部变量和全局变量

(1)生命周期:变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。也就是存活的周期时间。时间维度。

(2)作用域:变量可以起作用的范围。空间维度。

(3)内存的五个区域:

C语言——数据类型_补码_03

📢局部变量和全部变量的区别:

局部变量

全局变量

定义位置

函数体内部

函数体外部

存储位置

栈区

全局区

生命周期

同函数体共存亡

同整个程序共存亡

作用域

作用于函数体内部

作用于整个程序

初值

未初始化时,是一个随机值

未初始化时,值为0

例子:

#include <stdio.h>
int b;
int main(int argc, const char *argv[])
{
	int a;
	printf("%d\n",a);
	printf("%d\n",b);
	return 0;
}

2. 常量

2.1 概念

程序运行中不会发生变化的量叫常量,存放在常量区。

2.2 分类

2.2.1 字符型常量

类型为char,从ASCII表中找到的字符都是字符型常量,不可以改变。用单引号括起来的就是字符常量,例如‘A’。

类型

存储大小

值范围

char

字符类型

1 字节

-128 到 127

unsigned char

无符号字符类型

1 字节

0 到 255

signed char

带符号字符类型

1 字节

-128 到 127

原码、反码和补码:

  • (1)最高位表示符号位,正数时0,负数是1。
  • (2)正数的原码、反码和补码都一样。
  • (3)负数要用补码来计算:

**原码 **就是直接在数值前面加上符号表示

反码 等于原码的符号位不变,其他位按位取反

补码 等于反码加一

例如:-5

原码:1000 0101
反码:1111 1010
补码:1111 1011

用 ’ ’ 括起来的就是字符常量:

‘a’ 字符a

‘\0’ 空字符

‘\n’ 换行

用法:

char c='b';
	char a='\101';
	printf("%c\n",'A');
	printf("%c\n",65);
	printf("%c\n",'\x42');
	printf("%c\n",c);
	printf("%c\n",a);
	printf("%c\n",a+32);

👉因为C规定转义字符 ‘\x41’ 中\是转义字符引导符,后跟一个x表示x后面的数字是十六进制表示法,用’ '括起来表示一字节ASCII码。\转义符后面加数字代表转义成八进制的字符,后面的数字是八进制。

2.2.2 字符串常量

用“”括起来的就是字符串,例如“hello”,字符串最后跟一个’\0’🚨。

例如:

printf("%s\n","hello");

2.2.3 整型常量

整型常量就是类型为整数的常量,包括从负数到零到正数的所有整数。

可以用二进制、八进制、十进制和十六进制表示。

#include <stdio.h>
int main(int argc, const char *argv[])
{
	int a=10;//把整型常量赋值给整型变量
	printf("%d\n",a);
	printf("%d\n",10); //十进制
	printf("%d\n",0b1111); //二进制
	printf("%d\n",010); //八进制
	printf("%d\n",0xF); //十六进制
	return 0;
}

2.2.4 浮点型常量

浮点型常量就是类型为浮点数的常量,包括从负数到零到正数的所有浮点数。有float型和double型。

2.2.5 指数常量

即用科学计数法进行数据的表示。

例如:👇

300000000=3*10^8→3e8

0.0000012=1.2*10^-6→1.2e-6

例子:

float f=80000;
	printf("%e %e\n",0.0000012,f);

2.2.6 标识常量(宏定义)

宏定义:起到标识作用

  • (1)只是单纯的文本替换,在预处理的时候进行的
  • (2)遵循标识符命名规则
  • (3)一般用大写标识

格式:

#define 宏名 常量或表达式

📢特点:单纯的文本替换,不能手动运算(原样替换

例子:

#include <stdio.h>
#define ONE 1
#define TWO ONE+ONE
#define THREE ONE+TWO
int main(int argc, const char *argv[])
{
	printf("%d\n",THREE);

	return 0;
}//输出结果为:3

📢如果一个串长于一行,可在行尾用反斜线 “\” 续行

练习:

#define N 2
   #define M N+3 //M 2+3
   #define NUM N+M/2+1 //2+2+3/2+1=6
   void main()
   {
      int a = NUM;     
      printf("%d\n",a);
   }//输出结果为:6

EE);

return 0;

}//输出结果为:3

📢如果一个串长于一行,可在行尾用反斜线 “\” 续行

练习:

```c
#define N 2
   #define M N+3 //M 2+3
   #define NUM N+M/2+1 //2+2+3/2+1=6
   void main()
   {
      int a = NUM;     
      printf("%d\n",a);
   }//输出结果为:6