夜雨&(* 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日

悬赏问题

  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥30 自适应 LMS 算法实现 FIR 最佳维纳滤波器matlab方案
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动