对于简单的加法在Python内没有太多的不同,但是我们需要考虑到与C不同的各种变量类型
对于C语言运算符而言,存在一个特性,即类型小的的会在运算过程中自动转换为类型大的
所以存在char -> short -> int -> unsigned int -> long -> double 自动转换其中float -> double
也就是一个int型变量 + 一个 unsigned int 型变量会变成unsigned int型变量。
同时定义的浮点常数默认是double型很占空间,可以添加2.0f表示为float型
那么现在开始Python的部分。
其中在整形这部分遇到一个很奇怪的问题。
首先程序里面我们通过
import sys
intsize= sys.maxsize
print(intsize)
输出 2147483647 很正常 即2^31 -1所以范围是在-2147483648 --2147483647之间
但是这么操作了一下,我就很懵逼,希望有大佬评论解决一波(我是真萌新选手)
i = 11111111111111
print(int(i))
输出11111111111111显然越界了 后来百度了一波后在这个链接下是这么说的
python在做数值计算好像没有越界的问题,就看机器承受能力
但做位运算就会显现字节问题,尤其是取反操作会有点混乱(个人感觉)应该是对的吧
回归正题乘法和加法与C一致不多说
然后除法的话
>>>1 / 2
0.5
>>>1 / 1
1.0
也就是在单除法运算符下面输出的结果默认是单精度float型类型数据
如果需要进行整除运算这需要使用//这是会自动丢弃掉小数部分
>>> 1//2
0
>>> 5.0//2.0
2.0
注意类型和运算符的俩边决定,同时也是遵循C语言内的原则低类型向高类型转换
>>> 5.0//2
2.0
然后是取余运算,%号的使用 在C语言内%要求左右都必须为整数不然会报错但是Python显然不需要
>>> 2.75%0.5
0.25
Python中还有一个很重要的概念就是圆整的概念,都表现为向下圆整
举几个例子:
>>> 10 % -3 #只有12对3取余为0所以为-2 于是计算出-2,计算出来的应该是远离0更大范围
-2
>>> -10 % 3#只有12对3取余为0所以为2 于是计算出2
2
>>> -10 % -3
-1
然后是整除部分的
>>> 10//-3
-4
>>> -10//3
-4
>>> -10//-3
3
最后是幂函数用**表示
>>> 2**3
8
>>> -3**2
-9
>>> (-3)**2
9
这运算符计算过程中需要考虑到运算符的运算优先级的问题