【发布时间】:2019-04-09 00:20:18
【问题描述】:
我已尝试使用gcc -Wall -pedantic-errors -std=c89 编译以下代码:
int main(){
unsigned char a[] = "foo";
unsigned char *b= "foo";
unsigned char *c= ( unsigned char *) "foo";
return 0;
}
为什么第二次初始化会引发错误pointer targets in initialization differ in signedness,但允许其他两个声明?
似乎在第二种情况下,从char *到unsigned char *的隐式转换没有完成。
【问题讨论】:
-
没有从
char*到unsigned char*的“隐式转换”。这就是第二个失败的原因。 -
对,第一个也没有执行该转换。它正在逐元素复制 char 数组
标签: c type-conversion