数学计算类操作符 和 算术类型转换

目录

1.数学算术操作符

1.1 双目算术操作符:+、-、*、/、%

1.1.1 加( + )和减( - )

1.1.2 乘( * )

1.1.3 除( / )

1.1.4 取余( % )

1.2 赋值操作符( = )

1.2.1 作用:初始化、赋值

1.2.2 连续赋值

1.2.3 算术复合赋值符:+=、-=、*=、/=、%=

1.3 单目算术操作符:++、--、+、-

1.3.1 ++和-- 

1.3.2 正和负(+、-)

2. 类型转换

2.1 纯算术的类型转换(未赋值时)

2.2 隐式类型转换

2.2.1 形式1:“整型变量 = 浮点型运算结果” 

2.2.2 形式2:“浮点型变量 = 整型运算结果” 

2.3 显式类型转换

2.3.1 强制类型转换操作符:()

2.3.2 作用

2.3.3 关于打印的类型转换


1.数学算术操作符

在写代码时候,⼀定会涉及到计算。 C语⾔中为了⽅便运算,提供了⼀系列操作符,其中有⼀组操作符叫:算术操作符。分别是: + - * \ % 。

1.1 双目算术操作符:+、-、*、/、%

:操作符也被叫做:运算符,是不同的翻译,意思是⼀样的。

1.1.1 加( + )和减( - )

+ 和 - ⽤来完成加法和减法。 + 和 - 都是有2个操作数的,位于操作符两端的就是它们的操作数,这种操作符也叫双目操作符。(下面的运算符也是双目的,我就不重复了)

1.1.2 乘( * )

运算符 * ⽤来完成乘法。

1.1.3 除( / )

运算符 / ⽤来完成除法。

特点1:C 语⾔⾥⾯的整数除法是整除,只会返回整数部分丢弃小数部分。(这与等号左边要接收的变量的变量类型无关)

特点2:如果希望得到浮点数的结果,操作数中必须至少有⼀个浮点数,这时 C 语⾔就会进⾏浮点数除法

1.1.4 取余( % )

运算符 % 表⽰求模(取余)运算。

特点1:这个运算符只能用于整数,不能用于浮点数

特点2:负数求模的规则是,先把运算当成正数取余,最后添上正负号,结果的正负号由第一个运算数的正负号决定

上⾯⽰例中,第⼀个运算数的正负号( 11 或 -11 )决定了结果的正负号。


1.2 赋值操作符( = )

赋值操作符 = 是⼀个随时可以给变量赋值的操作符,它也是双目运算符。

1.2.1 作用:初始化、赋值

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

1. int a = 100;  // 这叫初始化

2. a = 200;     // 这叫赋值

1.2.2 连续赋值

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

特点1:赋值运算符的逻辑是右边表达式计算的结果赋予给左边的接收变量。所以当连续赋值时,也是从右向左依次赋值的。

特点2:赋值运算符(=)并不是数学上的等于号,所以当连续赋值时,只允许最右边的表达式可运算,左边的一律都是接收变量

补充:“赋值”是一种动作,并且规定把右边的值赋给左边;“等于”是一种逻辑判断,只有逻辑运算符(==)才是数学上的等于号。

1.2.3 算术复合赋值符:+=、-=、*=、/=、%=

在写代码时,我们经常可能对⼀个数进⾏⾃增、⾃减等操作,如下:

a = a + 3;
a = a - 2;
a = a * 5;
a = a / 6;
a = a % 3;

我们可以用复合赋值符可以改造上面的代码,如下:

a += 3;
a -= 2;
a *= 5;
a /= 6;
a %= 3;

复合赋值符左右各一个操作数,所以它也是双目运算符。

运用复合赋值符,我们可以减少代码的字数,从而减少代码存储所需要的空间(这也是复合赋值符被创造的原因,因为早期计算机的内存空间非常少)

1.3 单目算术操作符:++、--、+、-

