C语言中的无符号数

来源:互联网 发布:胎教讲故事软件 编辑:程序博客网 时间:2024/06/06 16:44

首先来看一道题目:

 

自己写一遍运行一下,发现打印了“ok”,怪怪的,str2str1长吗?

为什么呢?

原因是,Char型数组的长度一定是>=0,所以strlen()函数的返回值是一个无符号整数,4-7=-3在无符号整数中自动转化成一个正整数,在visual studio 2012debug会看到如下所示的结果,差值是一个429...的大数,所以结果出错:

 

下面,程序做一点点修改,把strlen(str2)strlen(str1)强转成int型,int型默认为有符号数,就出现了正确的结果,如下图所示:

 

 

另外,在看一个特别的地方:

 

Str2数组有5个字符,但是strlen(str2)的返回值却是4,原来str[4]=’\0’,在内存中存储标志着字符串的结束,但是却不算在字符串的长度之内。

0 0
原创粉丝点击