news 2026/4/23 17:33:22

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进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 15:53:22

通用 AI · Universal AI 2

DAY 4对第一个Universal App 的理解和规划名字&#xff1a;MomentTasker核心功能1.打印/记录功能简单日记记录&#xff08;类似微博&#xff09;照片/音频瞬间捕捉时间地点自动标记每日生成明日的TO DO LIST&#xff08;包含时间、地点&#xff09;&#xff0c;到时间提醒2.简单…

作者头像 李华
网站建设 2026/4/23 11:33:17

计算机毕业设计springboot少儿美术培训机构教培管理系统 基于SpringBoot的少儿美术教培机构综合管理平台 SpringBoot驱动的儿童美术培训中心教务运营系统

计算机毕业设计springboot少儿美术培训机构教培管理系统93gv08oa &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。当“双减”把学科培训推向边缘&#xff0c;艺术教育反而成为家长…

作者头像 李华
网站建设 2026/4/21 7:45:12

FlutterOpenHarmony动画效果实现指南

前言 动画效果是提升应用用户体验的重要手段&#xff0c;它可以让界面交互更加流畅自然&#xff0c;引导用户注意力&#xff0c;提供操作反馈。在笔记应用中&#xff0c;页面切换、列表项展开、按钮点击等场景都可以通过动画来增强视觉效果。本文将详细介绍如何在Flutter和Ope…

作者头像 李华
网站建设 2026/4/23 13:16:08

关于 iphone抓包软件,我是在什么时候真正意识到选好工具很重要

很长一段时间里&#xff0c;我对 iphone 抓包软件的理解都停留在“能看到请求就够了”。 只要能把接口跑通、参数对得上&#xff0c;抓包这件事本身并不会引起太多关注。 直到有一次线上问题排查&#xff0c;把我从这种想法里拽了出来。 一个看起来和抓包关系不大的问题 问题发…

作者头像 李华
网站建设 2026/4/23 13:14:50

AI时代大模型知识库系统管理终极指南

以 AI 为先的客服模式优势显著&#xff1a;全天候服务、多语言支持、大幅节省时间&#xff0c;以及为客户提供快速高效的问题解决方案。但在每一次出色的 AI 驱动客服体验背后&#xff0c;都有一个无名英雄&#xff1a;知识管理。 一套全面、结构清晰的知识管理系统&#xff0…

作者头像 李华
网站建设 2026/4/23 11:06:57

高校学子社会实践智慧管理系统的设计与实现

文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 &#x1f49b;博主介绍&#…

作者头像 李华