C语言——数据类型

本文介绍了编程中的变量和常量。变量是可变的量,有存储类型和数据类型,如int、char等,并可以通过定义和初始化设置其值。局部变量和全局变量在生命周期和作用域上有区别。常量是不可变的,包括字符型、整型、浮点型、字符串和宏定义等,它们在程序执行过程中保持不变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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位

p96DLL9.md.png

p96saNt.md.png

1.3 初始化格式**

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

​ int a=0;

(2)先定义后初始化

​ int a;

​ a=0;

1.4 局部变量和全局变量

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

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

(3)内存的五个区域:

p96rVot.md.png
注意🚨🚨🚨:初始化未0的全局变量和静态变量存放在.bss区
👉问:为什么未初始化的全局变量和静态变量的初值为0?
🧐答:因为这两种变量都存放在.bss

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

局部变量全局变量
定义位置函数体内部函数体外部
存储位置栈区全局区
生命周期同函数体共存亡同整个程序共存亡
作用域作用于函数体内部作用于整个程序
初值未初始化时,是一个随机值未初始化时,值为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

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sunqk5665

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值