gpt4 book ai didi

java - 简单的赋值错误的值

转载 作者:IT老高 更新时间:2023-10-28 23:21:32 25 4
gpt4 key购买 nike

private static void convert(int x) {
// assume we've passed in x=640.

final int y = (x + 64 + 127) & (~127);
// as expected, y = 768

final int c = y;
// c is now 320?!
}

对于上述代码为什么会产生上述值,是否有任何合理的解释?这个方法是从 JNI 调用的。 x传入的最初是 C++ int类型为 static_castjint像这样:static_cast<jint>(x);

在调试器中,在 y 赋值上设置断点,我看到 x=640。迈出一行,我看到 y=768。再走一条线,c=320。使用调试器,我可以设置变量 c = y,它会正确分配它 768。

此代码是单线程的,每秒运行多次,并且始终观察到相同的结果。

以下评论更新

经过一天的调试,这个问题现在已经完全消失了。如果一整天都没有重复发生,我会把它归咎于宇宙射线。很长一段时间以来我见过的最奇怪的事情。

我会暂时搁置这个问题,以防有人对可能导致此问题的原因有所了解。

最佳答案

步骤01:正确编译,看你帖子下的评论。

如果需要我使用此代码,它将执行以下操作:C#代码:

private void callConvert(object sender, EventArgs e)
{
string myString = Convert.ToString(convert123(640));
textBox1.Text = myString;
}
private static int convert123(int x) {
// assume we've passed in x=640.
int y = (x + 64 + 127) & (~127);
// as expected, y = 768
int c = y;
// c is now 320?!
return (c);
}

但它是一个 c# 代码

和一个给你的提示永远不要使用编译器中用作标准的名称来调用你的功能。 convert 是使用最多的语言。

(system.convert)

关于java - 简单的赋值错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20338779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com