news 2026/1/14 11:31:46

C语言5——常见关键字 define定义常量 表达式求值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言5——常见关键字 define定义常量 表达式求值

常见关键字

auto(可以被省略)

break(可以跳出循环)

case default for switch do while while if else

char short int long long long float double signed(有符号的) unsigned(无符号的)

const(常属性)

enum(枚举) struct(结构体) union(联合体,共用体)

extern(声明外部符号)

register(寄存器) static(静态的)

return(函数返回值)

sizeof(计算大小)

sizeof是一个操作符,用来计算变量(类型)所占内存空间的大小,不关注内存中存放的具体内容,单位是字节

strlen是一个库函数,是专门求字符串长度,只能针对字符串,从参数给定的地址向后一直找\0,统计\0之前出现的字符的个数

typedef(类型重命名)

void(函数的返回类型,函数参数)

关键字typedef

类型定义(类型重命名)

关键字static

可以用来修饰变量和函数

修饰局部变量,称为静态局部变量

void test() { int a = 1; a++; printf("%d", a); } int main() { int i = 0; while (i < 10) { test(); i++; } return 0; ) //打印结果是2 2 2 2 2 2 2 2 2 2 //若int a前加上static //static修饰局部变量的时候,局部变量出了作用域,不销毁。本质上,static修饰局部变量的时候,改变了变量的存储位置。影响了变量的生命周期,生命周期变长,和程序的生命周期一样。 void test() { static int a = 1; a++; printf("%d", a); } int main() { int i = 0; while (i < 10) { test(); i++; } return 0; ) //打印结果是2 3 4 5 6 7 8 9 10 11

修饰全局变量,成为静态全局变量

全部变量是具有外部链接属性的

编译+链接 -> 可执行程序

而当static修饰全局变量的时候,这个全局变量的外部链接属性就变成了内部链接属性,其他源文件(.c)就不能再使用到这个全局变量了(在使用时,就感觉作用域是变小了)

修饰函数,称为静态函数

一个函数本来是具有外部链接属性的,但是被static修饰的时候,外部链接属性就变成了内部链接属性,其他源文件(.c)就无法使用了

关键字register(寄存器)

电脑上的存储设备有硬盘,内存,高速缓存(cache),寄存器(集成到CPU上)

越往右访问速度越快,空间越小,造价越高

int main() { //寄存器变量 register int num = 3;//建议3:存放在寄存器中 return 0; }

define 定义常量

define定义标识符常量

#define NUM 100 int main() { printf("%d\n",NUM); int n = NUM; printf("%d\n", n); int arr[NUM] = { 0 }; return 0; }

define定义宏

宏是有参数的

#define ADD(x, y) ((x)+(y)) //宏名+宏的参数,参数是无类型的+宏体 int main() { int a = 10; int b = 20; int c = ADD(a, b); printf("%d\n", c); }

表达式求值

表达式求值的顺序一部分是由操作符的优先级和结合性决定

同样,有些表达式的操作数在求值的过程中可能需要转换为其他类型

隐式类型转换

C的整形算术运算总是至少以缺省整型类型的精度来进行的

为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升

int main() { char a = 5; char b = 126; char c = a + b; printf("%d\n", c); return 0; } //打印-125

整型提升时按照变量的数据类型的符号位来提升的

负数的整形提升
char c1 = -1;

变量c1的二进制位(补码)中只有8个比特位:11111111

因为char为有符号的char,所以整形提升的时候,高位补充符号位,即为1,提升之后的结果是:11111111111111111111111111111111

正数的整形提升

char c2 = 1;

变量c2的二进制位(补码)中只有8个比特:00000001

因为char是有符号的char,所以整形提升的时候,高位补充符号位,即为0,提升之后的结果是:00000000000000000000000000000001

无符号整形提升

高位补0

算术转换

如果某个操作数的类型在上面这个列表中排名较低,那么首先要转换为另外一个操作数的类型后执行运算

操作符的属性

复杂表达式的求值有三个影响的因素

1.操作符的优先级

2.操作符的结合性

3.是否控制求值顺序

先考虑优先级,如果两者的优先级相同,再考虑他们的结合性

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/31 16:01:21

计算机毕业设计springboot数据结构课程在线答疑系统 基于 SpringBoot 的“数据结构”智慧答疑与学习互助平台 SpringBoot 驱动的数据结构课程实时问答与资源分享系统

计算机毕业设计springboot数据结构课程在线答疑系统c6m73f7x &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。在线学习已经成为高校教学的新常态&#xff0c;但数据结构这门“抽象…

作者头像 李华
网站建设 2025/12/31 20:10:01

视频缺了BGM总觉单调?这些免费配乐让你的画面瞬间拥有情绪

《2025年视听内容情绪感知与音乐影响研究报告》证实&#xff1a;合适的背景音乐能将观众对视频内容的情感共鸣强度提升近70%&#xff0c;且信息记忆留存率提高超过五成。当你的视频只有画面和对白时&#xff0c;那种情感维度的单薄感就像看无声电影——情节清晰可见&#xff0c…

作者头像 李华
网站建设 2025/12/31 20:09:59

怎么在线压缩图片大小?在线压缩图片大小教程

日常办公传文件、社交平台发照片、网站上传素材时&#xff0c;图片体积过大往往会带来诸多困扰 —— 传输耗时久、上传受限制、占用存储空间多。其实&#xff0c;借助专业的在线图片处理工具&#xff0c;无需安装软件&#xff0c;就能快速优化图片大小&#xff0c;还能最大程度…

作者头像 李华
网站建设 2026/1/4 8:02:45

100+套大数据可视化大屏模板集合

100套大数据可视化模板 今天给大家分享一个开源的大数据可视化大屏模板集合&#xff0c;包含100多套行业级的大数据可视化HTML5模板。该项目由iGaoWei收集整理并开源分享&#xff0c;涵盖了政务、交通、金融、医疗、教育等多个行业领域&#xff0c;为开发者提供了丰富的大数据…

作者头像 李华
网站建设 2025/12/31 23:26:13

从需求到落地的全记录:如何找到靠谱的文化墙设计定制服务

上个月&#xff0c;公司老板把一面空荡荡的走廊白墙交给我&#xff0c;丢下一句:“把它做成能体现我们企业灵魂的文化墙&#xff0c;要专业&#xff0c;要有气势&#xff0c;预算要合理月底我要看到效果。“那一刻&#xff0c;我整个人是的。文化墙?不就是贴点海报和标语吗?但…

作者头像 李华