Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #168584

Re: Increment/decrement a variable with a maximum

Subject Re: Increment/decrement a variable with a maximum
Newsgroups comp.lang.c
References <tno602$2cj2$1@dont-email.me>
From Richard Damon <Richard@Damon-Family.org>
Message-ID <1cOnL.14222$0dpc.2893@fx33.iad> (permalink)
Organization Forte - www.forteinc.com
Date 2022-12-18 19:25 -0500

Show all headers | View raw


On 12/18/22 5:59 PM, pozz wrote:
> Suppose you have two uint32_t variables (a and b) that you want to add 
> together and another uint32_t variable (max) that is the maximum that 
> the result could assume. A silly code could be:
> 
>    a += b;
>    if (a > max) {
>      a = max;
>    }
> 
> Of course, this doesn't work well for every values of a, b and max.
> 
> For example, for a=0xFFFF'FFFC, b=10 and max=0xFFFF'FFFE.
> 
> 
> Could you suggest a better method? I'm thinking of:
> 
>      a += b;
>      if ((a < b) || (a > max)) {
>          a = max;
>      }
> 
> And for decrement?
> 

Decrement is simple since b is unsigned:

   if(a < b) a = 0;
   else a -= b;


The increment case can be simplified a bit if we can assume "reasonable" 
values for b, such that b <= max to:

   if(a > max-b) a = max;
   else a += b;

Back to comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Increment/decrement a variable with a maximum pozz <pozzugno@gmail.com> - 2022-12-18 23:59 +0100
  Re: Increment/decrement a variable with a maximum Siri Cruise <chine.bleu@yahoo.com> - 2022-12-18 15:07 -0800
  Re: Increment/decrement a variable with a maximum Richard Damon <Richard@Damon-Family.org> - 2022-12-18 19:25 -0500
  Re: Increment/decrement a variable with a maximum Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-12-18 16:41 -0800
  Re: Increment/decrement a variable with a maximum antispam@math.uni.wroc.pl - 2022-12-19 14:39 +0000
  Re: Increment/decrement a variable with a maximum Kaz Kylheku <864-117-4973@kylheku.com> - 2022-12-20 13:44 +0000
    Re: Increment/decrement a variable with a maximum Kaz Kylheku <864-117-4973@kylheku.com> - 2022-12-20 13:54 +0000
    Re: Increment/decrement a variable with a maximum Jame O' Brian <invalid@gmail.com> - 2022-12-20 18:12 +0000
      Re: Increment/decrement a variable with a maximum Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2022-12-20 18:21 +0000
      Re: Increment/decrement a variable with a maximum "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2022-12-20 12:52 -0800
        Re: Increment/decrement a variable with a maximum Öö Tiib <ootiib@hot.ee> - 2022-12-23 05:21 -0800
          Re: Increment/decrement a variable with a maximum "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2022-12-23 13:53 -0800

csiph-web