- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Tom
for uint8 Types 128u + 10u = 138u for int Types 128 + 10 = -118 ! Reiner
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Tom
for uint8 Types 128u + 10u = 138u for int Types 128 + 10 = -118 ! Reiner
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Is this because it is treating the 128 as a hex number?
Pardon my ignorance.
Regards,
Tom
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
That is where I went wrong, thank you for the explanation, gentlemen.
Regards,
Tom