【发布时间】:2016-02-01 06:06:36
【问题描述】:
我已经搜索过,也许这甚至不是问题,但是在使用 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 时,它给了我字母 J 而不是 A,当我使用 %d 时也是一样,给我 74(J 的字符代码)而不是 65。
我的变量声明中还有一条警告消息:
用
char[2]类型的表达式初始化char的整数转换指针不兼容
这有点奇怪。
现在用这个替换我的代码时:
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
知道这种行为是什么原因造成的吗?我错过了什么还是我没理解什么?
【问题讨论】:
-
"a"是一个字符串(即指针)。'a'是一个字符(即int)。
标签: c xcode string pointers char