单目运算符

编译原理实验:中间代码生成——逆波兰表达式

≯℡__Kan透↙ 提交于 2019-12-12 05:31:52
编译原理实验:中间代码生成——逆波兰表达式 逆波兰表达式 测试 逆波兰表达式 运算对象写在前,运算符写在后(后缀表示形式) 例如:a+b → \rightarrow → ab+   (a+b) c → \rightarrow → ab+c   a+b c → \rightarrow → abc +   a=b c+b d → \rightarrow → abc bd += 优点:易于计算机处理 利用栈,将扫描到的运算对象入栈,碰到运算符: 若是双目运算符,则对栈顶的两个运算对象实施该运算并将运算结果代替这两个运算对象进栈; 若是单目运算符,对栈顶元素,执行该运算,将运算结果代替该元素进栈,最后结果即栈顶元素。 c++代码: # include <string> # include <iostream> # include <map> # include <stack> # include <vector> using namespace std ; string str ; //需要进行分析的算术表达式 stack < char > tem ; //当无法确定运算符是否要输出的时候,将运算符进栈 vector < string > exp ; //逆波兰表达式序列 map < char , int > opPri ; //定义预定义运算符的优先级 bool convert ( )

JAVA中的运算符

徘徊边缘 提交于 2019-12-12 01:34:53
Java中的运算符分为很多种:赋值运算符、算数运算符、自增或自减运算符、比较运算符、逻辑运算符、位运算符、三元运算符。 赋值运算符 : = ,二元运算符,将右边的数值赋给左边的操作数,右边可以为运算符,也可以通过变量赋值。ps:int i = 0; int i = a+b;(会先计算出a+b的结果) 同时,将赋值运算符连在一起使用,ps:a=b=c=d=5,但开发一般不使用当前方法 算术运算符: +,-,*,/,%, 二元运算符,分别是加,减,乘,除,取余数;同时,+ - 可以作为正负符号。0不可以做除数,系统会抛出异常。 自增自减运算符: 单目运算符,可以放在操作元之前或者之后,操作元必须是一个整型或浮点型变量。作用为++ 自增1,–自减1,当变量后有表达式,则先计算表达式后的结果,再计算前面的结果。ps:++a(–a),会先减去一再加一。 ps:a = a++ , or a = a–;当运算符在前时,会先加减再赋值,在后则先赋值再计算。 比较运算符: 二元运算符,用于变量与自变量以及其他类型信息之间的比较。运算结果是boolean型。成立为true,否则为false。一共有六个:> ,< ,>=,<=可操作数据类型,整型、浮点型、字符型 ; ==,!= 可操作数据类型,基本数据类型、引用型 **逻辑运算符:**返回类型为布尔值的表达式,可以和比较运算符

python浓缩(5)数字

大兔子大兔子 提交于 2019-12-09 14:15:13
详细介绍每一种数字类型,适用的各种运算符, 及用于处理数字的内建函数。 5.1 数字类型 数字提供了标量贮存和直接访问。它是不可更改类型,也就是说变更数字的值会生成新的对象。 Python 支持多种数字类型:整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数。 如何创建数值对象并用其赋值 anInt = 1 如何更新数字对象 通过给数字对象(重新)赋值, 您可以“更新”一个数值对象。实际上你并没有更新该对象的原始数值。因为数值对象是不可改变对象。Python的对象模型与常规对象模型有些不同。更新实际上是生成了一个新的数值对象,并得到它的引用。 在Python 中, 变量更像一个指针指向装变量值的盒子。 对不可改变类型来说, 你无法改变盒子的内容, 但你可以将指针指向一个新盒子。每次将另外的数字赋给变量的时候,实际上创建了一个新的对象并把它赋给变量.(不仅仅是数字,对于所有的不可变类型,都是这么回事) 如何删除数字对象 你无法真正删除一个数值对象, 你仅仅是不再使用它而已。如果你实际上想删除一个数值对象的引用, 使用 del 语句(参见3.5.6 小节)。如果试图使用一个已经被删除的对象引用, 会引发NameError 异常。 del anInt del aLong, aFloat, aComplex 5.2 整型 Python 有几种整数类型。布尔类型是只有两个值的整型

java基础总结-运算符

