一元运算符

CSharp中的Vector结构

混江龙づ霸主 提交于 2020-01-13 13:57:46
本节将开发一个结构Vector,来演示运算符重载,这个Vector结构表示一个三维矢量。如果数学不是你的强项,不必担心,我们会使这个例子尽可能简单。三维矢量 只是三个(double)数字的一个集合,说明物体和原点之间的距离,表示数字的变量是x、y和z,x表示物体与原点在x方向上的距离,y表示它与原点在y方向上的距离, z表示高度。把这3个数字组合起来,就得到总距离。例如,如果x=3.0, y=3.0, z=1.0,一般可以写作(3.0, 3.0, 1.0),表示物体与原点在x方向上的距离是3,与原点在 y方向上的距离是3,高度为1。 矢量可以与矢量或数字相加或相乘。在这里我们使用术语"标量"(scalar),它是数字的数学用语-- 在C#中,就是一个double。相加的作用是很明显的。如果先移动(3.0, 3.0, 1.0),再移动(2.0, -4.0, -4.0),总移动量就是把这两个矢量加起来。矢量的相加是指把每个元素分别相加,因此得到(5.0, -1.0,-3.0)。此时,数学表达式总是写成c=a+b,其中a和b是矢量,c是结果矢量。这与使用Vector结构的方式是一样的。 注意: 这个例子是作为一个结构来开发的,而不是类,但这并不重要。运算符重载用于结构和类时,其工作方式是一样的。 下面是Vector的定义-- 包含成员字段、构造函数和一个ToString()重写方法

Chapter 3、Java语法基础(三)--- 运算符、数据类型转换 (22nd,Feb)

我怕爱的太早我们不能终老 提交于 2020-01-13 06:31:47
运算符 1、含义: 一些特殊的符号,主要用于数学函数、一些类型的赋值语句和逻辑比较方面。 2、种类: 赋值运算符( = ) 算术运算符( + ,—, * , / , % ) 自增自减运算符( ++ , -- ) 比较运算符( >,<,>=,<=,==,!= ):运算结果 boolean 型( true , false ) 逻辑运算符( & , | ,!):操作元为 boolean 型数据 注:除了逻辑(!)运算符是一元运算符以外,其他都是二元运算符 三元运算符(?:) 3、运算符优先级 运算符不同:下图 运算符相同:从左到右 优先级 描述 运算符 1 括号 () 2 正负号 + , - 3 一元运算符 ++ , -- ,! 4 乘除 * , / , % 5 加减 + , - 6 移位运算 >>,<<,>=,<= 7 比较大小 <,>,>=,<= 8 比较是否相等 ==,!= 9 按位与运算 & 10 按位或运算 ^ 11 按位或运算 | 12 逻辑与运算 && 13 逻辑或运算 || 14 三元运算符 ?: 15 赋值运算符 = 数据类型转换 1、隐式转换(自动转换) :自动从范围小的转换为范围大的类型 2、强制转换(显示转换) :强制从范围小的转换为范围大的类型 3、前提条件:数据类型兼容 注释 1、单行: // 2、多行 : ctrl+/ /* */ 3、文档 : /** **

Java面试题26——运算符优先级

故事扮演 提交于 2020-01-11 08:48:36
运算符优先级 1.Java中的运算符优先级: 口诀:单目乘除为关系,逻辑三目后赋值。(大佬总结的) 口诀解释: 单目:指的是例如正负(±)这些一次只作用于一个变量的运算符,又叫一元运算符。 乘除:乘、除、模 ,毫无疑问优先级比加减高一级 为:即谐音“位”,指的是位运算中用到的符号:~(按位取反)<<(左移) >>(右移),^(也可以位运算,二进制异或)。 关系:大于、大于等于、小于、小于等于 逻辑:指的是异或、与、或三个逻辑运算符 三目:即三目运算符:条件运算符A > B ? X : Y 赋值:赋值运算符 具体的运算符排序如下:可以看到与我们的口诀不同的是,位运算符(按位与、按位或、按位异或)优先级排在关系运算符的后面。但是>>,<<,>>>等位运算符在关系运算符前面。~(按位取反)优先级很高。 这里的结合性是指运算符结合的顺序,通常都是从左到右。从右向左的运算符最典型的就是负号,例如3±4,则意义为3加-4,符号首先和运算符右侧的内容结合。 来源: CSDN 作者: 子衿@ 链接: https://blog.csdn.net/huiyanfreeflying/article/details/103914219

逆波兰表达式

