您的位置:首页 > 编程语言 > C语言/C++

C语言中的无符号数

2014-03-20 23:39 232 查看

首先来看一道题目:



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

为什么呢?

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



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



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



Str2数组有5个字符,但是strlen(str2)的返回值却是4,原来str[4]=’\0’,在内存中存储标志着字符串的结束,但是却不算在字符串的长度之内。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: