执行无符号长长划分

时间:2010-08-10 15:06:13

标签: visual-c++ visual-studio-2010

我可以在哪个文件中找到unsigned long long division(ulonglong除以ulong)的实现? (MS VC ++ 2010)

2 个答案:

答案 0 :(得分:0)

  • 写一个简单的例程进行划分:

#include "stdafx.h"

int main()
{
    unsigned long long a=123;
    unsigned long long b=10;
    a=a/b;
}
  • 在行a = a / b;
  • 的行中设置断点
  • 在调试配置中启动程序,当它在断点处停止时按F11进入步骤。

现在有两种可能性:

  1. 调试器打开一些名为“ulldiv.asm”的汇编程序文件。这意味着您已安装CRT源,现在您已阅读实现。

  2. 没有任何反应或弹出消息。这意味着您没有CRT的源代码,或者您正在编译64位,在这种情况下,分区不由库例程处理。

答案 1 :(得分:0)

假设您使用了默认安装目录,它应该在某处:

C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ VC \ crt \ src \ intel \ ulldiv.asm

如果您使用的是32位版本的Windows,则可能(可能)为C:\program files而不是c:\program files (x86)。尽管有这些注释,但这段代码实际上是用于无符号的长除数,而不仅仅是无符号长除法(即,它需要64位操作数,而不是32位)。

我必须检查以确定,但我相信编译器可以/将在启用内在函数时为该除法生成内联代码。当然,64位编译器在任何情况下都会生成内联代码。