运算优先级及类型转换

运算优先级及类型转换

1.在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的结合顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。

优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。

2.优先级与求值顺序无关。如a+b && b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。

优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。

相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符赋值运算符

基本的优先级需要记住:

指针最优,单目运算优于双目运算。如正负号。

先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7.

逻辑运算最后结合。

原文地址:https://www.cnblogs.com/yhakaki/p/11516648.html

时间: 2024-10-28 05:10:15

运算优先级及类型转换的相关文章

java数据类型和运算优先级

一.数据类型 1.基本数据类型: . 布尔类型:boolean(true,false) . 整型:byte(-128,127).short(-32768,32767).int(-2147483648,2147483647).long(-9223372036854775808,9223372036854775807).char(\u0000' ,'\uffff) . 浮点数:float(1.4E-45,3.4028235E38).double(4.9E-324,1.7976931348623157

符号(位运算符,++,--,优先级和类型转换)

位运算符:&,|,^,<<,>>,~ 都是基于二进制数的移动,其他进制都要转换成二进制进行 左移n位,相当于乘以2的n次方:右移n位,相当于除以2的n次方. ^:a^a=0,遵行交换律,结合律  a^b^a=a^a^b=b:如果a的个数为偶数,那么计算结果永远是b ++,--与逗号表达式的运算: 1 int x=3; 2 int y=(++x,x++,x+10); 逗号表达式的运算:从左到右,依次计算每个表达式的值,最后一个表达式的值就是逗号表达式的值 1 int i=3;

Python之表达式与运算符以及运算优先级

Python的表达式和语句: 表达式:1个或以上的操作数以及0个或以上的操作符组成的序列. 语句:用来实现的操作. 声明变量.赋值语句.控制语句.条件语句....语句在程序中执行的顺序叫做控制         流.是以分号结尾的单行代码,或者语句块中的一系列的单行语句. Python中常用的表达式操作符: x + y, x - y x * y, x / y, x//y, x%y x or y, x and y, not x x in y, x not in y x is y, x not is

++和+的运算优先级和++i和i++混合用法解析

近日碰到一个技术交流的地方,发现出了一道基础知识的题,刚一看题目确实有点晕,仔细分析如下: int i = 5; int k = i+++(++i)+(++i);           也可以写成(i++)+(++i)+(++i) 其实这个是k=(5++)+(++6)+(++7)=5+7+8=20 得出结果为20 ++和+的运算优先级和++i和i++混合用法解析,布布扣,bubuko.com

PHP数据运算优先级总结记忆

运算符优先级 记忆方法: 1.单目运算优先级高于双目运算 2.同目大体遵循算数->逻辑->比较 3.最NB的方法就是加()!

javascript 运算优先级

运算优先级是指在表达式的计算过程中执行运算的顺序.先执行的具有较高优先级的运算,后执行的具有较低优先级的运算.例如先执行乘除,再执行加减. 下表中列出了javascript运算符,并按优先级顺序从高到低排列.具有相同优先级的运算符按从左至右的顺序计算. 运算符 说明 .[ ] ( ) 字段访问.数组索引.函数调用和表达式分组 ++ -- - ~ ! delete new typeof void 一元运算符.返回数据类型.对象创建.未定义的值 * / % 相乘.相除.求余数 + - + 相加.相减

[c/c++] programming之路(9)、运算优先级

一.运算优先级 二.条件运算符(表达式1?表达式2:表达式3) 当式1正确时,取式2的值:否则,取式3的值 三.格式字符 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void main(){ 5 int num; 6 scanf("%d",&num); 7 printf("\n%d",num); 8 printf("\n%ld",num); 9 printf("

函数调用问题、浮点、运算优先级和短路【这个是关键】、按位运算的用处

1.对函数的调用中返回值的意义function f1(){echo 1234;//return 123;//这里对返回值进行处理}var_dump(f1());//这里对整个返回值有一个认识[function的调用而没有返回值并不会影响执行,只对调用结果有影响] 2.浮点数的表示[双精度:需要使用八个字节来表示][不使用浮点数进行比较,就是因为浮点数转化二进制时会出现问题,不能单纯拿来做比较] 3.echo "hello,$arr['name']";//这里的数组元素并不能被正确解析,

java加法运算 (强制类型转换)

1.源代码 package demo; public class OutputSum { private static final String Int = null; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int sum=0; System.out.println("参数个数:"+args.length); for (String