C 带三个加数的溢出和进位标志

C 带三个加数的溢出和进位标志,c,C,我正在用C写一个项目 我需要检查在做加法、减法、除法和乘法时是否应该设置进位或溢出位。我唯一的问题是我必须用三个加数。例a=a+b+c 检查是否应设置这两个位的最简单方法是什么 编辑:我必须编写一个系统,在每次操作后设置这些标志。所有数字都是有符号整数 编辑2:两个整数的我的解决方案: #define MAXINT 32767 short int a, b, c; short int i, j, k; if (MAXINT - a < b) // carry i=a; i>&g

我正在用C写一个项目

我需要检查在做加法、减法、除法和乘法时是否应该设置进位或溢出位。我唯一的问题是我必须用三个加数。例a=a+b+c

检查是否应设置这两个位的最简单方法是什么

编辑:我必须编写一个系统,在每次操作后设置这些标志。所有数字都是有符号整数

编辑2:两个整数的我的解决方案:

#define MAXINT 32767

short int a, b, c;
short int i, j, k;

if (MAXINT - a < b) // carry

i=a; i>>15; i&=0x01;
j=b; j>>15; j&=0x01;
c=a+b;
k=c; k>>15; k&=0x01;
if(i==j && i!=k) //overflow
#定义MAXINT 32767
短int a,b,c;
短int i,j,k;
if(MAXINT-a >15;i&=0x01;
j=b;j> >15;j&=0x01;
c=a+b;
k=c;k> >15;k&=0x01;
如果(i==j&&i!=k)//溢出

在C语言中,使用
short
int
long
,假定不会发生溢出。编译器利用了这一点,因此在溢出后可能不会表现出预期的行为。为了真正可移植,代码必须确保不会发生溢出

让我们只使用两个变量:
a
b

#include <limits.h>
int safe_add(int a, int b) {
  if (a >= 0) {
    if (b > INT_MAX - a) {
      ; /* handle overflow */
    }
  } else {
    if (b < INT_MIN - a) {
      ; /* handle underflow */
    }
  }
  return a + b;
}
#包括
内部安全添加(内部a、内部b){
如果(a>=0){
如果(b>INT_MAX-a){
;/*句柄溢出*/
}
}否则{
如果(b

C中没有进位或溢出位。这是关于某个平台的吗?一种在C语言中可移植地捕获溢出的方法?这个问题没有很好地说明,但我怀疑OP的任务是编写一个模拟具有这些标志的简单CPU的程序。我编辑了我的问题。啊,所以你不是一点一点地进行计算吗?好吧,让我们看看你是如何使用2个操作数的,我们将看到如何帮助使用3个操作数的。(您说过唯一的问题是使它对3个操作数有效)