C语言——运算符(学习分享)(一)

简介: C语言——运算符(学习分享)(一)

一、运算符


C语言中用运算符表示算数运算,跟数学中的运算大致相同,只不过由于C数据类型的限制有了些许的调整,下面介绍一下基本运算符以及其他运算符(C没有指数运算符,但是C的标准数学库提供了pow()函数用于指数运算。例如pow(2,3)表示返回2的3次幂(即为8))


二、基本运算符


2.1赋值运算符:=

2.1.1赋值

C语言中“=”不是“等于”、“相等”的意思,它是一个赋值运算符。

比如下面的赋值表达式语句:

digit = 2022;

意思是把2022这个数赋值给变量digit。等号(=)左侧是一个变量名,右侧是赋给这个变量的值。读作“把值2022赋给变量digit”,而不是“digit等于2022”。


上面这个例子看上去读作什么没有多少区别,但是看下面这个例子:


i = i + 1;//另一种写法:i += 1

在数学上这个表达式完全行不通,但是在C赋值表达式语句中,这非常合理。如何解释呢?

→先找出变量i的值,把这个值+1,再把新值赋给变量i,此时变量i存储的值就从比原来大1了


2.1.2左值和右值(简单讲)

C中这样的语句是无效的↓

2022 = digit
C语言中,=左侧必须是一个可修改的左值(变量名或指针),这样才可以引用一个存储位置
右值是指能赋值给左值的量,但是它本身不是左值


在这个例子中,digit是变量;而2022是字面常量,本身就是一个确定的值,错的显而易见


2.2加法、减法运算符:+ -

+-的运算对象可以是常量,也可以是变量

加(减)法运算符+(-):跟数学中的加(减)法一样,“+”(“-”)表示其两侧是值相加(减)

比如↓

printf("%d",2+8);//打印的是10,不是表达式2+8
int a = 1;
int b = 20;
int n = a + b;
printf("%d",n);//打印的值是21
//在这里a,b,n都是可修改的左值,而表达式a + b是一个右值


减法同理,这里就不多赘述了~

+和-运算符都是二元运算符(二元:即运算符需要两个运算对象)


2.3符号运算符(+和 -)

减号(-)还可以改变or标明一个值的符号

num = -5;
num2 = -num1  //最后num2的值是5


“-”在这样的用法中是一元运算符,只需要一个运算对象

PS:

num_s = +6//没必要这样写,但是编译器也不会报错

2.4乘法、除法运算符:* /

乘法

*表示乘法。乘法运算符跟数学中的乘法一样,“*”表示其两侧是值相乘


除法

C中用/表示除法。/左侧的值是被除数,右侧的则是除数

与数学中除法不同,由于C中数据类型的不同,除法可分为整数除法和浮点数(即小数)除法。

例1:

int a = 6;
int b = 2;
printf("%d",a/b); //非常常规,打印结果为3


例2:

int num1 = 9;
int num2 = 2;
printf("%d",num1/num2);  //打印结果是4
//因为这里num1和num2都是int类型(整型) 
//整数是没有小数部分的数
//因此在C中,整数除法结果如果有小数,那么小数部分会被丢弃(不是四舍五入),只保留整数部分
//(这个过程叫做“截断”)


例三:

double n = 20.6;
double m = 3;
printf("%lf",n/m);//double对应%lf
//打印结果是6.866667
//C中输出double类型或float类型时默认输出6位小数(不足六位用0补齐,超过六位按四舍五入截断)


这里补充一点,虽然默认输出6位小数,但如果要指定输出n位小数,那么可以用%.nlf的格式(对于float类型则是%.nf)。其中n为数字。

例如,想要只输出3位小数:

printf("%.3lf\n", n/m);
//输出结果就变成了6.867


例四:

整数和浮点数混和运算的结果是浮点数

