引言:我们今天主要要总结的是关于C语言和Python的运算符运算优先级和程序选择结构之间的关系。在前几篇的文章中我们讲到了C语言和Python的运算符的相同和不同,今天我们算是在这一部分上进行深入的探讨,其次是关于程序的选择结构上做一定的分析。无论是C语言亦或者是Python除开大家耳熟能详的算术运算,还存在在很多其他的不同于算术运算的其他运算符,和运算分类:位运算,比较运算,布尔运算,赋值运算。其中我们最熟悉的也就是算术运算和赋值运算了,因为它们之中只包含了加减乘除和等号,而其他的运算我们目前不要求熟练掌握,只是作为了解。那么当这么多的运算集中到一个式子单中的时候我们应该怎么处理他们其中的关系呢?
正文:
1、运算优先级
我们先来看C语言的实例:
#include
#include
void main()
{
int x, y, z;
x = 8 / 2 >> 1; //包括算术运算,位运算,赋值运算
y = !3*6; //包括布尔运算,算术运算,赋值运算
z = x || y; //包括布尔运算,赋值运算
printf("%d\n%d\n%d\n",x,y,z);
system("pause");
}
/*如果大家看不懂例子中x的值是如何来的请看这里,在这里我做一个小提醒:算术运算的优先级大于位运算所以我们一定是先做前面的除法运算,那么得到结果后再进行位运算的时候我们就应该将得到的答案先转化成二进制才能够进行位运算哈,所以这才有了这样的答案*/
在这个例子之中我们可以明显的观察到,赋值运算也就是等号的运算优先级是最低的,只有当所有的运算符都结束运算后才会轮到它(QAQ),其次呢是是我们的布尔运算符(这里的布尔运算符中包括有:&:按位与 |:按位或 ~:按位非 ^:按位异或(相同为0,相异为1) )在接下来的是位运算,当然最高优先级的是我们的算术优先级,这里我就不在过多的赘述,大家如果想要彻底搞明白这其中的先后顺序,请看如下的这一张表格:
接下来我们来看一下关于Pythony运算符的表格(不完整):
** | 幂运算 |
~ | 取反 |
* / % // | 乘法 除法(结果可以是小数)取余 整除(结果为整数) |
+ - | 加法 减法 (也可以当作为正负号) |
>> << | 左移 右移 |
& | 与 |
^ | 异或 |
| | 或 |
<= < > >= | 比较运算符: 小于等于 小于 大于 大于等于 (注意其中的结果只能为真或者假) |
<> == != | 比较运算符: 不等于 等于 不等于 |
= %= /= //= -= += *= **= | 赋值运算符: 直接赋值 取模赋值 除法赋值 整除赋值 减法赋值 加法赋值 乘法赋值 幂运算复制 |
is (is not) | 身份运算符 is 判断两个标识符是不是引用自一个对象 is not 判断两个标识符是不是引用自不同对象 |
in (not in) | 成员运算符 in:如果在指定的序列中找到值返回 True,否则返回 False。 not in:如果在指定的序列中没有找到值返回 True,否则返回 False。 (in 和not in 是比较判断我们想要判断的值是否在或者不在相应的变量或者数组之中) |
not or and | 逻辑运算符: 非 或 与 |
2、程序的选择结构
程序的组成结构:1、顺序结构 2、选择结构 3、循环结构
顺序结构顾名思义就是指,程序从上至下无判断无选择的执行。而今天我们要讲的选择结构就是指:明确的让计算机知道在什么条件下该去做什么(具体历程if)分为单分支、双分支和多分支结构。
我们来看C语言的示例:
#pragma warning(disable:4996) //因为我这里使用的是VS2019,会报scanf的错误所以我们添加这一句让系统子自动忽略因scanf而产生的错误
#include
#include
void main()
{
int x,num;
int y = 0;
x = 1000;
printf("您的余额为:%d\n请输入您要取出的金额",x);
scanf("%d",&y);
num = x - y;
if (num>=0)
printf("您的余额为:%d", num);
else
printf("输入金额错误,请重试");
system("pause");
}
这就是C语言中的双分支历程模板是这样子的:
if 条件表达式:
条件执行语句
else:
条件执行语句
他在if后有一个条件表达式,是用来让我们进行初次的条件判断的,如果条件为真,那就执行if中的 *** 作,为假那就进入else。所有的结果都可以在这两个分支中找到,这就是所谓的双分支结构,那么大家就可以进行猜想多分支了。
if 条件表达式1:
条件执行体
else if 条件表达式2:
条件执行体
else if 条件表达式3:
……
else
条件执行体
注意看这里最后的else里我们没有写条件表达式,而是直接省略了,这是因为最后的这个else就是前面的所有的if和else if的取反,不满足前面条件的所有都应该执行他里面的语句。
接下来是Python的实例:
money=1000
s=int(input('请输入取款金额:'))
if s<=money:
money=money-s
print('取款成功,余额为:',money)
else:
print('取款失败,余额为:',money)
大家可以观察比较C语言的代码,会发现其实两者之间没有太大的变化和差别,都是if和else组成的这样的选择结构,但是不同点就在于,Python的多分支结构的写法:
if 条件表达式1:
条件执行体
elif 条件表达式2:
条件执行体
elif 条件表达式3:
....
其中的不同点有:
1、对照C语言来说Python在if后面使用的是elif而不是else或者else if。
2、if和elif后面的条件执行体中,Python的代码是使用【tab】进行了缩进的 *** 作以达到后面的同一,让所有的语句能够有序,让人一眼分辨出不同条件表达式下面的条件执行体。反观C语言,在if、else和else if 需要用花括弧将条件执行体进行收拢包覆,用以区别于其他的不同条件表达式后的条件执行体(如果是只有一句话,那么可以省略花括弧{})。
结语:无论是运算的先后顺序还是程序的选择结构都是构成了C语言和Python运算和主体代码的必不可少的部分,大家对于这里的只是务必要牢牢的掌握,争取做到温故而知新。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)