当前位置: 首页 > news >正文

【C语言】(二)变量与常量

一、变量

  • 计算机存储器中的一块命名空间,可以在里面存储一个值(Value)
  • 存储的值是可以随时变的

(一) 变量的命名(标识符)规则 

  • 只能包含 字母(Aa~Zz)、数字(0-9)、下划线(_)   简洁有意义
  • 只能字母和下划线开头
  • 大小写敏感:C语言区分大小写,字母大写和小写是不同的变量名
  • 避免使用保留字:不能使用C语言的关键字和保留字作为变量名
C语言保留字

(二)变量的定义/声明

变量使用之前必须先声明变量,只有一次

int main() {
    int a;
    int b,c;     //定义变量
    }

(三)变量的赋值

变量使用之前一定要赋值

变量使用“=”赋值,等号左侧为左值,等号右侧为右值

int main(){
   int a,b;
   char ch;
   
   a=3,b=4;
   ch= 'c';
}
int main(){
  int a = 3,b =4;  
  char ch ='c';  //初始化

  double d = 3.14, e = 2.58;   //定义变量并初始化
  ch = 'd';      //赋值:变量已存在(对应空间已开辟),将字符d直接放到一个已经存在的空间中

}

 二、变量的数据类型

变量的类型决定了什么? 

地址:每个变量都分配了一个内存地址

  • 使用&(地址运算符)获取变量的内存地址
  • 通过指针访问和操作变量的内存地址

32位机的内存地址是32位,从0x00000000到0xFFFFFFFF

编译器按照变量定义的类型分配相应大小的内存空间

三、变量的属性

(一)占用内存空间的大小

(二)数据的解释方式

如:unsigned类型  VS 有符号类型;整数型VS 浮点数;字符型 VS 整型

(三)不同数据类型的表示范围

与解释方式和长度有关

char ——> 1字节 ——>8位——> 有1个符号位

unsigned char ——> 1字节 ——>8位——>没有符号位

(四)可参与的运算

整型   :加减乘除余

浮点型:加减乘除

字符型:加减 (ASCII码)

四、C语言 运算符优先级

运算符分为单目(一元),双目(二元)和三目(三元)。顾名思义,目,即运算符操作数的个数

类型说明举例
单目操作数只有一个,从右向左a++(a自增1)
双目操作数有两个,从左向右a + b(两数之和)
三目目前仅有条件运算符a ? b : c(如果a为真,结果为b,否则为c
优先级运算符名称或含义使用形式说明方向
1[]数组下标数组名[常量表达式]----左到右
()圆括号(表达式)
函数名(形参表)
.成员选择(对象)对象.成员名
->成员选择(指针)对象指针->成员名
2-负号运算符-表达式单目右到左
(类型)强制类型转换(数据类型)表达式
++自增运算符++变量名单目
变量名++
--自减运算符--变量名
变量名--
*取值运算符*指针变量
&取地址运算符&变量名
!逻辑非运算符!表达式
~按位取反运算符~表达式
sizeof长度运算符sizeof(表达式)
3/表达式 / 表达式双目左到右
*表达式*表达式
%余数(取模)整型表达式%整型表达式
4+表达式+表达式
-表达式-表达式
5<<左移变量<<表达式
>>右移变量>>表达式
6>大于表达式>表达式
>=大于等于表达式>=表达式
<小于表达式<表达式
<=小于等于表达式<=表达式
7==等于表达式==表达式
!=不等于表达式!= 表达式
8&按位与表达式&表达式
9^按位异或表达式^表达式
10|按位或表达式|表达式
11&&逻辑与表达式&&表达式
12||逻辑或表达式||表达式
13?:条件运算符表达式1? 表达式2: 表达式3三目右到左
14=赋值运算符变量=表达式---------右到左
/=除后赋值变量/=表达式
*=乘后赋值变量*=表达式
%=取模后赋值变量%=表达式
+=加后赋值变量+=表达式
-=减后赋值变量-=表达式
<<=左移后赋值变量<<=表达式
>>=右移后赋值变量>>=表达式
&=按位与后赋值变量&=表达式
^=按位异或后赋值变量^=表达式
|=按位或后赋值变量|=表达式
15,逗号运算符表达式,表达式,…左到右

(一)sizeof运算符

sizeof(类型):类型占用的内存字节数

sizeof(变量或表达式):变量或表达式所属类型所占的内存字节数

  • 增加程序的可执行性
  • 编译时执行的运算符,不会导致额外的运行时间开销

五、字节存储顺序

主要分为大端序(Big-endian)和小端序(Little-endian),区别如下

类型解释备注
Big-endian高位字节存入低地址,低位字节存入高地址与从左到右的书写顺序相同,便于处理字符串
Little-endian低位字节存入低地址,高位字节存入高地址便于计算机从低位字节向高位字节运算

六、常量

程序运行过程中值不能改变的数据

  • 用于表示固定值,如数字、字符或字符串
  • 常量使用提高程序的可读性和可维护性,避免不必要的错误 

两种替换直接书写数值的方法 

(一)宏常量

  • 使用标识符,在使用前需要先定义
  • 慎用符号(考虑要不要分号)
  • 预编译阶段发生替换:处理“程序中的编译预处理命令” 的结果 + 源程序 ——>编译得到目标代码

    定义方法:#define 标识符 字符串

    缺点:

    1. 没有数据类型,编译器在进行宏替换时不进行类型检查
    2. 只进行简单的字符串替换,极易产生意想不到的缺点

    (二)const常量

    • 有数据类型,进行类型检查
    • 某些集成化调试工具可以对其进行调试

    相关文章:

  1. 滤波器的设计案例
  2. Pytorch使用手册-音频重采样(专题十九)
  3. BGP分解实验·19——BGP选路原则之起源
  4. 深度学习-126-LangGraph之基础知识(三)添加记忆和Human_in_the_loop的聊天机器人
  5. 解决每次 Maven Rebuild 后 Java 编译器版本变为 1.5
  6. 微信小程序 - 自定义实现分页功能
  7. 特辣的海藻!2
  8. 达梦数据库学习笔记@1
  9. 05C语言——数组
  10. 开源工具推荐:监控工具NetData
  11. 【NLP算法面经】本科双非,头条+腾讯 NLP 详细面经(★附面题整理★)
  12. 【java】类声明的两种形式
  13. 7777777777
  14. ChatGPT各模型版本对比分析
  15. 《论基于构件的软件开发方法及其应用》审题技巧 - 系统架构设计师
  16. 深入xtquant:实时行情订阅与数据获取的实战指南
  17. 一、哈希——1. 两数之和
  18. HTML之JavaScript DOM操作元素(2)
  19. 【Opensim】软件显示问题(比例不对,按键遮挡,显示不完整)
  20. 深入浅出MySQL:概述与体系结构解析
  21. 人社部:一季度全国城镇新增就业308万人,同比增加5万人
  22. “90后”樊鑫履新乌兰察布市察右中旗副旗长人选
  23. 非法收受财物逾1648万,湖南原副厅级干部康月林一审被判十年半
  24. 科学时代重读“老子”的意义——对谈《老子智慧八十一讲》
  25. 国家发改委:我国能源进口来源多元,企业减少甚至停止自美能源进口对国内能源供应没有影响
  26. 稳就业稳经济五方面若干举措将成熟一项出台一项