double k = 6.9;
int j = 3;
printf("%d",sizeof(k/j) );
//打印结果为8,即double类型的字节长度
//sizeof运算符在下面的3.1中会讲
printf("%lf",k/j);
//打印结果为2.300000


2.5优先级

执行各种操作的顺序很重要

思考一下,下面这个表达式的结果是什么呢

sum = 2.0 + 16*(9/6)

要知道,先运算2.0 + 16再*(9/6),跟先算16*(9/6)再+2结果是不一样的。

因此C中明确规定了运算符的优先顺序,并以此来决定执行各种操作的顺序。(→与数学中加减乘除的执行顺序一样)

相关文章
|
8天前
|
C语言
c语言运算符
C的运算符有以下几种: 算术运算符:+、-、*、/、% 结合方向自左向右 关系运算符:>、<、==、>=、<=、!= 逻辑运算符:!、&&、|| 位运算符<<、>>、~、|、^、& 赋值运算符:=及符号扩展赋值运算符(+=、-=、*=、/=) 条件运算符:? : 逗号运算符:, 指针运算符:*、& 求字节运算符:sizeof 强制类型转换运算符:((类型)) 分量运算符:.、-> 下标运算符:[]
21 4
|
3月前
|
存储 C语言
C语言数据类型、变量和运算符以及printf相关问题
C语言数据类型、变量和运算符以及printf相关问题
|
2月前
|
C语言
C语言判断和运算符联系
在 C 语言中,判断与运算符紧密相关,主要体现在条件表达式的使用上。
194 87
|
2月前
|
安全 C语言
C语言运算符的使用注意点
在C语言中,正确使用运算符能提升代码的可读性和效率。本文介绍了八大注意事项:运算符优先级和结合性影响运算顺序;自增/自减运算符分前缀和后缀形式;逻辑运算符有短路特性;位运算符直接操作二进制位需谨慎;条件运算符简洁但避免复杂嵌套;类型转换避免意外结果;使用括号明确运算顺序。掌握这些要点有助于编写更安全高效的代码。
194 72
|
1月前
|
存储 Java C语言
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
39 3
|
1月前
|
C语言
C语言条件运算符详解
C语言条件运算符,也称为三元运算符,是一种简化if-else语句的表达式,形式为:条件?表达式1:表达式2。当条件为真时,计算并返回表达式1的值;否则计算并返回表达式2的值。它可用于快速实现简单的条件分支逻辑。
|
2月前
|
安全 C语言
在C语言中,正确使用运算符能提升代码的可读性和效率
在C语言中,运算符的使用需要注意优先级、结合性、自增自减的形式、逻辑运算的短路特性、位运算的类型、条件运算的可读性、类型转换以及使用括号来明确运算顺序。掌握这些注意事项可以帮助编写出更安全和高效的代码。
49 4
|
1月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
15 0
|
2月前
|
程序员 C语言
【C语言基础考研向】06运算符与表达式
本文介绍了C语言中的运算符分类、算术运算符及表达式、关系运算符与表达式以及运算符优先级等内容。首先概述了13种运算符类型,接着详细说明了算术运算符的优先级与使用规则,以及关系运算符和表达式的真假值表示,并给出了C语言运算符优先级表。最后附有课后习题帮助巩固理解。
105 10
|
2月前
|
存储 编译器 C语言
【C语言基础考研向】07逻辑运算符与赋值运算符
本文介绍了C语言中的逻辑运算符与逻辑表达式、赋值运算符以及求字节运算符`sizeof`。逻辑运算符包括`!`(逻辑非)、`&&`(逻辑与)和`||`(逻辑或),其优先级规则与数学运算符类似。通过示例展示了如何用这些运算符判断闰年及逻辑非的运算方向。此外,文章还解释了左值与右值的概念及其在赋值运算中的应用,并介绍了复合赋值运算符的使用方法,如加后赋值`+=`和乘后赋值`*=`。最后,通过`sizeof`运算符示例展示了如何获取变量的字节大小。