小编Gop*_*hna的帖子

乘法和除法无符号整数

在我的程序中,我必须对无符号整数执行算术运算。

  • 变量a的范围为0到4294967295。
  • 变量b的范围是0到32。

当我通过取a和b的最大值来检查边界条件时,我得到0作为答案,因为当我尝试将aMAX_NS相乘时发生溢出。理想情况下,我应该得到7作为答案。我该如何编写程序这样就可以解决溢出问题,我得到7作为答案,并希望它适用于a和b的其他有效值范围。

#include "stdio.h"

#define MAX_NS 1000000000

 int main()
 {
    unsigned int a =  4294967295;
    unsigned int b =  32 ;

    unsigned int c = ((b * MAX_NS)/a);
    printf("%d",c);


 }
Run Code Online (Sandbox Code Playgroud)

**编辑:**请注意,我不能长时间使用unsigned long。只能将unsigned int用作变量。

c time unsigned overflow multiplying

5
推荐指数
1
解决办法
731
查看次数

标签 统计

c ×1

multiplying ×1

overflow ×1

time ×1

unsigned ×1