栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言基础 - 变量

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言基础 - 变量

目录

变量:

存储类型:

auto 自动存储类型

register 寄存器存储类型

static 静态存储类型

extern 外部引用

数据类型:

c语言数据类型分类:


变量:

程序中可以被改变的数据量

计算机在内存中开辟一片空间给程序员存放数据,空间内的数据可以被改变

程序员在代码中向系统申请空间(定义变量)

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

存储类型:规定了变量存放的区域

数据类型:规定的变量存放空间的大小

变量名:对存储数据的空间取名字,要符合标识符命名规则

存储类型:

局部变量:

    在模块内部定义的变量

    从定义位置开始到模块结束(}),都一直存在,生命周期短

     从定义位置开始到模块结束(}),都一直被使用,作用域窄

     定义时未被初始化,默认值为随机值

全局变量:

    在所有模块外部定义的变量

    从定义位置开始到程序结束,都一直存在,生命周期长

    从定义位置开始到程序结束,都一直能被使用,作用域广

    定义时未被初始化,默认值为0

auto 自动存储类型

int n;//默认就是自动存储类型,通常省略

auto int m;

去定义全局变量时,将变量存放在全局变量区,不初始化全局变量,值默认为0

去定义局部变量时,将变量存放在栈区,不初始化局部变量,值是随机值

register 寄存器存储类型

将变量放到寄存器中,不在内存中

寄存器数量少,运行速度快,可能申请失败

static 静态存储类型

修饰全局变量时,会限制变量只能在本文件内使用,限制变量的作用域

修饰局部变量时,会将变量存放到全局变量区,延长变量的生命周期

修饰函数,和全局变量一样

extern 外部引用

引用外部定义

文件的外部

起修饰作用:const,volatile

const:将变量常量化

修饰局部变量,变量的值只读,不能被修改

修饰指针,根据const的位置不同,功能也不同

修饰函数的参数,说明参数在函数内部不能被修改

volatile:防止编译器优化让程序从内存去读取变量的值

确保数据是准确的,没有被意外改变

数据类型:

c语言数据类型分类:

基本数据类型:单个数据

整型:char     short     int    long

浮点型:float    double

字符型:char

枚举型:enum,会自动赋值,默认从0开始,后面依次是前一个加一的结果

结构数据类型:集合

数组:一次性定义多个相同类型变量,在空间内连续存放

结构体:存放不同类型变量的集合,每一个变量有自己独立的空间

共用体:存放不同类型变量的集合,所有变量共用一片空间

特殊数据类型:

指针:存放地址的变量

void:用于修饰指针,表示不确定类型的地址;用于修饰函数,表示无返回值或无参数

char 在64位操作系统中,占1个字节

unsigned char:0 ~ 255

signed char:-128 ~ 127

char(默认有符号)

short 在64位操作系统中,占2个字节

unsigned short:0 ~ 65532(2^16-1)

signed short:-2^15 ~ 2^15-1

short(默认有符号)

int 在64位操作系统中,占4个字节

unsigned int:0 ~ 2^32-1

signed int: -2^31 ~ 2^31-1

int(默认有符号)

long 在64位操作系统中,占8个字节,在32位操作系统中,占4个字节

unsgned long:0 ~ 2^64-1(64位操作系统)

signed long:-2^63 ~ 2^63-1(64位操作系统)

long(默认有符号)

float 在64位操作系统中,占4个字节,都是有符号数

共32位,1位存放符号位,8位存放指数位(以127为基数),23位为尾数位

double 在64位操作系统中,占8个字节,都是有符号数

共64位,1位存放符号位,11位存放指数位(以127为基数),52位为尾数位

数据在内存中的存储:

   数据是以补码的形式存放在内存中,主要看数据的值 / 数据本身

   取出数据使用时看数据类型或输出格式

   正整数和0:对于无符号数都是正整数

 源码  ==   补码

int n = 12;

源码:   0000 0000 0000 0000 0000 0000 0000 1100

补码:   0000 0000 0000 0000 0000 0000 0000 1100

   负整数:源码就是直接转为二进制

                 反码:源码取反,不改变符号位

                 补码:反码加一

int n = -12;

源码:   1000 0000 0000 0000 0000 0000 0000 1100

反码:   1111  1111  1111  1111  1111 1111 1111 0011

补码:   1111  1111  1111  1111  1111 1111 1111 0100

补码取反:1000 0000 0000 0000 0000 0000 0000 1011

加一:       1000 0000 0000 0000 0000 0000 0000 1100

源码-> 补码:取反加一

补码-> 源码:取反加一 或 减一取反

大小端

大端存储:数据的高八位(左边),存放在内存低地址(数字小的)中

小端存储:数据的高八位(左边),存放在内存高地址(数字大的)中

类型转换:

  显示转换:看得见的数据转换

强制类型转换:(数据类型)

int n = 0;

float pi = 3.14;

n = (int)pi;

隐式转换:看不见的类型转换

   不同数据类型在进行运算时,会进行隐式转换,将不同类型转换为同一类型

   将低精度转换为高精度,有符号转换为无符号

int n = 0;

float pi = 3.14;

n = pi;

n 的结果为3,编译不报错

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021923.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号