小编sun*_*kue的帖子

为什么 /=2 与 >>=1 对于有符号整数不同,并编译为不同的 asm?

unsigned int a=200;
//mov   dword ptr [a],0C8h  
a >>= 1;
//mov   eax,dword ptr [a]  
//shr   eax,1  
//mov   dword ptr [a],eax  
a /= 2;
//mov   eax,dword ptr [a]  
//shr   eax,1  
//mov   dword ptr [a],eax  
int b = -200;
//mov   dword ptr [b],0FFFFFF38h  
b /= 2;
//mov   eax,dword ptr [b]  
//cdq  
//sub   eax,edx  
//sar   eax,1  
//mov   dword ptr [b],eax  
b >>= 1;
//mov   eax,dword ptr [b]  
//sar   eax,1  
//mov   dword ptr [b],eax 
Run Code Online (Sandbox Code Playgroud)

我正在使用 msvc,// 是该 C 语句的程序集。

为什么signed int/=2不同于>>=1 …

c x86 assembly integer-division

4
推荐指数
1
解决办法
118
查看次数

如何将 std::sort() 与 std::unique_ptr<[]> 一起使用?

std::unique_ptr<type[]> D{ std::make_unique<type[]>(10'000) };

std::sort(D2[0], D2[10'000], [](auto& a, auto& b)->bool {return a < b; }); //error

Run Code Online (Sandbox Code Playgroud)

std::unique_ptr<[]>用来读取二进制文件。如果我想对这些数据进行排序,我是否必须制作另一个矢量或其他东西?我不知道如何将sortfunc 与unique_ptr<[]>. 你能告诉我路吗?

c++ std

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

标签 统计

assembly ×1

c ×1

c++ ×1

integer-division ×1

std ×1

x86 ×1