C语言——操作符(1)

C语言中为了方便运算,提供了一系列的操作符。操作符也叫运算符。

1.算数操作符

1,1“+”和“-”

  • “+”和 “-”用来完成加法和减法。
  • “+”和 “-” 都是有2个操作数的,位于操作符两端的就是它们的操作数,这种操作符也叫双目操作符。

1.2“*”

运用“*”来完成乘法。

1.3“/”

运用“/”来完成除法。

如果“/”的两端是整数,那么得到的结果也是正数,小数部分会被舍弃;

如果想要结果保留小数部分,那么“/”的两端必须至少有一个浮点数。

1.4“%”

“%” 表示求模运算,即返回两个整数相除的余值。这个运算符只能用于整数,不能用于浮点数。

负数求模的规则是:结果的正负号由第⼀个运算数的正负号决定。

2.赋值操作符

在变量创建的时候给⼀个初始值叫初始化,在变量创建好后,再给⼀个值,这叫赋值。

赋值操作符 “=”是⼀个随时可以给变量赋值的操作符。

2.1 连续赋值

赋值操作符也可以连续赋值,如:

不过这样写的代码不易解读,所以建议还是拆分来写,便于理解。

2.2 复合赋值符

在写代码的时候,我们经常可能对⼀个数进行自增、自减的操作,如:

这样的代码C语言提供了更简便的写法:

像“+=”这样的操作符称为复合赋值符,这些赋值符还有:

3.单目操作符

前面介绍的操作符都是双目操作符,有2个操作数的。C语言中还有⼀些操作符只有⼀个操作数,被称

为单目操作符。 ++、--、+(正)、-(负) 就是单目操作符的。

3.1“++”和“--”

    ++是⼀种自增的操作符,又分为前置++和后置++,--是⼀种自减的操作符,也分为前置--和后置--。

3.1.1 前置++

   计算口诀:先加1,后使用。

   原来是10,先+1,后a变成了11,再使用就是赋值给b,b得到的也是11,所以计算结束后,a和b都是11。

3.1.2 后置++

计算口诀:先使用,后加1。

a原来是10,先使用,就是先赋值给b,b得到了10,然后再+1,然后a变成了11,所以直接结束后a是11,b是10。

3.1.3 前置--

计算口诀:先减1,后使用。

3.1.4 后置--

计算口诀:先使用,后减1。

3.2“+”和“-”

这里的“+”是正号,“-”是负号,都是单目操作符。

运算符 “+” 对正负值没有影响,是⼀个完全可以省略的运算符,但是写了也不会报错。

运算符 - 用来改变⼀个值的正负号,负数的前面加上 “-” 就会得到正数,正数的前面加上 “-”会得到负数。

3.3 sizeof

sizeof 是⼀个关键字,也是操作符,专门是用来计算sizeof操作符数的类型长度的,单位是字节。
sizeof 操作符的操作数可以是类型,也可是变量或者表达式。
sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的。
sizeof 后边的表达式是不真实参与运算的,根据表达式的类型来得出大小。
sizeof 的计算结果是 size_t 类型的。
如下:
#include <stdio.h>
int main()
{
 int a = 10;
 printf("%zd\n", sizeof(a));
 printf("%zd\n", sizeof a);//a是变量的名字,可以省略掉sizeof后边的()
 printf("%zd\n", sizeof(int));
 printf("%zd\n", sizeof(3 + 3.5));
 return 0;
}

运行结果如下:

sizeof中表达式不计算

//测试:sizeof中表达式不计算
#include <stdio.h>
int main()
{
 short s = 2;
 int b = 10;
 printf("%d\n", sizeof(s = b+1));
 printf("s = %d\n", s);
 return 0;
}

运行结果为:

sizeof 在代码进行编译的时候,就根据表达式的类型确定了,而表达式的执行却要在程序运行期间才能执行,在编译期间已经将sizeof处理掉了,所以在运行期间就不会执行表达式了。

3.4强制类型转换

语法如下:

(类型)                                                                                                                            

示例如下:

为了消除这个警告,我们可以采用强制类型转换:

俗话说:强扭的瓜不甜我们使用强制类型转换都是万不得已的时候使用,如果不需要强制类型转化 就能实现代码,这样自然更好的。

4.逗号表达式

表现形式:exp1,exp2,exp3,...expN

规则:用逗号隔开的多个表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

5.关系操作符

C语言中用于比较的表达式称为“关系表达式”,里面使用的运算符就称为关系运算符。主要有下面6个:

> : 大于运算符               a>b;

< : 小于运算符                a<b

>= : 大于等于运算符       a>=b

<= : 小于等于运算符       a<=b

== : 相等运算符               a==b

!= : 不相等运算符             a!=b

关系表达式通常返回0或1。

在C语言中,0表示假;非0表示真。比如20>12 返回的值为非0;20<12,返回的值为0。

关系表达式常用于if语句和循环语句。

如:

注意:

1.相等运算符“==”与赋值运算符“=”是两个不同的运算符,不能把它们弄混淆。如:

这个示例原意是x == 3,但是不小心写成x = 3了。这式子表示的是给x赋值3,它的返回值为3,所以总是表达为真。让代码陷入死循环。

为了避免这种错误,我们应该把变量写在等号的右边。

这样的话,如果把 == 输成 = 时,编译器会报错。

2.多个运算符不宜连用

上面示例中,连续使用两个小于运算符。这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算,所以实际执行的是下面的表达式。

上面式子中, i < j 返回 0 或 1 ,所以最终是 0 或 1 与变量 k 进行比较。如果想要判断变量 j的值是否在 i 和 k 之间,应该使用下面的写法

6.条件操作符

条件操作符也叫作三目操作符,需要接受三个操作数,其形式如下:

条件操作符的运算逻辑是先判断exp1是否为真,如果为真,计算exp2;如果为假,计算exp3。计算的结果为整个式子的结果。

7.逻辑操作符

逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符:

!:逻辑取反操作符(改变单个表达式的真假)

&&:与操作符(两侧表达式都为真,则为真,否则为假)

|| :或运算符(两侧表达式至少有一个为真,则为真,否则为假)

7.1 !:逻辑取反操作符

表达形式为:

如果 flag 为真, !flag 就是假,如果 flag 为假, !flag 就是真

所以上面的代码的意思就是 flag 为假,执行if语句中的代码。

7.2 &&:与操作符

表达形式为:

这里表达的意思就是month既要大于等于3,又要小于等于5,必须同时满足。

7.3 ||:或运算符

表达形式为:

C语言逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。

如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。

对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执行。

对于 || 操作符的左操作数的结果不为0时,就无需执行右操作数。

今天就整理总结这些操作符,剩下的操作符(移位操作符,位操作符,下标引用操作符,函数调用操作符...)后面会再次进行总结的。
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值