诡异: 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中为什么会出现中文字符有不同的字符长度呢?,好诡异哟~
我想不透,请求高人指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。