C语言的字符问题

yuffonconnie 2011-05-28 09:28:39
int main() {

char cc = 0;

if(cc == '\0')
printf("%c\n", cc);
return 0;
}

这段程序,输出为什么是
a
啊?换成printf("%s\n", cc);就成null了,
求高人指点
...全文
109 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiongtaaaab 2011-05-29
  • 打赏
  • 举报
回复
这种问题保留着,以后再其它地方多遇到几次,就知道原因了
suisui008 2011-05-29
  • 打赏
  • 举报
回复
看了半天 没看出来怎么回事 在vim里打了一遍 输出为空 正确
以为敲错了和楼主代码不一样 复制粘贴 再次调试 仍然没错 是空
猜测 反正代码没错

另外说一下
printf("%s\n", cc);就成null了, 这个代码是错的 %s 后边的变量必须是指向字符串的指针 你用cc的话 编译器就把cc里存的数据解释成指针了 至于为什么输出空 我猜测一个是越界了 因为os有内存保护 所以显示为null 但是我记得指针越界在gcc里应该是段错误 第二个猜测是 os的内存空间不包括cc对应的地址 所以显示null 这个猜测我有觉得不太对 cc是1字节 而地址是4字节 无论如何也应该有这个地址啊
lijianbin9 2011-05-28
  • 打赏
  • 举报
回复
等待 高人给解答。
xinsipine 2011-05-28
  • 打赏
  • 举报
回复
这是怎么回事?
yuffonconnie 2011-05-28
  • 打赏
  • 举报
回复

就是这个问题了
ljhhh0123 2011-05-28
  • 打赏
  • 举报
回复
tiny c compiler 0.9.25 for winxp
输出为空。
新加坡下雨了 2011-05-28
  • 打赏
  • 举报
回复
应该输出为一个空字符,因为这个字符是没有东西,用%s是null对了
AnYidan 2011-05-28
  • 打赏
  • 举报
回复
莫非你用的不是 ascii 码

在 ascii 码中 0 就是 '\0'对应 nul, 输出 “空”
该成 "%s" 后,你的字符串中只有一个结尾符,输出 null表示空串
yuffonconnie 2011-05-28
  • 打赏
  • 举报
回复
换到linux下,就不是a了,这不是我的vs出了问题了吧
yuffonconnie 2011-05-28
  • 打赏
  • 举报
回复
我用的是vc6.0,莫不是我的cpu出了问题
csc_xixi 2011-05-28
  • 打赏
  • 举报
回复
不知道LZ用的什么编译器,我用的是VC6.0,输出为空
yuffonconnie 2011-05-28
  • 打赏
  • 举报
回复
这段程序里的if语句的条件是成立的,也就是说cc的内容却是是ascii里的空字符,也就是第一个,为什么输出到屏幕上是a呢?如果让cc当成字符串来打印的话,换成%s,什么都输出不来,是个null
Bateagle 2011-05-28
  • 打赏
  • 举报
回复
%s不是输出字符串吗??后面貌似得有个'\0'才能输出……

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