假设我们有一个运行 100 次的循环。使用 unsigned char
而不是 int
作为计数器有什么不同吗?还使用 i += 1U
而不是 i++
吗?或者编译器会处理这个问题吗?
最佳答案
在简单的情况下,int
vs unsigned char
为我提供相同的代码:
for ( unsigned char i = 0; i < 100; ++i ) {
01081001 mov esi,64h
01081006 jmp main+10h (1081010h)
01081008 lea esp,[esp]
0108100F nop
std::cout << 1 << std::endl;
01081010 mov eax,dword ptr [__imp_std::endl (108204Ch)]
01081015 mov ecx,dword ptr [__imp_std::cout (1082050h)]
0108101B push eax
0108101C push 1
0108101E call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (1082044h)]
01081024 mov ecx,eax
01081026 call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (1082048h)]
0108102C dec esi
0108102D jne main+10h (1081010h)
}
return 0;
您应该分析您的代码,然后优化缓慢的部分。 不要以premature optimization开头.
关于c++ - int 与 unsigned char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3385528/