夜雨&(* 2022-01-02 15:18 采纳率: 88.9%
浏览 29
已结题

不懂为什么输出的是这个,望解答

不懂为什么输出的是这个,望解答

#include <stdio.h>

int main()
{
    char str[] = "中文";
    int length, i;

    length = sizeof(str) / sizeof(str[0]);

    printf("length of str: %d\n", length);

    for (i = 0; i < length; i++)
    {
        printf("str[%d] = %d\n", i, str[i]);
    }

    return 0;
}

img

  • 写回答

3条回答 默认 最新

  • 南七灵 2022-01-02 15:45
    关注

    一个汉字在计算机中占两个字节,这里两个汉字共4个字节
    编译器会自动在字符串后加上一个”\0”作为结束符,所以会占5个字节。
    但字符串的长度其实还是4,不包含结尾的结束符,可以使用strlen()来验证
    至于输出负数,由于一个汉字两个字节,单个输出还是以整数形式可能就乱码了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月11日
  • 已采纳回答 1月3日
  • 创建了问题 1月2日