gpt4 book ai didi

c# - 为什么 Visual Studio 调试器显示 int 的长十六进制值?

转载 作者:行者123 更新时间:2023-12-02 04:32:15 25 4
gpt4 key购买 nike

在调试时我遇到了这个有趣的行为:

a 的十六进制值字符串是其他字符串的两倍长。

enter image description here

你能说出为什么会发生这种情况吗?

最佳答案

您要求调试器为您计算表达式。它现在就像一个编译器,将您输入的监视表达式转换为代码并运行该代码以显示结果。它认为0xff000000long类型的文字,这是一个公平的调用,因为int无法存储该值,它比Int32大。最大值。因此,它使用 long 参数计算 >> 运算符,首先将 i 值转换为 long。结果当然也是

由于您没有像在代码中那样转换为较小的类型,因此调试器将结果(切换到十六进制输出时)显示为 64 位、16 个十六进制数字的 long。

其他表达式的行为并非如此,它们中使用的文字小于 Int32.MaxValue,因此使用 int 参数进行计算,生成 32 位结果,8 个十六进制数字。

值得注意的是,调试器的表达式求值器与 C# 编译器的求值器很接近,但并不完全相同。这里不是问题,但在某些情况下可能很重要。当 Roslyn 项目最终发布时,这种情况可能会在某一天发生改变。

关于c# - 为什么 Visual Studio 调试器显示 int 的长十六进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22767288/

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