C语言char类型变量为什么赋值中文输出乱码?

char类型变量a声明后直接赋值,可以正常输出。
图片说明

然而这样赋值却会输出乱码。
图片说明

这是为什么?想了很久都没想通,是不是我代码写错了?
小白求教!

5个回答

常用中文都占两个字节
你的第一种写法 相当于 只用了 a[0] - a[4]
其中 a[0]-a[1] == 你 a[2]-a[3]== 好 a[4] == \0 结束符
而 你的第二个 问题就多了
首先 a[10] 已经越界了 数组大小为10 下标 只能取到 a[9];
另外 a[num] 是一个字节 你要复制 5个字节的东西 怎么能行?

一般应该编译都过不了的
1.a[10]这里不能访问,你只能访问到a[9]
2."你好"表示的是一个字符串 ,a[10]表示的是一个字符
3.第二次的打印中a[0]-a[9]这里的值是未定义的

dai20170309
dai20170309 回复weixin_41575535: 第一种方式不是已经解决问题了吗,
9 个月之前 回复
weixin_41575535
weixin_41575535 那有什么办法可以解决吗?
9 个月之前 回复

因为一个中文字是两个字符,而char类型只能存一个字符

赋值方式没有搞对,应该string a[10]=“你好”

应该要用string来定义

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!