weixin_41575535
weixin_41575535
采纳率100%
2019-03-08 09:47 浏览 2.9k

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

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

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答 默认 最新

  • 已采纳
    d2262272d 窝米逗佛~ 2019-03-08 11:47

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

    点赞 3 评论 复制链接分享
  • dai20170309 dai20170309 2019-03-08 10:11

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

    点赞 评论 复制链接分享
  • w_yangyangyang w_yangyangyang 2019-03-08 10:11

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

    点赞 评论 复制链接分享
  • weixin_44742041 宁采花不采臣 2019-03-08 10:27

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

    点赞 评论 复制链接分享
  • lumengzhe lumengzhe 2019-03-08 10:55

    应该要用string来定义

    点赞 评论 复制链接分享

相关推荐