相关疑难解决方法(0)

哪个是用于将整数除以2的更好选项?

以下哪种技术是将整数除以2的最佳选择,为什么?

技巧1:

x = x >> 1;
Run Code Online (Sandbox Code Playgroud)

技术2:

x = x / 2;
Run Code Online (Sandbox Code Playgroud)

x是一个整数.

c c++ optimization division micro-optimization

401
推荐指数
20
解决办法
6万
查看次数

如何检查整数是偶数还是奇数?

如何在C中检查给定数字是偶数还是奇数?

c integer

193
推荐指数
12
解决办法
36万
查看次数

为什么C的printf格式字符串同时包含%c和%s?

为什么C的printf格式字符串有%c%s

我知道它%c代表一个单个字符并%s表示一个以空字符结尾的字符串,但单独的字符串表示不足够吗?

c string-formatting

70
推荐指数
7
解决办法
2万
查看次数

使整数均匀

有时我需要确定某个整数是偶数.因此我可以使用以下代码:

int number = /* magic initialization here */;

// make sure the number is even
if ( number % 2 != 0 ) {
    number--;
}
Run Code Online (Sandbox Code Playgroud)

但这似乎并没有被非常有效的最有效的方式做到这一点,所以我可以做到以下几点:

int number = /* magic initialization here */;

// make sure the number is even
number &= ~1;
Run Code Online (Sandbox Code Playgroud)

但(除了不可读)我不确定该解决方案是否完全可移植.

  • 您认为哪种解决方案最好?
  • 第二种解决方案是否完全便携?
  • 第二种解决方案比第一种解决方案快得多吗?
  • 您对此问题还有哪些其他解决方案?
  • 如果我在内联方法中执行此操作会怎么样?它(理论上)应该与这些解决方案一样快,可读性不应再成为问题,这是否会使第二种解决方案更可行?

注意:此代码应该只适用于正整数,但有一个解决方案也适用于负数将是一个加号.

c c++ integer bit-manipulation

13
推荐指数
4
解决办法
5263
查看次数