字符长度的问题?
小问题一:
#include <stdio.h>
main()
{ char p[]={ 'a ', 'b ', 'c '}, q[]= "abc ";
printf( "%d %d\n ", sizeof(p),sizeof(q));
};
答案为什么是3,4呀?
小问题二:
#include <stdio.h>
main()
{ char a1= 'M ', a2= 'm ';
printf( "%c\n ", (a1, a2) ); }
这个输出的是M,为什么是这样的呀?
请高手指教下```
[解决办法]
1、
p[]={ 'a ', 'b ', 'c '},是字符数组,只包含了p[0]~p[2]共3个元素;
q[]= "abc ";是字符串,字符串是以 '\0 '结尾的,也就是说p[]={ 'a ', 'b ', 'c ', '\0 '},共有4个元素
[解决办法]
1,字符串常量的末尾,系统会加上一个 '\0 ',因此sizeof(q)为4
2,你只输出了一个字符,所以输出为M.应为printf( "%c\n%c\n ",a1,a2)
[解决办法]
char a1= 'M ', a2= 'm ';
printf( "%c\n ", (a1, a2) );
----------
这个的输出应该是m
逗号表达式的返回是最后一个值得
[解决办法]
xuyanhua1201() ( ) 信誉:100 2007-09-12 19:05:38 得分: 0
我想问下,关于第一个问题 :sizeof()这个函数在计算长度的时候不是忽略了/0的吗?
第二问题
上面的参考答案M.是答案错了吗?
----------------------------------------------------
第一题,
不能这么说,首先sizeof(TYPE)是计算TYPE在内存中实际分配的内存大小,以字节为单位
不存在忽略不忽略/0的说法,第一题之所以会出现3,4的答案是因为分配的内存不同,具体就是
/0的存在
第二题
答案确实应该输出m
你的答案错了