char是分配1字节,存储的是ASCII码,A:65,a:97;
在命名char类型是不要使用双引号,c中必须单引号,在java中就高级点了什么都可以。
补充:printf()输出时对于char有点不同,使用“”%d“是输出字符代表的ASCII码。使用:%c,是输出单个字符;使用%s:就是输出多个字符了。
代码:
#include
int main(void)
{
char q=1;
char a=254;
char aa=255;
char z=256;
char x=257;
char c=258;
char v=512;
char b=1024;
printf("%d\n",q);
printf("%d\n",a);
printf("%d\n",aa);
printf("%d\n",z);
printf("%d\n",x);
printf("%d\n",c);
printf("%d\n",v);
printf("%d\n",b);
char s[2]={'ajjyyihgkk','y'};
printf("%s\n",s);
return 0;
}
输出结果:
代码语言:javascript代码运行次数:0运行复制1
-2
-1
0
1
2
0
0
ky至于最后一个你看人以自己试试,的却是这样的。
代码:
#include
int main(void)
{
char dfd='asa';
printf("%s",dfd);
return 0;
}
代码结果:
代码语言:javascript代码运行次数:0运行复制signal: segmentation fault (core dumped)原因就是:char的存储空间是1字节;
代码:
#include
int main(void)
{
int max=4;
int aa []={'1','2','3','4','a'};
int *per[4];
for(int i=0;i<5;i++){
per[i]=&aa[i];
printf("%d\n",aa[i]);
}
return 0;
}
代码结果:
代码语言:javascript代码运行次数:0运行复制49
50
51
52
97提示:只要你加了:‘’,这就说明这就是char类型,int与char类型之间是可以进行相互转化的。最后输出的是ASCII码。
再来一段对比代码
代码1:
#include
int main(void)
{
int max=4;
int aa []={1,2,3,4,'a'};
int *per[4];
for(int i=0;i<5;i++){
per[i]=&aa[i];
printf("%d\n",*per[i]);
}
return 0;
}
输出结果:
代码语言:javascript代码运行次数:0运行复制1
2
3
4
97代码2:
#include
int main(void)
{
int max=4;
int aa []={1,2,3,4,'a'};
int *per[4];
for(int i=0;i<5;i++){
per[i]=&aa[i];
printf("%d\n",per[i]);
}
return 0;
}
输出结果:
代码语言:javascript代码运行次数:0运行复制-1790809104
-1790809100
-1790809096
-1790809092
-1790809088提示:
之间的差距就是一个*,就是拿到地址之后的存储内容。
代码:
#include
const int MAX = 4;
int main ()
{
const char *names[] = {
"Zara Ali",
"Hina Ali",
"Nuha Ali",
"Sara Ali",
};
int i = 0;
for ( i = 0; i < MAX; i++)
{
printf("Value of names[%d] = %s\n", i, names[i] );
}
char aa[]="aa";
int ss='a'+'a';
printf("%s\n",aa);
printf("%d",ss);
return 0;
}
代码结果:
代码语言:javascript代码运行次数:0运行复制Value of names[0] = Zara Ali
Value of names[1] = Hina Ali
Value of names[2] = Nuha Ali
Value of names[3] = Sara Ali
aa
194提示:int类型也是可以复制字母,并且有加减运算。