不羁岁月 提交于 2020-01-10 10:43:47
本文转载自: https://www.cnblogs.com/wanghetao/archive/2012/04/23/2466580.html 作者:wanghetao 转载请注明该声明。 逆波兰 表达式 表达式一般由操作数(Operand)、运算符(Operator)组成,例如算术表达式中,通常把运算符放在两个操作数的中间, 这称为中缀表达式(Infix Expression),如A+B。 波兰数学家Jan Lukasiewicz提出了另一种数学表示法,它有两种表示形式: 把运算符写在操作数之前,称为波兰表达式(Polish Expression)或前缀表达式(Prefix Expression),如+AB; 把运算符写在操作数之后,称为逆波兰表达式(Reverse Polish Expression)或后缀表达式(Suffix Expression),如AB+; 其中,逆波兰表达式在编译技术中有着普遍的应用。 算法: 一、 将中缀表达式转换成后缀表达式算法: 1、从左至右扫描一中缀表达式。 2、若读取的是操作数,则判断该操作数的类型,并将该操作数存入操作数堆栈 3、若读取的是运算符 (1) 该运算符为左括号"(",则直接存入运算符堆栈。 (2) 该运算符为右括号")",则输出运算符堆栈中的运算符到操作数堆栈,直到遇到左括号为止。 (3) 该运算符为非括号运算符: (a)

javascript基础

不打扰是莪最后的温柔 提交于 2020-01-08 14:22:00
Day 01 变量 本质:变量是程序在内存中申请一块用来存放数据的空间 变量的使用 1.声明变量 2.赋值 变量的初始化:声明一个变量 并赋值 var age = 18; 变量语法拓展 1.更新变量:一个变量被重新赋值后,它原有的值就会被覆盖,变量值将以最后一次赋的值为准 var myname = '张三'; myname = '迪丽热巴'; console.log(myname);//迪丽热巴 2.同时声明多个变量,只需要写一个var,多个变量名之间用英文逗号隔开,最后一个用分号结束 var age = 18, address = '火影村', gz = 2000; 3.声明变量的特殊情况 3.1只声明不赋值,结果为undefined var age; console.log(age); //undefined 3.2不声明,不赋值直接使用某个变量会报错 3.3不声明,直接赋值使用能正常输出 变量命名规范 1.由字母,数字,下划线,美元符号组成。 2.严格区分大小写 3.不能以数字开头 4.不能是关键字,例如var,for,while 5.变量名必须有意义 6.遵守驼峰命名法,首字母小写,后面单词得首字母需要大写。如myFirstName 7.尽量不要使用name作为变量名 案例 交换两个变量 思路 1.需要一个临时变量 2.把apple1给临时变量temp 3

[cpp] 重载运算符规律总结

