C标准没有规定char是signed char还是unsigned char,由编译器决定,在vc编译器、x86上的gcc将char默认为signed char;而arm-linux-gcc将char默认为unsigned char。
当char由不同的编译器编译,执行后可能产生不一样的结果。可通过添加-fsigned-char编译选项解决。
char *,“abcd”常量的类型是char [5]
char *pStr = "abcd"; /* 可以通过编译 */
signed char *pStr = "abcd";
/* test.c:3:18: warning: initializing 'signed char *' with an expression of type
'char [5]' converts between pointers to integer types with different sign
[-Wpointer-sign]
signed char *p = "abcd";
^ ~~~~~~ */
unsigned char *pStr = "abcd";
/* test.c:3:20: warning: initializing 'unsigned char *' with an expression of type
'char [5]' converts between pointers to integer types with different sign
[-Wpointer-sign]
unsigned char *p = "abcd"; */