如何在添加值时使用指标参数来检查正向和负向溢出?

问题描述

这是我的第一篇帖子,如果我在提问中缺少任何关键细节,我们深表歉意。

我有一种方法试图使用签名 void add (short *acc,char mode) 添加两个短值,并检测是否有溢出并最终添加这些值。

我不知道我在做什么错,但是当我设置 *acc = acc + acc2(second value) 时,程序崩溃了。老实说,我无法弄清楚如何使用签名,而不会导致程序崩溃。

我目前使用的方法是更改​​签名并使之返回,而不是使用在功能方面一直很好的指针:

    short add (short acc,char mode){
       short acc2 = get_operand(mode);
       short acc1 = acc;
       if (acc >= 0) {
          if (acc2 > SHRT_MAX - acc) {
             printf("Positive Overflow detected");
          }
          
          //printf("%d",acc + acc2);
          return acc + acc2;
             //*acc = acc + acc2;
          
       } else {
          if (acc2 < 0 && acc + acc2 >= 0) {
             /* handle negative overflow */
             printf("Negative Overflow detected");
          }
          //printf("%d",acc + acc2);
          return acc + acc2;   
             //*acc =  acc + acc2;
          
       }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)