在ADS1.2中出现了这样的警告:Warning : C2921W: '=': implicit narrowing cast from 'int' to 'unsigned char' main.c line 813
程序如下: int main( void ) { unsigned char ch1, ch2;
ch1 = ch2 + 1;
returen 0; } 如果是ch1 = ( unsigned char )( ch2 + 1 );得话就没有警告了。 是不是可以这样理解,在ARM中,只要进行数据运算,所有变量都是按照默认的32位int类型进行处理,因此虽然定义时为unsigned char 类型,但得到的结果是int型,需要显示的进行类型转化? 不知道我上面的理解对不对,望各位指点,谢谢! |