梦想的初衷 提交于 2019-12-06 13:09:38
【变量的赋值与计算都离不开表达式,表达式的运算依赖于变量、常量和运算符。本节课讨论Java的表达式的构成、常量的定义、运算符的分类及应用。通过本课的学习你将掌握运用表达式和运算符完成变量赋值、条件判断、数学运算、逻辑运算等功能操作】 在讲述课程内容之前,先看一个求圆面积的问题。求圆面积的公式为; 其中S为圆面积,π为圆周率,r为半径。 假设用程序来计算圆的面积,S、π、r均为变量,省略的乘号为运算符,r的2次方可以描述为r*r。则上面的公式即为求圆面积的表达式。 结合上面的案例,本节课程分为三个小节,第一小节探讨不能修改的变量—常量;第二小节探讨表达式的组成结构及运用;第三小节探讨Java的基本运算符,包括赋值运算符、算术运算符、关系运算符和逻辑运算符。 第一小节 不能修改的变量——常量 在求圆面积的表达式中,π为圆周率,它是一个不变的量,在程序运行过程中不能被修改。常量同变量一样,也占用存储单元的空间。常量的不可修改性提高了程序的稳定性,同时也提高了程序代码的可维护性。例如,可以把π定义为常量,当程序需要π参与运算时,直接调用定义的常量π即可。 在java语言中,定义常量的语法如下: final 数据类型 常量名称 = 值; 其中,final是Java关键字,数据类型可以是Java语言支持的任何数据类型。 例如,下面的语句把圆周率定义为常量: final double Pl =

运算符重载

落花浮王杯 提交于 2019-12-06 05:06:11
1. 双目运算符类成员函数重载 观察下列程序,掌握双目运算符的类成员函数重载方式。 #include<iostream> using namespace std; class complex { double real, imag; public: complex(double r = 0, double i = 0) { real = r; imag = i; } complex operator + (complex&); //运算符重载的成员函数原型 //运算符结果类型 operator @(参数表列); 其中,@表示运算符 void print(); }; /*运算符重载实现: 函数返回类型 类名::operator @(参数表列) { //代码 }*/ complex complex::operator+(complex& c) { //operator+ 是类complex的成员函数 complex sum; sum.real = real + c.real; sum.imag = imag + c.imag; return sum; } void complex::print() { cout << "real=" << real << endl; cout << "imag=" << imag << endl; } void main() { complex a(5

从0开始自制计算器!

夙愿已清 提交于 2019-12-04 23:35:40
目录 1.概述 2.新建工程 2.界面 (1) 按键 a.添加一个Grid Layout,调整好大小. b.拖入Push Button作为按键,sizePolicy属性那里水平和垂直属性都选择Expanding. c.调整好颜色,设置styleSheet与字体 d.复制制作好的button,布好局 e.改内容 f.整体修改大小,同时加上间隔 (2) 输出框 a.添加QLineEdit b.调整好大小,设置好背景颜色 c.设置字体,只读,对齐 (3) 标题栏 a.新建Horizontal Layout b.添加细节 (4)整体处理 a.标题栏 b.调整整体大小,同时添加透明度 3.事件处理 (1)光标事件 A.标题栏 B.按键 (2)键盘事件 A.添加阴影 B.添加输出 4.整体细节再处理 (1)淡入效果 (2)设置固定尺寸 (3)淡出效果 5.表达式处理 (1)判断 a.去除所有空格 b.分类判断 c.加0 (2)计算 a.calc辅助类 b.计算部分 c.测试 6.整合 (1)设置界面的调用进程,并获取输出结果 (2)修改一些细节地方 a.鼠标键盘修改事件 b.exe中设置数字的格式 c.设置错误提示 d.可以考虑把错误处理整合过来 7.打包发布 (1) 首先去下载Enigma Virtual Box (2) 添加环境变量 (3) 打包库文件 (4) 生成单个exe (5) 测试

C++面向对象 运算符重载函数

