操作数

C++ 中的运算符重载

我的梦境 提交于 2019-12-17 15:36:19
所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能。 运算符也可以重载 ..运算符重载是对已有的运算符赋予多重含义... // 也就是说重载完之后,会根据我们定义的重载函数 自动调用最符合调用的方法使用...比如我们定义的类的重载运算符+. 当我们使用类的对象相加时,会自动调用我们定义的重载...而当我们使用内置的+法运算,比如 int b=5+3; 那么这是还是调用内置的+法运算进行处理 .. C++中预定义的运算符其运算对象只能是基本数据类型,而不适用于用户自定义类型(如类). // 同上,内置的运算符 只能应用于内置的数据类型 ...比如 int char double .等等。 (一) C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载。 // 就是说只能重载内置的 + - * / 等运算符,不能自己创造运算符计算。 。 (二) C++允许重载的运算符C++中绝大部分的运算符允许重载. 不能重载的运算符只有5个: (1) 成员访问运算符. (2) 作用域运算符∷ (3) 条件运算符?: (4) 成员指针运算符* (5) 编译预处理命令的开始符号# (三) 重载不能改变运算符运算对象(即操作数)的个数。 // 不能改变运算符运算对象, 比如+法运算符,那么它有两个操作数 ..当我们重载它的时候 也只能有两个操作数 。

结构体类型知识总结

亡梦爱人 提交于 2019-12-16 04:56:46
结构体 数组是相同数据类型的集合,结构体的每个成员可以是相同的也可以是不同的数据类型,在C语言中规定结构体最少包括一个成员。 结构体的声明: 在声明结构体时,必须列出它包含的所有的成员。这个列表包括每个成员的类型和名字。 struct tag { member - list ; } variable - list ; 例如 struct { int a ; char b ; } x : 这个声明创建了一个名叫x的结构体变量,它有两个成员。 struct { int a ; char b ; } a [ 20 ] , * p ; p是一个指针,它指向这个类型的结构体。 那么 p = &x;是否合法?可以发现这两个声明它们的成员列表时完全一样的,但是即使它们的成员列表相同,编译器会当作两种截然不同的类型,所以这个语句是不合法的。 struct a { int a ; char b ; } ; 这个声明并没有创建任何变量,它只是声明了一种类型,就像int一样struct a类似与一个自定义的类型,而前两个是直接创建了结构体变量,它们是不完全声明,属于匿名结构体类型。 typedef的使用 、 在声明结构体时可以使用typedef创建一种新的类型。例如: typedef struct a { int a ; char b ; } : a现在是一个类型名,可以直接使用它来声明变量, 比如:a

javascript:基本数据结构

别来无恙 提交于 2019-12-14 11:50:36
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> JavaScript提供脚本语言的编程与C++非常相似,它只是去掉了C语言中有关指针等容易产生的错误,并提供了功能强大的类库.对于已经具备C++或C语言的人来说,学习JavaScript脚本语言是一件非常轻松愉快的事. 一,JavaScript代码的加入 JavaScript的脚本包括在HTML中,它成为HTML文档的一部分.与HTML标识相结合,构成了一个功能强大的Internet网上编程语言.可以直接将JavaScript脚本加入文档: script language ="JavaScript"> JavaScript语言代码; JavaScript 语言代码; .... /script> 说明: 通过标识script>...</script>指明javascript脚本源代码将放入其间. 通过属性Language ="JavaScript"说明标识中是使用的何种语言,这里是JavaScript语言, 表示在JavaScript中使用的语言. 下面是将JavaScript脚本加入Web文档中的例子: Test2.html html> head> script language ="JavaScript"> document. write("这是网络学校"); document. close();

java虚拟机

百般思念 提交于 2019-12-14 02:46:22
目录(java虚拟机) 一、虚拟机 ​ 同样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的。 同一个java代码在windows上生成的机器码可能是0101…,在linux上生成的可能是1100…,那么这是怎么实现的呢? 不知道同学们还记不记得,在下载jdk的时候,我们在oracle官网,基于不同的操作系统或者位数版本要下载不同的jdk版本,也就是说针对不同的操作系统,jdk虚拟机有不同的实现。 那么虚拟机又是什么东西呢,如图是从软件层面屏蔽不同操作系统在底层硬件与指令上的区别,也就是跨平台的由来。 说到这里同学们可能还是有点不太明白,说的还是太宏观了,那我们来了解下java虚拟机的组成。 二、虚拟机组成 ​ 1.栈 我们先讲一下其中的一块内存区域栈,大家都知道栈是存储局部变量的,也是线程独有的区域,也就是每一个线程都会有自己独立的栈区域。 public class Math { public static int initData = 666; public static User user = new User(); public int compute() { int a = 1; int b = 2; int c = (a+b) * 10; return c; } public static void main(String[

C++类或结构作为map的key值

心已入冬 提交于 2019-12-12 20:19:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1.只有重载<的类或者结构才能作为map的key值。 string可以作为key值是因为string重载了< 2.如果不重载<会提示如下错误: error C2676: 二进制“<”: “const C”不定义该运算符或到预定义运算符可接收的类型的转换 3.重载<但是没有实现会提示如下错误: Expression: invalid operator< 比如bool operator < (const C &c) const{return true;} #include < string > #include <map> using namespace std; // 重载<的类或结构才能作为map的key值 class C { public : int i; string str; bool operator < ( const C &c) const { return i < c.i; } }; void main() { map<C, int > mapC; C c0; c0.i = 0 ; c0.str = " str1 " ; mapC.insert(pair<C, int >(c0, 0 )); C c1; c1.i = 1 ; c1.str = " str2 " ; mapC.insert(pair

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。一共有六个:> ,< ,>=,<=可操作数据类型,整型、浮点型、字符型 ; ==,!= 可操作数据类型,基本数据类型、引用型 **逻辑运算符:**返回类型为布尔值的表达式,可以和比较运算符

C语言笔记 04_运算符

爷,独闯天下 提交于 2019-12-11 18:06:37
运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 语言内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 算术运算符 下表显示了 C 语言支持的所有算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则: 运算符 描述 实例 + 把两个操作数相加 A + B 将得到 30 - 从第一个操作数中减去第二个操作数 A - B 将得到 -10 * 把两个操作数相乘 A * B 将得到 200 / 分子除以分母 B / A 将得到 2 % 取模运算符,整除后的余数 B % A 将得到 0 ++ 自增运算符,整数值增加 1 A++ 将得到 11 -- 自减运算符,整数值减少 1 A-- 将得到 9 a++和++a是不同的 a++是先赋值后运算 ++a是先运算后赋值 关系运算符 下表显示了 C 语言支持的所有关系运算符。假设变量 A 的值为 10,变量 B 的值为 20,则: 运算符 描述 实例 == 检查两个操作数的值是否相等,如果相等则条件为真。 (A == B) 为假。 != 检查两个操作数的值是否相等,如果不相等则条件为真。 (A != B) 为真。 > 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 (A > B) 为假。 < 检查左操作数的值是否小于右操作数的值,如果是则条件为真

java第二期:位运算

送分小仙女□ 提交于 2019-12-11 00:37:51
一、位运算的介绍 位运算:又称是二进制运算,位(代表的是二进制,或者是bit位)1字节 = 8bit(位)。 连接的操作数:其实也是二进制,返回值是一个数据类型。 存储格式:二进制数存储在计算中都是以补码的形式进行存储的。 原码 --> 反码 --> 补码 --------1--------- 2 步奏1:反码 = 0和1的替换 步奏2:补码 = 在反码的前提下+1 原码 <-- 反码 <-- 补码 -------- 2--------- 1 步奏1:反码 = 补码-1 步奏2:原码 = 反码的0、1替换 下面有步奏案例 关于3种状态码的认知在第六标题处,可往下观看。 二、位运算符的使用(bit的补码形式) 介绍运算符: | & ^ :双目运算符,操作数有两个 ~ : 单目运算符,操作数只有一个 3 和 4 的一个按位运算,底层转换为二进制数进行一个运算 3的二进制数:0b0000000000 00000000000 000000000 11 4的二进制数:0b0000000000 00000000000 000000001 00 因为一个int = 4byte 1byte = 8bit 所以将int转二进制数为 32bit(位) 1、按位与 & 规则:在二进制数位上只有相同1的时候才为true 0 1 1 1 0 0 上下都不同,所有结果为 0 0 0 3 & 4 =

ARM汇编指令

让人想犯罪 __ 提交于 2019-12-10 07:40:14
转载: arm汇编指令-Bingghost-博客园 学习嵌入式系统时的资料收集 ARM处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令6大指令 一、跳转指令 跳转指令用于实现程序流程的跳转 跳转指令分类 Ⅰ.使用专门的跳转指令 分支指令 B 带链接的分支指令: BL 带状态切换的分支指令 BX Ⅱ. 程序计数器PC控制 直接向程序计数器PC写入跳转地址值,通过向程序计数器PC写入跳转地址值 可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令 可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用。 ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以下4条指令: 1、B指令 B指令的格式为: B{条件} 目标地址 2、BL指令 BL指令的格式为: BL{条件} 目标地址 BL是另一个跳转指令,但跳转之前,会在寄存器R14中保存PC的当前内容, 因此,可以通过将R14的内容重新加载到PC中,来返回到跳转指令之后的那个 指令处执行。 该指令是实现子程序调用的一个基本但常用的手段 3、BLX指令 BLX指令的格式为: BLX 目标地址 BLX指令从ARM指令集跳转到指令中所指定的目标地址

表达式求值--Java实现

﹥>﹥吖頭↗ 提交于 2019-12-10 03:08:20
1 /*将中缀表达式--转化为后缀表达式--属于栈的一种应用 2 *具体思路: 3 *1.扫描字符串,遇到操作数字符直接不管,存到一个字符串里边 4 *2.操作符优先级比较--定义了方法 5 * 栈中优先级高:出栈存进字符串,当前的操作符进栈 6 * 当前操作符优先级高,直接进栈 7 * 对于左边括号直接进栈,右边括号涉及栈中出栈 8 *3.扫描完了在将栈中的出栈和操作数存储在一起 9 *转化完直观的表现:操作数相对位置不变,操作符相对位置相反 10 * */ 11 public class IntoSuffixExpression { 12 private CharStack stack; 13 private String input; 14 private String output = ""; 15 16 public IntoSuffixExpression(String in) { 17 input = in; 18 stack = new CharStack(input.length()); 19 } 20 21 //转化为后缀表达式 22 public String doTrans(){ 23 for(int i = 0; i < input.length();i++){ 24 char ch = input.charAt(i); 25 stack