替换整数的最后一位数

cha*_*par 2 c

我试图用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位数?

Art*_*ius 8

优化不应该影响程序的结果(除了代码大小和运行时间).当他们这样做时,通常是因为你依赖于未定义的行为.

任何有理智的编译器将取代(num/100)*100num.优化编译器远比这更聪明.num - (num % 100)如果这是目标平台的合理决策,编译器可能会优化它.

我总是说"编译器理解代码越容易,编译器就越容易应用最合适的优化".你知道吗?通常,编译器易于理解的代码也更容易让人理解.