C not operator why do I get a warning -
whats wrong code
typedef unsigned char datum; /* set data bus width 8 bits. */ datum pattern; datum antipattern; antipattern = ~pattern; remark[pa091]: operator operates on value promoted int (with possibly unexpected result) c:\filepath...\file.c 386 compiler iar ewarm why should 2 char variables need converted int. why should complain change of sign when declared unsigned.
any idea cast use rid of warning?
the rules of c require unsigned char operands converted int (except in perverse c implementations).
once operand int, signed, , ~ operator may give unexpected results, because semantics signed integers , bit representations not specified c. compiler helpfully warning this.
you should use antipattern = ~ (unsigned int) pattern;. unsigned int, guaranteed value represented simple binary.
Comments
Post a Comment