爷,独闯天下 提交于 2020-01-05 10:20:30
重载运算符是对正常函数的语法美化.没给语言增加任何基本的东西,但改善了可理解性并降低维护费用.当用户需要时,就应该使用运算符重载,但应该仅仅以用户熟悉的语义方式来使用它。 1. 重载规则 不能重载的运算符: . 和 .* 和 ?: 和 :: 和 sizeof 和 typeid 重载运算符有两种基本选择: 类的成员函数或者友元函数, 建议规则如下: 运算符 建议使用 所有一元运算符 成员函数 = () [] -> 必须是成员函数 += -= /= *= ^= &= != %= >>= <<= , 似乎带等号的都在这里了. 成员函数 所有其它二元运算符, 例如: –,+,*,/ 友元函数 2. 参数和返回值 当参数不会被改变,一般按const引用来传递(若是使用成员函数重载,函数也为const). 对于返回数值的决定: 1) 如果返回值可能出现在=号左边, 则只能作为左值, 返回非const引用。 2) 如果返回值只能出现在=号右边, 则只需作为右值, 返回const型引用或者const型值。 3) 如果返回值既可能出现在=号左边或者右边, 则其返回值须作为左值, 返回非const引用。 3. 几个例子 3.1 二元运算法建议使用友元函数重载,与内部类型的操作相似 1: class Integer { 2: int _val; 3: public: 4: Integer(int val

C/C++ 复习

末鹿安然 提交于 2020-01-05 04:23:10
本文总结一下C++面试时常遇到的问题。C++面试中,主要涉及的考点有 关键字极其用法,常考的关键字有const, sizeof, typedef, inline, static, extern, new, delete等等 语法问题 类型转换 指针以及指针和引用的区别 面向对象的相关问题,如虚函数机制等 泛型编程的相关问题,如模板和函数的区别等 内存管理,如字节对齐(内存对齐)、动态内存管理、内存泄漏等 编译和链接 实现函数和类 本文不涉及STL的内容,有关STL的内容,会另有一篇文章专门总结。 零、序章 0.1 C++与C的对比 C++有三种编程方式:过程性,面向对象,泛型编程。 C++函数符号由 函数名+参数类型 组成,C只有函数名。所以,C没有函数重载的概念。 C++ 在 C的基础上增加了封装、继承、多态的概念 C++增加了泛型编程 C++增加了异常处理,C没有异常处理 C++增加了bool型 C++允许无名的函数形参(如果这个形参没有被用到的话) C允许main函数调用自己 C++支持默认参数,C不支持 C语言中,局部变量必须在函数开头定义,不允许类似for(int a = 0; ;;)这种定义方法。 C++增加了引用 C允许变长数组,C++不允许 C中函数原型可选,C++中在调用之前必须声明函数原型 C++增加了STL标准模板库来支持数据结构和算法 一

逆波兰表达式

守給你的承諾、 提交于 2020-01-04 13:53:11
逆波兰表达式 表达式一般由操作数(Operand)、运算符(Operator)组成,例如算术表达式中,通常把运算符放在两个操作数的中间, 这称为中缀表达式(Infix Expression),如A+B。 波兰数学家Jan Lukasiewicz提出了另一种数学表示法,它有两种表示形式: 把运算符写在操作数之前,称为波兰表达式(Polish Expression)或前缀表达式(Prefix Expression),如+AB; 把运算符写在操作数之后,称为逆波兰表达式(Reverse Polish Expression)或后缀表达式(Suffix Expression),如AB+; 其中,逆波兰表达式在编译技术中有着普遍的应用。 算法: 一、 将中缀表达式转换成后缀表达式算法: 1、从左至右扫描一中缀表达式。 2、若读取的是操作数,则判断该操作数的类型,并将该操作数存入操作数堆栈 3、若读取的是运算符 (1) 该运算符为左括号"(",则直接存入运算符堆栈。 (2) 该运算符为右括号")",则输出运算符堆栈中的运算符到操作数堆栈,直到遇到左括号为止。 (3) 该运算符为非括号运算符: (a) 若运算符堆栈栈顶的运算符为括号,则直接存入运算符堆栈。 (b) 若比运算符堆栈栈顶的运算符优先级高或相等,则直接存入运算符堆栈。 (c) 若比运算符堆栈栈顶的运算符优先级低

typeof运算符

放肆的年华 提交于 2019-12-27 14:58:06
typeof结果举例: //typeof部分类型运算结果 typeof(1): number typeof(NaN): number typeof(Number.MIN_VALUE): number typeof(Infinity): number typeof("123"): string typeof(true): boolean typeof(window): object typeof(document): object typeof(null): object typeof(eval): function typeof(Date): function typeof(sss): undefined typeof(undefined): undefined typeof是一个一元运算符,它返回的结果 始终是一个字符串,对不同的操作数,它返回不同的结果。 具体的规则如下: 一、对于数字类型的操作数而言, typeof 返回的值是 number。比如说:typeof(1),返回的值就是number。 上面是举的常规数字,对于非常规的数字类型而言,其结果返回的也是number。比如typeof(NaN),NaN在 JavaScript中代表的是特殊非数字值,虽然它本身是一个数字类型。 在JavaScript中,特殊的数字类型还有几种: Infinity 表示无穷大特殊值 NaN

JAVA 系列——>三元运算符(三目运算符)

一曲冷凌霜 提交于 2019-12-27 05:39:39
三元运算符(三目运算符) 概念 什么叫做三目运算符呢?先了解以下一元和二元吧。 一元运算符:只需要一个数据就可以进行操作的运算符。例如:取反!、自增++、自减– 二元运算符:需要两个数据才可以进行操作的运算符。例如:加法+、减法-、乘法*等等 由此类推,三元运算符:需要三个数据才可以进行操作的运算符。 基本格式 数据类型 变量名 = 条件 ? 表达式A : 表达式B; 执行流程 先判断条件是否成立 若成立 将表达式A的值复制给左侧变量 若不成立 将表达式B的值复制给左侧变量 注意事项 注意事项: 必须保证表达式A和B的数据类型符合左侧变量数据类型 三元运算符的结果必须被赋值给一个用于接收结果的变量或者直接输出。 举例 public class test{ public static void main(String[] args) { int a = 10; int b = 20; // 判断a > b是否成立,若成立,将a的值赋值给max;若不成立,将b的值赋值给max int max = a > b ? a : b; // 最大值的变量 System.out.println("最大值:" + max); // 20 // int result = 3 > 4 ? 2.5 : 10; // 错误写法! 因为2.5是浮点型 result是int型 可能会发生错误 System