如何获得/和%运算符的正确值?
发布时间:2020-12-16 09:45:21 所属栏目:百科 来源:网络整理
导读:我想做以下事情: 我使用变量int a来保持控制台的输入,然后我执行以下操作: int b = a / 16; 当a是64或32时,我得到4或2.但是如果a是63,我希望得到4,但是我得到3.在C中是否有任何方法可以获得舍入值? 编辑.更多细节: rang 1 to 16 should get 1,rang 17 to
我想做以下事情:
我使用变量int a来保持控制台的输入,然后我执行以下操作: int b = a / 16; 当a是64或32时,我得到4或2.但是如果a是63,我希望得到4,但是我得到3.在C中是否有任何方法可以获得舍入值? 编辑.更多细节: rang 1 to 16 should get 1,rang 17 to 32 should get 2,rang 33 to 48 should get 3,rang 49 to 64 should get 4 解决方法
当您使用除法运算符/有两个int参数时,它将返回一个表示截断结果的int.
您可以在不使用浮点数的情况下获得舍入除法,如下所示: int a; int den = 16; int b = (a + den - 1) / den; 哪个会给你你所期望的: a ∈ [0],b = 0 / 16 = 0,a ∈ [1,16],b = [16,31] / 16 = 1,a ∈ [17,32],b = [32,47] / 16 = 2,a ∈ [33,48],b = [48,63] / 16 = 3,a ∈ [49,64],b = [64,79] / 16 = 4,... 请注意,这只有在a和b为正数时才有效,并且要注意可能存在溢出的情况. int b = (a - 1) / den + 1; 唯一的缺点是当a = 0时它将返回1.如果这是一个问题,你可以添加如下内容: int b = (a - 1) / den + 1 - !a; 请注意,您也可以以相同的方式处理负值(从零开始舍入): int b = (a > 0) ? (a - 1) / den + 1 : (a - den + 1) / den; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |