iMAG

C++中的四种类型转换运算符static_cast、dynamic_cast、const_cast和reinterpret_cast的使用

佐手、 提交于 2020-04-24 08:21:08
1、上一遍讲述了C语言的隐式类型转换和显示类型转换,C语言之所以增加强制类型转换,就是为了强调转换的风险性,但这种强调风险的方式是比较粗放了,粒度比较大,它并没有表明存在什么风险,风险程度如何。 2、为了使潜在风险更加细化,使问题追溯更加方便,使书写格式更加规范, C++ 对类型转换进行了分类,并新增了四个关键字来予以支持,它们分别是: 关键字 说明 static_cast 用于良性转换,一般不会导致意外发生,风险很低。 const_cast 用于 const 与非 const、volatile 与非 volatile 之间的转换。 reinterpret_cast 高度危险的转换,这种转换仅仅是对二进制位的重新解释,不会借助已有的转换规则对数据进行调整,但是可以实现最灵活的 C++ 类型转换。 dynamic_cast 借助 RTTI,用于类型安全的向下转型(Downcasting)。 这四个关键字的语法格式都是一样的,具体为: xxx_cast<newType>(data) newType 是要转换成的新类型,data 是被转换的数据。例如: 老式的C风格的 double 转 int 的写法为:    double scores = 95.5 ;    int n = ( int )scores ; C++ 新风格的写法为:    double scores = 95.5 ;

Python实现3行代码解简单的一元一次方程

北城以北 提交于 2020-04-11 14:55:07
Python实现3行代码解简单的一元一次方程 class Solution(object): def exec(self, equation): vars = None eqList = list(equation) denth = 0 for i,each in enumerate(equation): if each in "abcdefghijklmnopqrstuvwxyz": vars = each if i == 0: continue if equation[i-1] in '1234567890': eqList.insert(i + denth, '*') denth += 1 equation = ''.join(eqList) equation1 = equation.replace("=", "-(") + ")" c = eval(equation1, {vars: 1j}) return -c.real/c.imag s = Solution() print(s.exec("3a-1 =a+2"))    这篇文章主要介绍了Python实现3行代码解简单的一元一次方程,很适合Python初学者学习借鉴,需要的朋友可以参考下 本文所述实例为Python用3行代码实现解一元一次方程,代码简洁高效,具体用法如下: 1 2 >>> solve( "x - 2*x

python学习03.07:Python类型转换,Python数据类型转换函数大全

夙愿已清 提交于 2020-02-27 06:28:46
虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换。 比如说,我们想通过使用 print() 函数输出信息“您的身高:”以及浮点类型 height 的值,如果在交互式解释器中执行如下代码: >>> height = 70.0 >>> print("您的身高"+height) Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> print("您的身高"+height) TypeError: must be str, not float 你会发现这是错误的,解释器提示我们字符串和浮点类型变量不能直接相连,需要提前将浮点类型变量 height 转换为字符串才可以。 庆幸的是,Python 已经为我们提供了多种可实现数据类型转换的函数,如表 1 所示。 表 1 常用数据类型转换函数 函 数 作 用 int(x) 将 x 转换成整数类型 float(x) 将 x 转换成浮点数类型 complex(real,[,imag]) 创建一个复数 str(x) 将 x 转换为字符串 repr(x) 将 x 转换为表达式字符串 eval(str) 计算在字符串中的有效 Python 表达式,并返回一个对象 chr

Python 字符串格式化操作

假装没事ソ 提交于 2020-02-26 13:36:25
建议使用format()方法 字符串操作 对于 % , 官方以及给出这种格式化操作已经过时,在 Python 的未来版本中可能会消失。 在新代码中使用新的字符串格式。因此推荐大家使用 format() 来替换 %. format 方法系统复杂变量替换和格式化的能力,因此接下来看看都有哪些用法。 format() 这个方法是来自 string 模块的 Formatter 类里面的一个方法,属于一个内置方法。因此可以在属于 string 对象的范畴都可以调用这个方法。 语法结构 这个方法太强大了,官方的用户是。 replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}" field_name ::= arg_name ("." attribute_name | "[" element_index "]")* arg_name ::= [identifier | integer] attribute_name ::= identifier element_index ::= integer | index_string index_string ::= <any source character except "]"> + conversion ::= "r" | "s" | "a"

python解一元一次方程

强颜欢笑 提交于 2019-12-14 09:43:22
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 将未知数看成是虚数 将常数看成是实数 最终求解。 import re class Item: def __init__(self,imag=0,real=0): self.imag = imag self.real = real def __str__(self): return format("(%.6f : %.6fX)")%(self.real,self .imag) def __repr__(self): return self.__str__() def _calc(a,b,op): if op == '+': a.imag += b.imag a.real += b.real return a elif op == '-': a.imag -= b.imag a.real -= b.real elif op == '*': if b.imag == 0: a.imag *= b.real a.real *= b.real else: a.imag,a.real,b.imag,b.real= b.imag,b.real,a.imag,a.real a.imag *= b.real a.real *= b.real elif op == '/': if b.real== 0: raise

.NET的数学库NMath实用教程——复数的值操作和逻辑运算

