我试图用38替换整数的最后2位数.我正在这样做,如下所示.
int num = 1297;
num = (num/100)*100 + 38;
Run Code Online (Sandbox Code Playgroud)
我假设编译器不会优化(num/100)*100到num.如果发生这种情况,那么在上面的例子中,num将变为1335而不是1238.那么,在C中是否保证上述表达式不会被优化?或者有没有更好的方法用一些数字替换最后2位数?
优化不应该影响程序的结果(除了代码大小和运行时间).当他们这样做时,通常是因为你依赖于未定义的行为.
任何有理智的编译器将取代(num/100)*100用num.优化编译器远比这更聪明.num - (num % 100)如果这是目标平台的合理决策,编译器可能会优化它.
我总是说"编译器理解代码越容易,编译器就越容易应用最合适的优化".你知道吗?通常,编译器易于理解的代码也更容易让人理解.
| 归档时间: |
|
| 查看次数: |
1331 次 |
| 最近记录: |