4 Replies Latest reply on Aug 11, 2016 10:27 AM by user_385543602

# uint8 vs int8 causes different outcomes

Hi,

The following evaluates true if the variables are int8, but not true if uint8 (which is correct).

// Turn relays on if over set level
if(relay[0] >= dataLocal.level + dataLocal.hysteresis)
{
FET_1_Write(1);
}

The values are:  relay[0] = 0, dataLocal.level = 128, dataLocal.hysteresis = 10.

What am I missing here?  it seems like it is defying computer logic and calling 0 greater than 138...

Thank you,
Tom

• ###### 1. Re: uint8 vs int8 causes different outcomes

Hi Tom

`for uint8 Types  128u + 10u = 138u  for int Types  128 + 10 = -118 !   Reiner`
• ###### 2. Re: uint8 vs int8 causes different outcomes

Hi,

Is this because it is treating the 128 as a hex number?

Pardon my ignorance.

Regards,
Tom

• ###### 3. Re: uint8 vs int8 causes different outcomes

Partly.

The values an uint8 can represent are from 0 ro 255. From 255 it would overflow to 0

The values an int8 can represent are from -128 to 127, From 127 it would overflow to -128

Bob

1 of 1 people found this helpful
• ###### 4. Re: uint8 vs int8 causes different outcomes

That is where I went wrong, thank you for the explanation, gentlemen.

Regards,

Tom