诡异: keil编译后居然出现不同的中文字符有不同的字符长度

2020-02-05 08:59发布

#include <reg52.h>
#include <intrins.h>

int temp1=0;
int temp1=0;
void main()
{ char *str1="数";
temp1=strlen(str1);    //把字符串str1的长度赋值给temp1

char *str2="深";
temp2=strlen(str2);   //把字符串str2的长度赋值给temp2
}


以上代码在keil 4中编译没问题,然后我按ctrl+F5仿真调试发现temp1=1,temp2=2 。然而我把上面的代码稍修改后(如下所示代码)复制到VC 6.0里去编译,发现temp1=temp2=2 ,
修改后的代码:
#include<iostream>
#include<string>
using namespace std;

int temp1=0;
int temp1=0;
void main()
{ char *str1="数";
temp1=strlen(str1);    //把字符串str1的字符长度赋值给temp1

char *str2="深";
temp2=strlen(str2);   //把字符串str2的字符长度赋值给temp2
printf("%d ",temp1);
printf("%d ",temp2);
}

这样的结果让我很感到意外:在keil中为什么会出现中文字符有不同的字符长度呢?,好诡异哟~
我想不透,请求高人指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
chinabn
1楼-- · 2020-02-05 14:41
CA FD C9 EE

0xFD问题
gzMK
2楼-- · 2020-02-05 14:42
 精彩回答 2  元偷偷看……
bodaohjd0
3楼-- · 2020-02-05 18:11
谢谢2楼和3楼的两位好心人,我按照你们的提示把问题解决啦
我实在是很感谢你们~
tlptotop
4楼-- · 2020-02-05 22:18
keil中,凡是和汉字有关系的问题,首先要看汉字编码,看里边有没有0xfd。通常99%都是0xfd这个bug造成的。

一周热门 更多>