🍉运算符
2021-1-19
| 2023-8-2
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
 
 
notion image
 

运算符优先级

notion image
notion image
 
 

一元和二元运算符

notion image
 

赋值运算符:=

赋值表达式语句的目的是把值储存到内存位置上。用于储存值的数据存储区域统称为数据对象。C 标准只有在提到这个概念时才会用到对象这个术语。使用变量名是标识对象的一种方法。除此之外,还有其他方法,例如,可以指定数组的元素、结构的成员,或者使用指针表达式(指针中储存的是它所指向对象的地址)。
左值(lvalue)是 C 语言的术语,用于标识特定数据对象的名称或表达式。因此,对象指的是实际的数据存储,而左值是用于标识或定位存储位置的标签。
对于早期的C语言,提到左值意味着: 1.它指定一个对象,所以引用内存中的地址
2.它可用在赋值运算符的左侧
但是后来,标准中新增了const限定符。用const创建的变量不可修改。因此,const标识符满足上面的第1项,但是不满足第2项。一方面C继续把标识对象的表达式定义为左值,一方面某些左值却不能放在赋值运算符的左侧。有些左值不能用于赋值运算符的左侧。此时,标准对左值的定义已经不能满足当前的状况。 为此,C标准新增了一个术语:可修改的左值,用于标识可修改的对象。所以,赋值运算符的左侧应该是可修改的左值。当前标准建议,使用术语对象定位值更好。
C的基本赋值运算符有些与众不同,许多其他语言都会回避该程序中的三重赋值,但是C完全没问题。
 
 

除法运算符:/

C使用符号/来表示除法。/左侧的值是被除数,右侧的值是除数。 整数除法和浮点数除法不同。浮点数除法的结果是浮点数,而整数除法的结果是整数。在C语言中,整数除法结果的小数部分被丢弃,这一过程被称为截断(truncation)。
整数除法会截断计算结果的小数部分,不会四舍五入结果。混合整数和浮点数计算的结果是浮点数。实际上,计算机不能真正用浮点数除以整数,编译器会把两个运算对象转换成相同的类型。
求模运算符%用于整数运算,给出其左侧整数除以右侧整数的余数。
 
C99标准以前,C语言给语言的实现者留有一些空间,让他们来决定如何进行负数的整数除法。一种方法是,舍入过程采用小于或等于浮点数的最大整数。另一种舍入方法是直接丢弃小数部分,这种方法被称为“趋零截断”。在C99以前,不同的实现采用不同的方法。但是C99规定使用趋零截断。。
 

递增运算符:++

递增运算符执行简单的任务,将其运算对象递增1。该运算符以两种方式出现。第1种方式,++出现在其作用的变量前面,这是前缀模式;第2种方式,++出现在其作用的变量后面,这是后缀模式。
notion image
递增运算符和递减运算符都有很高的结合优先级,如果n++是表达式的一部分,可将其视为“先使用n,再递增”;而++n则表示“先递增n,再使用”。
 
 

sizeof运算符和size_t类型

sizeof运算符以字节为单位返回运算对象的大小。运算对象可以是具体的数据对象或类型。如果运算对象是类型,则必须用圆括号将其括起来
C 语言规定,sizeof 返回 size_t 类型的值。这是一个无符号整数类型,但它不是新类型,是语言定义的标准类型。C有一个typedef机制,允许程序员为现有类型创建别名。 C99 做了进一步调整,新增了%zd 转换说明用于 printf()显示 size_t 类型的值。如果系统不支持%zd,可使用%u或%lu代替%zd。
 
 

代替逻辑运算符

C99标准新增了可代替逻辑运算符的拼写,它们被定义在ios646.h头文件中。如果在程序中包含该头文件,便可用and代替&&、or代替||、not代替!
notion image
  • C
  • *修饰符表达式和语句
    目录