我已经搜索过,也许这甚至都不是问题,但在使用C中的字符处理时(我正在使用Mac上的X-Code)除非我使用指针,否则处理它们时遇到问题
int main(int argc, const char * argv[]){
char myChar = "A";
print("%c\n",myChar);
print("%d\n",myChar);
print("%c\n",65);
print("%c\n",74);
return 0;
}
所以,简单的东西,但这是输出:
>J
>74
>A
>J
如你所见,当我使用%c打印myChar
时,它给了我lettre J而不是A,同样的事情当我使用%d时,给我74(char代码为J)而不是65。
我的变量声明也有一条警告信息:
指向整数转换的指针不兼容,使用
char
类型的表达式初始化char[2]
“
这有点奇怪。
现在用这个替换我的代码时:
int main(int argc, const char * argv[]){
char *myChar = "A";
print("%c\n",*myChar);
print("%d\n",*myChar);
print("%c\n",65);
print("%c\n",74);
return 0;
}
输出符合预期:
>A
>65
>A
>J
有关这种行为到期的任何想法?我错过了什么或者我不理解某事吗?
答案 0 :(得分:4)
在您的代码中,
char myChar = "A";
不正确。 "A"
是字符串文字,不适合char
。你可能想写
char myChar = 'A';
代替。
注意:启用编译器警告并注意它们。