首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用这两种方法将一个数字乘以8在C中有什么区别吗?

用这两种方法将一个数字乘以8在C中有什么区别吗?
EN

Stack Overflow用户
提问于 2016-09-26 17:58:52
回答 6查看 85关注 0票数 0

如果大小是int变量

代码语言:javascript
复制
int size = 10;

我想把大小乘以8,这两种方法有什么区别:

答:

代码语言:javascript
复制
size = 1 + ((size - 1)/8);
size = size * 8;

B:

代码语言:javascript
复制
size = (size/8+1)*8;

提前谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-09-26 18:05:29

用这两种方法将一个数字乘以8在C中有什么区别吗?

是。对于已经是8的倍数的输入,它们产生不同的结果。方法(A)没有改变这种输入,但是方法(B)返回8的下一个较大倍数(假设没有溢出)。

票数 3
EN

Stack Overflow用户

发布于 2016-09-26 18:05:15

两人正在做不同的事情:

  • 第一个序列正确地保持了8的倍数。
  • 第二个序列从8到16,16到24,依此类推。

以下是值0.19的两个片段的输出序列,并突出显示了不同之处:

  • 0 8 8
  • 1 8 8
  • 2 8 8
  • 3 8 8
  • 4 8 8
  • 5 8 8
  • 6 8 8
  • 7 8 8
  • 8 8 16
  • 9 16 16
  • 10 16 16
  • 11 16 16
  • 12 16 16
  • 13 16 16
  • 14 16 16
  • 15 16 16
  • 16 16 24
  • 17 24 24
  • 18 24 24
  • 19 24 24
票数 2
EN

Stack Overflow用户

发布于 2016-09-26 18:05:22

方法A保持8的倍数相同的值,并舍入其他值。

方法B不适用于8的倍数,因为它也将这些倍数圈起来。

例如:(16/8+1)*8 == (2+1)*8 == 3*8 == 24

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39709398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档