我添加了一些编译干净,刚刚收到此Windows错误的代码:
---------------------------
(MonTel Administrator) 2.12.7: MtAdmin.exe - Application Error
---------------------------
The exception Privileged instruction.
(0xc0000096) occurred in the application at location 0x00486752.
Run Code Online (Sandbox Code Playgroud)
我即将继续寻找一个bug,我期待它是我所做的愚蠢的事情,这恰好产生了这个消息.代码编译干净,没有错误或警告.EXE文件的大小已经增长到1,454,132字节并且包含指向的链接ODCS.lib,但它是纯粹的C到Win32 API,DEBUG打开(在Windows 2000上的P4上运行).
编译成更快的代码:"ans = n*3"或"ans = n +(n*2)"?
假设n是int或long,它是在现代Win32 Intel盒子上运行的.
如果涉及一些解除引用,这会有所不同,也就是说,哪些更快?
long a; long *pn; long ans; ... *pn = some_number; ans = *pn * 3;
要么
ans = *pn+(*pn*2);
或者,它是否需要不用担心,因为优化编译器在任何情况下都可能解释这一点?