1.6、C语言的常量与变量

英文字母
字节数 : 1;编码:GB2312
字节数 : 1;编码:GBK
字节数 : 1;编码:GB18030
字节数 : 1;编码:ISO-8859-1
字节数 : 1;编码:UTF-8
字节数 : 4;编码:UTF-16
字节数 : 2;编码:UTF-16BE
字节数 : 2;编码:UTF-16LE

中文汉字
字节数 : 2;编码:GB2312
字节数 : 2;编码:GBK
字节数 : 2;编码:GB18030
字节数 : 1;编码:ISO-8859-1
字节数 : 3;编码:UTF-8
字节数 : 4;编码:UTF-16
字节数 : 2;编码:UTF-16BE
字节数 : 2;编码:UTF-16LE

常量
在程序运行过程中,其数值不会发生改变的数据

  1. 整型常量
    二进制:0b00001111
    八进制:077
    十进制:20
    十六进制:0xff
  2. 浮点常量: 0.635
  3. 字符常量:‘a’ ‘b’
  4. 字符串常量:“abcdefg” 字符串以‘\0’作为结束标记
  5. 指数常量:
    1000000000 10^9 10e+9
    0.00000000001 10^-11 10e-11
  6. 标识常量:
    宏 – 替换工作 #define [宏名] [常量(常量表达式)]
    宏函数 例如:#define ADD(x,y,z) (((x) + (y)) * (z)) 注意:在定义宏时,需要给每个变量加上括号,并且给整个表达式也加上括号

变量

  1. 相当于创建了一个对象,并且为这个对象分配了一块内存空间,这个空间的名字称为变量名
  2. 变量是程序中占据空间大小的抽象,占据的大小是由数据结构决定的
  3. 变量在内存空间的首地址,称为变量的地址
  4. 内存的最小单位—字节
  5. 定义变量:存储类型 数据类型 变量名;
    例如: int a; //定义变量,没有初始化
    int b = 10; //定义变量并初始化值
  6. 变量的命名规范
    1)变量名不能是C的关键字
    2)不能用数字开头,但是可以用字母或_开头,不能重复的定义 3)多个单词之间不能空格分割 int this today //错误定义方式,不允许出现空格
    4)区分大小写 int a; int A; 两个变量
    5)希望能够见名知意
  7. 存储类型: .
    1).auto:默认的储存类型,是一个局部变量, 只能够在一个范围内使用,默认随机值,由于是虚拟机,所以初始随机值不准确;范围:一个语句段内使用{}
    2).register:寄存器变量
    定义变量的时候放到cpu寄存器中,可以加快程序的运行速度,但是数量少,容量小,如果申请不到,就会同auto。
    2.1).必须是cpu寄存器支持的类型
    2.2).不能对register变量"&"取地址操作
    2.3).静态变量不能定义为register类型
    3).static:静态储存变量
    3.1).static修饰变量只会被初始化一次,被称之为静态变量 3.2).修饰局部变量如果没有被初始化,其值为随机值
    3.3).修饰全局变量如果没有被初始化,其值为0
    4).extern:外部参照引用类型
    4.1).只能修饰全局变量
    4.2).全局变量必须被定义过
    4.3).多个文件同时编译

auto 存储在栈区.
在这里插入图片描述

  1. 生命周期和作用域
    局部变量
    生命周期:从定义开始,到模块的结束
    作用域:该模块内

    全局变量
    生命周期:从定义开始,到整个程序的结束
    作用域:整个程序

    static修饰的局部变量
    生命周期:从定义的开始,到整个程序的结束
    作用域:该模块内

    static修饰的全局变量
    生命周期:从定义的开始,到整个程序的结束
    作用域:该文件内

  2. 类型转换

    9.1 、隐式类型转换
    在这里插入图片描述
    9.1.1.低字节向高字节转换
    9.1.2.有符号数向无符号数转换
    9.1.3.float势必向double转换,short、char势必向int转换

    9.2、强制类型转换:采用某种方式将某种数据类型强制转换成指定的数据类型。包括显式的数据类型转换,和隐式的数据类型转换。 9.2.1.强制类型转换符后面的表达式如存在复杂运算,就一定要用小括号括起来
    9.2.2.强制类型转换符是一种不安全的转换,一般都是将高级类型转换成低级类型,要丢失数据的精度
    9.2.3.强制类型转换并不改变表达式中变量的数据类型和其值。

猜你喜欢

转载自blog.csdn.net/qq_41110647/article/details/106314016
今日推荐