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’,在内存中存储标志着字符串的结束,但是却不算在字符串的长度之内。
相关文章推荐
- C语言单元测试
- c++第三周作业
- C++11的Lambda使用一例:华容道求解
- 基于C++ Lambda表达式的程序优化
- C++流(半搬运)
- 嵌入式C/C++开发中的代码优化(翻译版)
- C++中rand()函数的用法
- 76-C语言中的getchar和putchar详解
- 黑马程序员-OC语言基础学习(四)
- 两个奇葩的C/C++问题
- C++学习之深入理解迭代器——迭代器特性、迭代器标志-iterator_traits
- C语言值传递问题
- C语言值传递问题
- C语言语句及流程控制
- c++11之lambda表达式
- VC++ dll
- C++模板实例化(1)
- C++ new delete执行时机和重载说明
- C++STL容器使用经验总结
- 为什么JNI下的C/C++代码不编译了?