前⾯介绍的操作符都是双⽬操作符,有2个操作数的。C语⾔中还有⼀些操作符只有⼀个操作数,被称 为单⽬操作符。 ++、--、+(正)、-(负) 就是单目操作符的。

1.3.1 ++和-- 

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

a1. 前置++

int a = 10;
int b = ++a;//++的操作数是a,是放在a的前⾯的,就是前置++
printf("a=%d b=%d\n",a , b);

 先+1,后使⽤。结果如下:

a原来是10,从右边开始运算,a先自增(+1)变成了11;再向左赋值给b,b得到的也是11。所以计算技术后,a和b都是11

上面的代码相当于下面这样:

a2. 后置++

int a = 10;
int b = a++;//++的操作数是a,是放在a的后⾯的,就是后置++
printf("a=%d b=%d\n",a , b);

先使⽤,后+1。结果如下:

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

相当于这样的代码:

b1. 前置--

(++和--的规则是一样的,我就不重复这么多了)

b = --a;

等同于:
a = a - 1;
b = a;

b2. 后置--

b = a--;
等同于:
b = a;
a = a - 1;

1.3.2 正和负(+、-)

这⾥的+是正号,-是负号,都是单⽬操作符。

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

int a = +10; 等价于 int a = 10;

(-):运算符 - ⽤来改变⼀个值的正负号,负数的前⾯加上 - 就会得到正数,正数的前⾯加上 - 会得到负数。

2. 类型转换

2.1 纯算术的类型转换(未赋值时)

先说结论:在算术的表达式中,操作数同时存在整数和浮点数时计算结果是浮点数。(即整数会自动转化为浮点数)

例子:

无论算术表达式中有多少个整数,只要有一个操作数是浮点数,那么结果是浮点数。

但要是把算术表达式的结果赋值给其他变量,情况可就不一样了。

2.2 隐式类型转换

2.2.1 形式1:“整型变量 = 浮点型运算结果” 

结论:浮点型运算结果是浮点数,赋值前先把结果的小数部分去除,再把整数部分赋值给变量。

例子: 

1.5 * 3的算术结果是4.5,由于a是整型变量,所以只把整数部分的4赋值给了a。

2.2.2 形式2:“浮点型变量 = 整型运算结果” 

结论:整型运算结果是整数,赋值前给算术结果补上精度个小数点0,再把补小数0后的结果赋值给浮点型变量。

例子:

12 / 10的算术结果是1,由于float的精度是6位小数,所以在1后面补上了6个小数点0,最后把1.000000赋值给了b。

2.3 显式类型转换

2.3.1 强制类型转换操作符:()

()是⼀种特殊的操作符,它能对操作数进行强制类型转换,语法形式很简单,形式如下:

1.  (数据类型)操作数;

2.3.2 作用

结论:算术表达式中,()至多会用于将浮点数强制转化为整数

前面 “纯算术的类型转换” 说过,只要存在浮点数就能把结果算成小数,所以把 整数强制转换成浮点数 没什么意义。真把整型强制转换成浮点型,也就只是添加上精度个小数点0

让我们看看强制转换和不强制转换的区别:

第1个表达式中,算术的结果是6.6 * 4等于26.4,进行隐式类型转换后变成了26;

第2个表达式中,对6.6强制转换成6,则算术的结果是6 * 4等于24,所以结果是24;

从显式类型转换的角度看待隐式类型转换:

其实这就相当于将右边整个算术表达式的结果进行强制类型转换

比如上边的“int a = 4.5 * 3”,这相当于“int a = (int) (4.5 * 3)”;再比如“float b = 12 / 10”,这就相当于“float b = (float) (12 / 10)”。

2.3.3 关于打印的类型转换

先说结论:不强制类型转换,就不能打印不相符类型的变量。

 ### 1. 用%f打印整型:永远是0.00……

### 2. 用%d打印浮点型:都是很奇怪的大型数字

### 加上强制类型转换,我们才能打印不相符类型的变量:


关于数字运算和类型转换的内容到这里就结束了,喜欢的话不要吝啬您的点赞哦Thanks♪(・ω・)ノ

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值