谁说我不能喝 提交于 2019-12-04 03:58:26
第十二章 运算符重载 1. C++中可以称运算符为运算符函数。 2. 运算符函数可以作为某个类的成员函数,也可以作为普通的C++函数。(常作为类的友元函数) 3. 重载运算符时,至少要有一个操作数是用户自定义的类类型(如果都是基本数据类型还有基本数据类型的指针的话,定义已经存在) 4. 重载的运算符函数不能是类的静态成员函数。 5. 重载运算符时需要遵循的规则: (1) 尽可能用引用型的参数,尽可能加const限制(避免拷贝构造函数,保护实参操作数,同时使运算符具有与常量运算的功能) (2) 尽可能采用引用返回(避免构造临时对象,使运算表达式成为左值) (3) 如果第一个操作数可能不是本类的对象的时候,必须重载为友元函数。 例子:希望日期类对象Date d(2008,8,8);与整数int n=6;进行相加运算。运算表达式d+n与n+d执行的使不同的运算符函数。前者可以作为类的成员函数,d作为第一个操作数。而后者只能作为友元函数来定义,将整数n作为第一个操作数。 6. 重载算术运算符(加减乘除) 不修改操作数,一般将运算结果存放在其他对象或者变量里然后值返回。 例如: Date operator+(const Date &d, int n) //友元函数 { Date temp(d); int m=temp.DaysOfYear()+n; temp.setDate(d.year,m

操作符优先顺序

∥☆過路亽.° 提交于 2019-12-03 20:15:57
优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[整型表达式] 左到右 () 圆括号 (表达式)/函数名(形参表) . 成员选择(对象) 对象.成员名 -> 成员选择(指针) 对象指针->成员名 2 - 负号运算符 -算术类型表达式 右到左 单目运算符 (type) 强制类型转换 (纯量数据类型)纯量表达式 ++ 自增运算符 ++纯量类型可修改左值表达式 单目运算符 -- 自减运算符 --纯量类型可修改左值表达式 单目运算符 * 取值运算符 *指针类型表达式 单目运算符 & 取地址运算符 &表达式 单目运算符 ! 逻辑非运算符 !纯量类型表达式 单目运算符 ~ 按位取反运算符 ~整型表达式 单目运算符 sizeof 长度运算符 sizeof 表达式 sizeof(类型) 3 / 除 表达式/表达式 左到右 双目运算符 * 乘 表达式*表达式 双目运算符 % 余数(取模) 整型表达式%整型表达式 双目运算符 4 + 加 表达式+表达式 左到右 双目运算符 - 减 表达式-表达式 双目运算符 5 << 左移 整型表达式<<整型表达式 左到右 双目运算符 >> 右移 整型表达式>>整型表达式 双目运算符 6 > 大于 表达式>表达式 左到右 双目运算符 >= 大于等于 表达式>=表达式 双目运算符 < 小于 表达式<表达式 双目运算符 <= 小于等于

C++对bool operator < (const p &a)const的运算符重载详解

让人想犯罪 __ 提交于 2019-12-03 06:22:53
struct node { //定义一个结构体node(节点) int x; int y; int len; //node中有3个成员变量x,y,len bool operator <(const node &a)const {//重载<操作符。可以对两个node使用<操作符进行比较 return len<a.len; } }; 括号中的const表示参数a对象不会被修改,最后的const表明调用函数对象不会被修改! Return Top 重载运算符的介绍 C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一。   运算符重载是通过创建运算符函数实现的,运算符函数定义了重载的运算符将要进行的操作。运算符函数的定义与其他函数的定义类似,惟一的区别是运算符函数的函数名是由关键字operator和其后要重载的运算符符号构成的。运算符函数定义的一般格式如下: <返回类型说明符> operator <运算符符号>(<参数表>) { <函数体> }  运算符重载时要遵循以下规则: (1) 除了类属关系运算符"."、成员指针运算符".*"、作用域运算符

实验7 运算符重载(P289-P292)

匿名 (未验证) 提交于 2019-12-03 00:32:02
实验目的和要求 实验内容 1.调试下列程序 [cpp] view plain copy print ? "font-family:SimSun;font-size:16px;" > //sy7_1.cpp #include<iostream> using namespace class public double double double const const const const friend void const private double inline const return inline const return inline const return inline const return void const if "i" else "+" <<c.imag<< "i" int return //sy7_1.cpp #include<iostream> using namespace std; class complex { public: complex(){real=imag=0.0;} complex(double r){real=r;imag=0.0;} complex(double r,double i){real=r;imag=i;} complex operator + (const complex &c); complex operator -