00问答网
所有问题
char a[]={0,1,2,3}为什么是合法的,为什么不用引号
如题所述
举报该问题
推荐答案 2013-12-17
char a[]={0,1,2,3}; 这是声明 a 是 char 型数组。花括号表示初始化的内容。也就是
a[0]=0;a[1]=1;a[2]=2;a[3]=3;
编译器 根据初始化内容,能算出数组需要多大来存放这些元素。
所以上面声明,等于声明了 char a[4]={0,1,2,3};
char 型实质上是1字节长度有符号整型,所以初值可以是0到正负127左右。
双引号括起的是字符串。
如果声明是 char a[]="0123"; 初始化的内容是字符串,字符串长度是4,另外要加1个字符串结束符,需要5个单元存放。编译器把它处理成: char a[5]="0123";
单引号括起的是字符常量
char a[4]={'0','1','2','3'}; 也可以,字符常量是1字节整型,数值等于字符的ASCII编码。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://00.wendadaohang.com/zd/DTIr0IT0BrjnjnBn0BB.html
其他回答
第1个回答 2013-12-17
那你说int a[]={0,1,2,3}合法不合法呢?如果这个合法,那么char a[]={0,1,2,3}有什么理由不合法呢?在32位平台下int和char的区别只是前者是32位后者是8位而已。你可能认为char就一定是字符串了吧?这里误会!C/C++的字符串用char型数组表示,而不是char型就只能表示字符串,它照样可以表示8位的整型数组——char a[]={0,1,2,3}就是一个具有4个8位整型元素的数组!
第2个回答 2013-12-17
你可以理解成给 char 变量赋值为什么可以是整数呢? 比如 char c = 0; 因为赋予的是对应的ASCII码的值,所以是可以的。本回答被提问者采纳
第3个回答 2013-12-17
请看书,C++55页
追问
没学啊
相似回答
char
a[]={0,1,2,3}为什么是合法的,为什么不用引号
?
答:
不加单
引号
指的是ASCII码值
,0
、
1
、
2
、
3
分别对应字符:你输出该数组会发现其实都是不可见字符。如果想要输出字符'0'、'1'、'2'、'3',应该定义为:
char
a[] = {
48,49,50,51}
定义
一
个char类型的初值需要加单
引号
吗
,char
a = '0' ;和char a
=
0
...
答:
而
char
a=0
;和char a='\0';是
一
样的,都是将0赋值给变量a
C语言
,为什么
int a[]="string"可以是对
的,
而
char
a[]={0,1,2}
却是错
答:
int a[]="string"; 这个表达式不太可能编译通过;首先数组不能作为左值,其次数组a为int*而"string"为
char
*不通过强制转换无法复制。char
a[]={0,1,2}
我觉得可以通过编译,但是会发生截断,取决于系统的大小段问题。这个0,1,2本身就可以作为anscii码只是不可见罢了!
...="0123";这样有问题?还有
char
a[]={0,1,2,3,
4,5
},
这里面的元素不是...
答:
因此用
char
*
a[]=
初始化是可以的。这是常量整型,虽然每个数字都有自己的实际地址,但他们的组合不是一个数组。这样让一个指针指向一个没有统一首地址的一堆数字是错误的。可以先定义一个二维数组,然后让指针指向它。int b[][
3]={,},
*a[
2
];a[
0
]=b[0];a[1]=b[1];...
大家正在搜
char a[10]
charm是什么意思
nchar和char的区别
char s[10]
char *p[10]
c语言char怎么用
char a='a'
char c='\72'
char(10)
相关问题
C语言,为什么int a[]="string"可以是对的,而...
定义一位数组。 int a[5]="0123";这样有问题?...
c语言中char a[ ][3]={'123','1'} 是...
C语言问题char a[5] = {2,1,0,3,4}; ...
A、int a[ ]={0,1,2,3,4,5};
定义一个char类型的初值需要加单引号吗,char a = ...
那个 char a[3][80]={'\0'}; 为什么要加...
char a[3]=""和char a[3]=" "一样吗?...