c语言操作符(下)



目录

​编辑

逗号表达式

下标访问[]

函数调⽤()

sizeof

结构成员访问操作符

结构体

结构体声明

[直接访问 .成员名](#直接访问 .成员名)

[间接访问 结构体指针->成员名](#间接访问 结构体指针->成员名)


逗号表达式

exp1, exp2, exp3, ...expN

运算规则 :从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果。

如图c的值为逗号表达式中b=a+1的结果。

下标访问[]

\] 下标引⽤操作符 **操作数:⼀个数组名 + ⼀个索引值** int arr\[10\]; arr\[6\] = 10; 例子中\[ \]的两个操作数是arr和6 ## 函数调⽤() 函数调⽤操作符 接受**⼀个** 或者**多个操作数** :**第⼀个操作数是函数名** ,剩余的操作数就是传递给函数的**参数**。 ## sizeof sizeof是操作符,不是函数 如图,使用sizeof可以不加() ![](https://file.jishuzhan.net/article/1758678234527961089/17cdf000ce7e8206ee2c9f05ca7db500.webp) ## 结构成员访问操作符 ### 结构体 结构体为自定义类型,用来描述复杂对象,构成结构体的每个成员可以是不同的变量类型,如标量、指针、数组等。 #### 结构体声明 struct tag { member - list;//成员列表,可以1个或多个成员 }variable - list;//变量列表 ### 直接访问 .成员名 如图初始化结构体**stu** 使用**直接** 结构体访问操作符**.成员名**可以不按照顺序初始化 打印结构体成员内容: **结构体变量.成员** ![](https://file.jishuzhan.net/article/1758678234527961089/449a72dbea3662b2250e44c2be36a107.webp) ### 间接访问 结构体指针-\>成员名 打印结构体成员内容: **结构体指针-\>成员** ![](https://file.jishuzhan.net/article/1758678234527961089/a5edca4796b8542e93514f1a511d94a5.webp) ## 操作符的属性:优先级、结合性 优先级:**相邻** 操作符,**优先级高的先执行。** 结合性:当**优先级一样** 时,**大部分是左结合**(从左向右执行) • 圆括号( () ) • ⾃增运算符( ++ ),⾃减运算符( -- ) • 单⽬运算符( + 和 - ) • 乘法( \* ),除法( / ) • 加法( + ),减法( - ) • 关系运算符( \< 、 \> 等) • 赋值运算符( = ) 由于**圆括号的优先级最⾼**,可以使⽤它改变其他运算符的优先级。 ## **整形提升** ### **意义** **方便cpu运行计算,** 因为cpu一般是计算**int** 的字节长度。因此**两个char或short** 类型相加都必须先转换为**int或unsigned int,**然后才能到cpu中计算 ### 方法 1.**有符号整数** 提升按照变量的数据类型的**符号位**来提升 2.**无符号整数** 提升,高位**补0** #### **举例解释** char类型的取值范围-128\~127 char占用1个字节,1字节=8bit位 vs中char默认为有符号的char 000000000000000000000000**01111101** char c1 = 125; **01111101** c1 发生截断 char c2 = 10; 000000000000000000000000**00001010** 发生截断 **00001010** c2 char c3 = c1 + c2; 整型提升 000000000000000000000000**01111101** c1 000000000000000000000000**00001010** c2 000000000000000000000000**10000111** c3 发生截断 **10000111** c3 整型提升 111111111111111111111111**10000111** c3的补码 100000000000000000000000**01111000** c3的反码 100000000000000000000000**01111001** c3的原码 -121

相关推荐
饕餮争锋7 分钟前
org.slf4j.MDC介绍-笔记
java·开发语言·笔记
半部论语10 分钟前
jdk多版本切换,通过 maven 指定编译jdk版本不生效,解决思路
java·开发语言·maven·intellij-idea
阿沁QWQ12 分钟前
单例模式的两种设计
开发语言·c++·单例模式
Python ml20 分钟前
Tomcat与纯 Java Socket 实现远程通信的区别
java·开发语言·tomcat
qwertyuiop_i24 分钟前
pe文件二进制解析(用c/c++解析一个二进制pe文件)
c语言·c++·pe文件
说码解字26 分钟前
ExoPlayer 如何实现音画同步
开发语言·学习·音视频
冼紫菜34 分钟前
如何在 CentOS 7 虚拟机上配置静态 IP 地址并保持重启后 SSH 连接
linux·开发语言·centos·ssh
陈奕昆43 分钟前
五、【LLaMA-Factory实战】模型部署与监控:从实验室到生产的全链路实践
开发语言·人工智能·python·llama·大模型微调
明月看潮生1 小时前
青少年编程与数学 02-019 Rust 编程基础 10课题、函数、闭包和迭代器
开发语言·青少年编程·rust·编程与数学
明月看潮生1 小时前
青少年编程与数学 02-019 Rust 编程基础 09课题、流程控制
开发语言·算法·青少年编程·rust·编程与数学