news 2026/9/13 19:24:26

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/9/12 21:07:12

【毕业设计】基于python的运维管理平台的设计与实现

&#x1f49f;博主&#xff1a;程序员陈辰&#xff1a;CSDN作者、博客专家、全栈领域优质创作者 &#x1f49f;专注于计算机毕业设计&#xff0c;大数据、深度学习、Java、小程序、python、安卓等技术领域 &#x1f4f2;文章末尾获取源码数据库 &#x1f308;还有大家在毕设选题…

作者头像 李华
网站建设 2026/9/13 0:00:05

苹果 iOS 开发真正复杂的不是写代码这方面,是证书、构建、上架

刚开始接触 iOS 开发时&#xff0c;很容易把注意力全部放在 Swift、UIKit 或 SwiftUI 上。界面写得是否优雅、动画是否流畅&#xff0c;往往被视为“技术能力”的核心体现。但当项目进入到真实交付阶段&#xff0c;尤其是多人协作、跨端开发或需要频繁发布时&#xff0c;会逐渐…

作者头像 李华
网站建设 2026/9/13 7:22:30

FSMC-TFTLCD显示实验(5):显示一个字符串的函数传递过程追踪~

改显示颜色为红色&#xff1a;程 序中定义了这几种颜色可选&#xff1a;*****************看一下这个函数是怎样把csdn.net这几个字符串显示到LCD上的。LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,12,"CSDN.NET!");看一下这个函数的原型&#xff1a…

作者头像 李华
网站建设 2026/9/13 6:02:28

基于Android的课程考勤及作业提交系统

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

作者头像 李华
网站建设 2026/9/12 2:37:35

飞易通蓝牙与Wi-Fi模块:医疗产品无线连接的全能助手

一、引言&#xff1a;医疗产品无线连接的新挑战 随着医疗技术的不断进步&#xff0c;医疗产品对无线连接的需求日益增长。从呼吸机的远程监控到监护仪的实时数据传输&#xff0c;无线连接技术已成为提升医疗服务质量和效率的关键因素。飞易通&#xff0c;作为物联网无线连接解…

作者头像 李华
网站建设 2026/9/12 10:06:24

你的音效素材库该升级了!这个网站的分类细到超出你想象

你是否还在为寻找一个特定音效而翻遍整个素材库&#xff1f;明明只需要“中世纪城堡木门缓慢开启的吱呀声”&#xff0c;却不得不在上百个笼统的“开门声”里逐个试听&#xff1f;这种大海捞针般的体验&#xff0c;正在无形中消耗创作者的灵感与效率。根据《2025年全球数字创意…

作者头像 李华