Constrain() - warning: second operand of conditional expression has no effect

I commend you on wanting to write warning-free code.

As outsider has pointed out, you are not using constrain() correctly. It doesn't modify the value of a. It returns the constrained value. See:

Even after that change you still have a warning:

C:\Users\per\AppData\Local\Temp\arduino_modified_sketch_524349\sketch_apr05b.ino: In function 'void setup()':

C:\Users\per\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.21\cores\arduino/Arduino.h:95:39: warning: comparison is always false due to limited range of data type [-Wtype-limits]

 #define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))

                                       ^

C:\Users\per\AppData\Local\Temp\arduino_modified_sketch_524349\sketch_apr05b.ino:5:7: note: in expansion of macro 'constrain'

   a = constrain(a, 0, 250); // 0-254 causes warning

       ^

I'm thinking the best solution in this case is to use min() instead of constrain():

a = min(a, 100);