C语言的字符问题
int main() {
char cc = 0;
if(cc == '\0')
printf("%c\n", cc);
return 0;
}
这段程序,输出为什么是
a
啊?换成printf("%s\n", cc);就成null了,
求高人指点
[解决办法]
看了半天 没看出来怎么回事 在vim里打了一遍 输出为空 正确
以为敲错了和楼主代码不一样 复制粘贴 再次调试 仍然没错 是空
猜测 反正代码没错
另外说一下
printf("%s\n", cc);就成null了, 这个代码是错的 %s 后边的变量必须是指向字符串的指针 你用cc的话 编译器就把cc里存的数据解释成指针了 至于为什么输出空 我猜测一个是越界了 因为os有内存保护 所以显示为null 但是我记得指针越界在gcc里应该是段错误 第二个猜测是 os的内存空间不包括cc对应的地址 所以显示null 这个猜测我有觉得不太对 cc是1字节 而地址是4字节 无论如何也应该有这个地址啊