自作多情 提交于 2019-12-06 18:39:49
NMath 是一个适用于所有.NET语言,如C#、Visual Basic、F#和.NET的数学库,它包含了.NET平台上的面向对象数字计算的基础类。我们将以连载的形式向大家介绍 NMath 的实用教程,有任何建议或提示请在下方评论区留言,以便学习交流。 本节将介绍复数的价值操作和逻辑运算。 复数的价值操作 FloatComplex和DoubleComplex具有公共实例变量Real和Imag ,您可以使用复数访问和修改实部和虚部。例如: C#复数示例代码 var c1 = new DoubleComplex( 1.0 ); var c2 = new DoubleComplex( 2.13, 5.6 ); c1.Imag = c2.Imag; c1.Real = -7.77; VB复数示例代码 Dim C1 As New DoubleComplex(1.0) Dim C2 As New DoubleComplex(2.13, 5.6) C1.Imag = C2.Imag C1.Real = -7.77 您还可以在类NMathFunctions上使用静态函数Real()和Imag()来返回复数的实部和虚部: C#复数示例代码 var c = new DoubleComplex( 2.13, 5.6 ); double d1 = c.Real(); double d2 =

.NET的数学库NMath实用教程——创建复数的几种方法

时光总嘲笑我的痴心妄想 提交于 2019-12-06 01:40:43
NMath 是一个适用于所有.NET语言,如C#、Visual Basic、F#和.NET的数学库,它包含了.NET平台上的面向对象数字计算的基础类。我们将以连载的形式向大家介绍 NMath 的实用教程,有任何建议或提示请在下方评论区留言,以便学习交流。 本节将介绍如何构造 FloatComplex 和 DoubleComplex 的实例: 从数值创建复数 您可以从表示实部和虚部的一对数值中构造复数对象。如果仅传递单个值则假定它是实部,并且虚部设置为0.0。例如: C#复数代码示例 var c = new FloatComplex( 1.3, 4.5 ); // 1.3 + 4.5i var c2 = new DoubleComplex( 6.5 ); // 6.5 + 0.0i VB复数代码示例 Dim C As New FloatComplex(1.3, 4.5) ' 1.3 + 4.5i Dim C2 As New DoubleComplex(6.5) ' 6.5 + 0.0i 静态 FromPolar() 函数构造具有给定幅度和相位角的复数: C#复数代码示例 var c = DoubleComplex.FromPolar( 2 * Math.Sqrt(2), Math.PI/4 ); // c = 2.0 + 2.0i VB复数代码示例 Dim C As

Go语言入门教程(五)

妖精的绣舞 提交于 2019-11-30 18:07:13
Go语言系列教程(五) 原创: IT小栈君 Hello,各位小伙伴,大家好,我是小栈君,马上就是我们伟大祖国的70华诞了,所以在这里小栈君也祝愿大家有一个愉快的国庆节。 当然在放假的同时也别忘了学习哦,小栈君在这里也会陪着大家一起学习和进步。闲话不多说,我们开始今天的分享。 上一期我们讲了关于go语言的常量、枚举和基础数据类型,本期我们接着上期所讲的数据类型进行统一讲解一番。 总体来讲,Go语言的数据类型主要分为,布尔类型、字符类型、整型、浮点型、字符串类型和复数类型这几种。我们这次主要来以此实例化一下这几个类型。 布尔类型 我们先用代码表示一下布尔类型定义 方法一 自己定义 var tag bool // 定义一个布尔类型的标志 tag = true // 进行赋值 fmt.println(tag) // 打印 方法二 利用系统进行推导 tag = (1 == 2 ) // 先进性比较 得出比较结果 然后赋值给tag fmt.println(tag) // 打印 各位小伙伴请注意,布尔值类型不能接受其他类型的赋值,不支持自动或则强制类型转换。 说到这里,兴许有的小伙伴会想到我们在数据库中会用到 0表示true 1表示false ,所以这里小栈君给大家提个醒哦。 整型 Go语言同时提供了有符号和无符号的整数类型,其中包括 int8、int16、int32 和 int64

VisualBox ubuntu Server 18.04 挂载共享文件夹,挂载 u 盘

走远了吗. 提交于 2019-11-27 01:14:32
20190104 VisualBox ubuntu Server 18.04 挂载共享文件夹,挂载 u 盘 1、 安装 VisualBox 扩展 上 VisualBox 菜单,Devices--Insert Guest Additions CD imag... 会有错误提示!不管他! 2、挂载cdrom sudo mount /dev/cdrom /mnt/ mount: /mnt: WARNING: device write-protected, mounted read-only. 3、执行扩展脚本命令 cd /mnt ls 32Bit OS2 VBoxWindowsAdditions-amd64.exe 64Bit runasroot.sh VBoxWindowsAdditions.exe AUTORUN.INF TRANS.TBL VBoxWindowsAdditions-x86.exe autorun.sh VBoxLinuxAdditions.run cert VBoxSolarisAdditions.pkg VBoxLinuxAdditions.run 是适合于我们的系统的 sh 执行 sudo .VBoxLinuxAdditions.run 或者 sudo /mnt/VBoxLinuxAdditions.run 4、用完了,卸载, cd ~ ** 不要在 /mnt/