一元运算符

Java运算符

放肆的年华 提交于 2019-12-04 12:32:40
运算符概念 查询百度百科可知: 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”。 算术运算符 常见的算术运算符如下图所示 详解: 除法公式: 被除数 / 除数 = 商 ... 余数 除法运算的结果只看商,不看余数。 取摸运算的结果只看余数不看商 只有对于整数的除法来说,取模运算符才有余数的意义。 注意事项: 一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种。例如;int类型数据与double类型的数据进行运算,结果一定是double类型的数据 代码举例 package demo02_Operator; public class Demo01Operator { public static void main(String[] args) { //常量之间可以进行数学运算 System.out.println(3 + 6); //变量和变量之间可以进行数学运算 int a = 33; int b = 55; System.out.println(a - b); //变量和常量之间可以进行混合运算 System.out.println(a * 21); // 求2个整数之间的商 System.out.println(a / 4); //求2个整数之间的余数 System.out.println(a %

C++的逆波兰表达式的求解

梦想的初衷 提交于 2019-12-04 02:09:53
逆波兰表示法 (Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家 扬·武卡谢维奇 1920年引入的数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。 逆波兰结构由弗里德里希·鲍尔(Friedrich L. Bauer)和艾兹格·迪科斯彻在1960年代早期提议用于表达式求值,以利用堆栈结构和减少计算机内存访问。逆波兰记法和相应的算法由澳大利亚哲学家、计算机学家查尔斯·汉布林(Charles Hamblin)在1960年代中期扩充 在1960和1970年代,逆波兰记法广泛地被用于台式计算器,因此也在普通公众(工程、商业和金融领域)中使用(百度百科)。 算法: 一、 将中缀表达式转换成后缀表达式算法: 1、从左至右扫描一中缀表达式。 2、若读取的是操作数,则判断该操作数的类型,并将该操作数存入操作数堆栈 3、若读取的是运算符 (1) 该运算符为左括号"(",则直接存入运算符堆栈。 (2) 该运算符为右括号")",则输出运算符堆栈中的运算符到操作数堆栈,直到遇到左括号为止。 (3) 该运算符为非括号运算符: (a) 若运算符堆栈栈顶的运算符为括号,则直接存入运算符堆栈。 (b) 若比运算符堆栈栈顶的运算符优先级高或相等,则直接存入运算符堆栈。 (c)

运算符的优先级

半世苍凉 提交于 2019-12-03 11:33:30
在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。 优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。 下面是运算符的优先级表格: 优先级 运算符 说明 结合性 1 [] 、 . 、 () 字段访问、数组索引、函数调用和表达式分组 从左向右 2 ++ -- -~!delete new typeof void 一元运算符、返回数据类型、对象创建、未定 义的值 从右向左 3 *、/、% 相乘、相除、求余数 从左向右 4 +、- 相加、相减、字符串串联 从左向右 5 <<、>>、>>> 左位移、右位移、无符号右移 从左向右 6 <、<=、>、>=、instanceof 小于、小于或等于、大于、大于或等于、是否 为特定类的实例 从左向右 7 ==、!=、===、!== 相等、不相等、全等,不全等 从左向右 8 & 按位“与” 从左向右 9 ^ 按位“异或” 从左向右 10 | 按位“或” 从左向右 11 && 短路与(逻辑“与”) 从左向右

重载运算符学习心得

匿名 (未验证) 提交于 2019-12-03 00:21:02
1. 不改变运算符的优先级 2. 不改变运算符的结合性 3. 不改变运算符所需要的操作数 4. 不能创建新的运算符 5. 运算符函数可以重载为成员函数或者友元函数 } 类型 类名 默认版本 一元运算符 Object.operator op() 二元运算符 Objectl op objectr Objectl.operator op (objectr) 用成员函数重载运算符 Class x }; 此时当前对象作为运算符的左操作数,它时通过 this 指针隐含的传递给函数的。 { public: Complex( ) {real=0,imag=0;} Complex(double r,double i) {real=r; imag=i;} void display( ); private: double real; double imag; }; ComplexComplex:: operator + (Complex &c2) { return Complex(real+c2.real, imag+c2.imag);} void Complex::display( ){ cout<<"("<<real<<","<<imag<<"i)"<<endl;} int main( ){ Complex c1(3,4),c2(5,-10),c3; c3=c1+c2; cout<<"c1=";c1

python运算符和优先级

匿名 (未验证) 提交于 2019-12-02 22:11:45
python运算符和优先级 + 加 - 减 * 乘 / 除 // 地板除,即结果为整数 % 取余 ** 幂运算 > 大于< 小于>= 大于等于<= 小于等于== 等于!= 不等于 = 赋值 += 加等于,注意:python里不像c#等语言一样有 ++ 运算符 -= 减等于,同样,python里没有 -- 运算符 *= 乘等于 /= 除等于 //= 地板除等于 %= 取余等于 **= 幂等于 in 判断元素是在容器中,如果不在则结果是 False,否则 True not in 与 in 相反 如果是字符串,必须是一个连续的片段才能判断成功 在dict 中,in,not in 判断的是字典的键 is 用来判断2个变量的地址是否一致 not is 与is相反 (var1 == var2) 与 (var1 is var2) 区别: == 是在比较两个值是否相同,is 是在比较两个值地址是否相同 附加: 判断类型方法: 一般使用isinstance。isinstance(要判断的数据, 判断的类型) 返回 bool 类型 或者 (type(var) == int) and 且,即并且 or 或,即或者 not 非,即反真 & 按位与: 同为 1 才为 1 | 按位或: 其中一个为 1 则为 1 ^ 按位异或:不同则为 1 << 左移: n << m 相当于n*2的m次幂 >> 右移: n >

C++重载操作符

久未见 提交于 2019-12-02 12:14:54
1.重载操作符的必要性 C++的数据类型分为 基础数据类型 和 构造数据类型 ,基础数据类型客户直接完成算数运算,但是比如类这样的新构造的数据类型是无法通过基本运算符进行算数运算的。此时,便需要重载操作符。 2.形式和规则 大多数的重载运算符可被定义为 普通的非成员函数 或者被定义为 类成员函数 。 重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。 Box operator + ( const Box & ) ; 如果我们定义上面的函数为类的非成员函数,那么我们需要为每次操作传递两个参数,如下所示: Box operator + ( const Box & , const Box & ) ; 2.1一元运算符 只对一个操作数进行操作,这里包括: 一元减运算符,即负号( - );递增运算符( ++ )和递减运算符( – ) 递增运算符包括前置和后置两种情况,区别如下: 前置++:即++运算符位于操作数的前面,例如:++i; 后置++:即++运算符位于操作数后面,例如:i++; 1、前置++重载时没有参数,而后置++重载时有参数。不会使用其参数,仅仅是区分用。 2、前置++需要返回引用,因为重载自加运算符后可以返回对象的引用, 以方便在表达式中连续使用。而后置++返回的不是引用

永不服输的Java之路---重学Java (第三章)

一曲冷凌霜 提交于 2019-12-02 06:39:31
如若文章中出现冲突,或者出现错误,请联系 QQ:2669157689 指出我的问题。谢谢~ 本章说明一下变量的声明,数据类型及其转换;Java中的关键字,保留字;运算符和表达式等 JAVA编程基础 —— 变量和运算符 1. Java的程序结构 Java块分为数据类型,变量,运算符和控制流语句。 数据类型 数据类型确定要存储在内存中的数据的类型。 变量 变量是存储数据的基本单元。 运算符 运算符是一个符号,用于操作一个或多个参数以得出结果。程序是按顺序执行的。 控制流语句 控制流语句允许改变语句执行的顺序。 2. 标识符、关键字和保留字 标识符 Java中的包、类、方法、参数和变量的名称 标识符的命名规则 ① 必须以字母、下划线(_)或美元符号($)开头; ② 余下的字符可以是下划线、美元符号或任何的字母或数字,长 度不限。标识符中不能有空格; ③ 不能使用Java中的关键字或者保留字做为标识符。 元素 规范 示例 类名 Pascal 规则 Person StudentDemo 变量名 Camel 规则 age height avgValue 方法名 Camel 规则 getAge setUserName 包名 全部小写 com.neusoft 常量名 全部大写 MAX_VALUE 关键字/保留字 Java中的关键字/保留字 abstract continue goto null

从简易计算器到科学计算器

大兔子大兔子 提交于 2019-12-01 18:53:48
整体思路保持不变,先对表达式分析,将其转化为若干运算单元(运算单元表示一个广义运算符或者一个操作数),然后根据运算单元的列表对表达式求值。 变化点 一元运算符的处理 先前的简易计算器表示运算的运算符只有加减乘除、正负号,正负号虽然是一元运算符,但做了特殊处理(直接将紧跟其后的操作数的正负性做出相应的改变,当引入高于正负号优先级的乘方阶乘后就变为了错误的做法)。 科学计算器新引入了阶乘、sin、cos、tan、ln、log、sqrt这些一元运算符,也要求能够更好的处理一元运算符。 运算符数量大大增加 运算符数量增加,将会加大修改运算符优先级比较矩阵的难度,如果每新增支持一种新的运算就去修改这个矩阵,显然过于繁琐,因此采用了一种基于规则的比较方式。 代码量增加 随着代码量的增加,需要对项目重构。 项目结构 主要代码位于cn.zhikaizhang.algorithm和cn.zhikaizhang.main两个包下。前者是算法,后者是界面与交互。 package class description cn.zhikaizhang.algorithm Calculator 表达式求值 cn.zhikaizhang.algorithm ExpressionIllegalException 表达式不合法异常类 cn.zhikaizhang.algorithm ExpressionParser

运算符的基本概念以及常用Scanner、随机数Random、选择结构的初步了解

十年热恋 提交于 2019-12-01 17:36:55
运算符 分类 算术运算符 位运算符 关系运算符|比较运算符 逻辑运算符 条件运算符 赋值运算符 其中优先级顺序从上到下,可以记忆口诀: 单目乘除位关系,逻辑三目后赋值 操作数: 运算符左右两边的数 表达式: 运算符连接操作数整体叫做表达式 语句: 分号代表语句的结束 单目|一元运算符: 操作数为1个 +号 ++ -- 双目|二元运算符: 操作数为2个 + - * / 三目|三元运算符: 条件运算符 算术运算符 +号: 正号(可省略) 加法运算 字符串的连接 如果+左右两边有字符串的出现"",+就是作为字符串的连接符使用,把两边的内容拼接成为一整个字符串使用 -号: 符号 减法运算 此外,还有* / % % 模以,取模,求余数 ++ -- ++,--操作自己 无论++在前还是在后,自己加一 无论--在前还是在后,自己减一 ++,--操作别人 ++在前,先自己加一在参与运算 ++在后,先参与运算在自己加一 --同理 赋值运算符 基础赋值运算符 = 是java中唯一一个自右向左运算的符号优先级最低 扩展赋值运算符 += a+=b; ==> a=a+b;-=同理 a =b; ==> a=a b; /=、%=同理 推荐使用扩展赋值运算符 优点: 执行效率高 缺点: 不直观 关系运算符 符号:> < >= <= 可以参与运算的类型:byte short int long float

java 三元运算符

送分小仙女□ 提交于 2019-12-01 08:22:47
/* 一元运算符:只需要一个数据就可以进行操作的运算符 如:取反! 自增++ 自减 -- 二元运算符:需要两个数据才可以进行操作的运算符 如:加法+ 赋值= 三元运算符: 需要三个数据才可以进行操作的运算符 格式: 数据类型 变量名称 = 条件判断 ? 表达式1 :表达式2 流程: 首先判断是否成立 如果成立,那么将表达式1的值赋值给左侧的变量 如果不成立,那么将表达式2的值赋值给左侧的变量 二者选其一 注意事项: 1、必须同时保证表达式1和表达式2都符合数据类型的要求 2、三元运算符的结果必须被使用 */ public class Demo04operator{ public static void main(String[] args){ int a = 10; int b = 20; int max = a>b ? a : b; System.out.println("max: " + max);//20 System.out.println(a>b ? a : b);//正确写法 } } 来源: https://www.cnblogs.com/spp666/p/11672823.html