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

相关推荐
Js_cold3 分钟前
Verilog局部参数localparam
开发语言·fpga开发·verilog
Acrelhuang5 分钟前
小小电能表,如何撬动家庭能源革命?
java·大数据·开发语言·人工智能·物联网
头发还没掉光光14 分钟前
Linux网络初始及网络通信基本原理
linux·运维·开发语言·网络·c++
疏狂难除14 分钟前
spiderdemo第22题与webassembly的跨域
开发语言·javascript·爬虫·rust·wasm·mitmproxy
WenGyyyL22 分钟前
微信小程序开发——第二章:微信小程序开发环境搭建
开发语言·python·微信小程序
循环过三天26 分钟前
3.2、Python-元组
开发语言·python
一抓掉一大把33 分钟前
RuoYI框架.net版本实现Redis数据隔离
java·开发语言
m0_748248021 小时前
揭开 C++ vector 底层面纱:从三指针模型到手写完整实现
开发语言·c++·算法
海盗猫鸥1 小时前
「C++」string类(2)常用接口
开发语言·c++
序属秋秋秋1 小时前
《Linux系统编程之开发工具》【实战:倒计时 + 进度条】
linux·运维·服务器·c语言·c++·ubuntu·系统编程