代码之家  ›  专栏  ›  技术社区  ›  chappar

替换整数的最后几位

c
  •  2
  • chappar  · 技术社区  · 17 年前

    我试图用38替换整数的最后2位。我是这样做的。

    int num = 1297;
    num = (num/100)*100 + 38;
    

    我假设编译器不会优化(num/100)*100到num。如果发生这种情况,那么在上面的示例中,num将变成1335,而不是1238。那么,在C中是否保证上述表达式不会被优化?或者有没有更好的方法用数字替换最后两位数字?

    2 回复  |  直到 17 年前
        1
  •  9
  •   jason    17 年前
    num = num - (num % 100) + 38;
    
        2
  •  9
  •   Artelius    17 年前

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

    (num/100)*100 具有 num . 优化编译器是非常非常重要的, 远的 比那更聪明。编译器可能会将其优化为 num - (num % 100)

    我总是说“编译器越容易理解您的代码,编译器就越容易应用最合适的优化”。你知道吗?通常,编译器容易理解的代码对人类来说也更容易理解。