我正在尝试在char变量中为字母获取数字ASCII。到目前为止我的代码是:
int main (int argc,char* argv[]) {
char c="A"; //here error
char b="'"; //here error
char d="z"; //and here error
printf("%d\n %d\n %d\n",c,b,d);
}
但我收到以下错误:
analizer.c: In function ‘main’: analizer.c:13:8: warning: initialization makes integer from pointer without a cast [enabled by default] analizer.c:14:8: warning: initialization makes integer from pointer without a cast [enabled by default] analizer.c:15:8: warning: initialization makes integer from pointer without a cast [enabled by default]
答案 0 :(得分:6)
"A"
是字符串文字(字符数组)。 'A'
是字符常量(整数)。你想要的应该是后者。
#include <stdio.h>
int main (int argc,char* argv[]) {
char c='A';
char b='\''; // use escape sequence
char d='z';
printf("%d\n %d\n %d\n",c,b,d);
}
编译器将允许您提取数组的元素(字符串文字),如下所示,但在这种情况下使用字符常量应该更好。
#include <stdio.h>
int main (int argc,char* argv[]) {
char c="A"[0]; // a typical way to deal with arrays
char b=*"'"; // dereferencing of a pointer converted from an array
char d=0["z"]; // a tricky way: this is equivalent to *((0) + ("z"))
printf("%d\n %d\n %d\n",c,b,d);
}
答案 1 :(得分:2)
基本上,当你这样做时(无效),你指向一个字符串文字:
char c="A";
您需要为变量写一个字符:
char c='A';
char b='\'';
char b='z';
答案 2 :(得分:1)
在C
字符串中只是一个以\0
结尾的字符数组。因此,如果您只想使用一个字符,请声明char
变量并使用字符single
引号。如果要使用字符串,请声明char
数组并使用double
引用
char a='A' // just one character
char b[20]="Some_Text"// multiple characters(a string)
在第一种情况下,a
包含&#39; A&#39;的整数值。但在第二个中,b
包含它指向的字符串的基址。必须使用b[]
b[0]
等索引访问数组b[1]
中的每个字符。
您可以使用字符串将单个字符表示为
char a[]="A" // a string of size 1
然后你可以打印它的等价整数
printf("%d",a[0]); //0th element of the string
使用其他答案中描述的单引号方法。