哪些错误与此代码C未运营商为什么会
typedef unsigned char datum; /* Set the data bus width to 8 bits. */
datum pattern;
datum antipattern;
antipattern = ~pattern;
Remark[Pa091]: operator operates on value promoted to int (with possibly unexpected result) C:\filepath...\file.c 386
编译器是IAR EWARM 为什么要两个char变量需要转换为int的警告。为什么它应该在一切声明为无符号时抱怨标志改变?
任何想法用什么来摆脱这个警告?
试着铸造'〜pattern' – 2013-04-05 15:51:59
''(datum)〜pattern'不会改变'〜'在'int'上运行的事实。理论上,实现可以采用'pattern',将其转换为'int',反转所有位,将结果解释为补码数,并将其转换为'datum'。然后,结果会从期望的结果中脱离。 – 2013-04-05 15:58:15
@DanielFischer假设我喜欢'antipattern = -pattern;'我会得到警告吗?...因为我没有得到警告 – 2013-04-05 16:10:46