小编Gia*_*ani的帖子

字节码和汇编语言是一回事吗?

这个问题可能看起来很奇怪,但我仍然试图掌握虚拟机的概念.我已经阅读了几个答案,但是如果Java字节码(以及MSIL)与汇编语言相同,我仍然无法得到.据我所知,字节码和汇编都被编译成机器码,所以从抽象的角度讲,它们处于同一级别,即比机器码高出一步.字节码也只是汇编语言,即人类可读的机器代码形式.如果是,那么为什么仍然使用汇编语言?为什么不用字节码(可以在不同的机器上移植)而不是汇编语言(特定于单个机器架构)进行编程?谢谢

assembly cil bytecode virtual-machine machine-code

7
推荐指数
1
解决办法
1108
查看次数

Python:__ add__和+,浮点数和整数的不同行为

将整数值添加到浮点值时,我意识到__add__如果在float上调用该方法工作正常,例如:

>>> n = 2.0
>>> m = 1
>>> n.__add__(m)
3.0
Run Code Online (Sandbox Code Playgroud)

但如果调用整数则不会:

>>> m.__add__(n)
NotImplemented
Run Code Online (Sandbox Code Playgroud)

起初我认为__add__只是以不同的方式实现intfloat类型(比如浮点类型接受添加到int类型,但不是相反).然后我注意到如果我使用+运算符,一切正常:

>>> n + m
3.0
>>> m + n
3.0
Run Code Online (Sandbox Code Playgroud)

有人知道为什么会这样吗?是__add__+彼此没有很深的关系?

python floating-point integer add

5
推荐指数
1
解决办法
323
查看次数

在循环中返回:Java中的错误?

在Python中编码时,我经常使用插入return循环来破坏函数/方法,例如当达到条件并且我想返回值时.我注意到如果我在Java中执行此操作,IDE(在本例中为Eclipse)似乎无法识别该return命令.例如这里:

protected Node getTrueParent() {
    for (Edge e : this.edges) {
        if (e.getNode2() == this && (!e.isPseudo())) {
            Node parent = e.getNode1();
            return parent;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Eclipse指出"此方法必须返回Node类型的结果".我在做什么不对?此外,parentfor循环内声明,所以我不能在循环之外返回它.一种方法是parent在开头声明(即在循环之外),但这对我来说是非常草率的.写这个的正确方法是什么?

java

0
推荐指数
1
解决办法
140
查看次数

Python:为什么"if <some integer>"等同于"if True"?

我遇到过这段代码:

counts = 128 * [0]

# some other steps here that modify the variable counts...
# in the end we have something like counts=[12, 583, 0, etc. , etc., 384]

for i in range(len(counts)):
    if counts[i]:
        outfile.write("%-12s%d\n" % (display(i), counts[i]))
Run Code Online (Sandbox Code Playgroud)

关于if声明,我理解它的引入是为了在它何时跳过指令counts[i]==0.那是因为0相当于False.但另一方面,我认为任何其他整数(除了1)都不等于True.事实上,如果我3 == True在shell上输入,我会得到False答案.那么,有什么特别的理由if <some integer>相当于if True

python if-statement

-1
推荐指数
1
解决办法
88
查看次数