csapp:无符号数可能造成的程序bug
出自csapp练习2.26
size_t strlen(const char *s); int strloner(char *s,char *t) {return strlen(s)-strlen(t); }
乍一看没什么问题,但是size_t是定义为unsigned int的,那么当s串长度小于t串,计算结果是负数,对于无符号数既是一个很大的无符号数,这样返回结果为1,结果错误
改正可以采用避免无符号数计算的下面代码,适合时可计算长度差
int strlonger(char *s,char *t) {return (int)strlen(s)-(int)strlen(t)>0; }
当然本问题只要比较长度,可以改成下面代码,不引入计算就行
int strlonger(char *s,char *t) {return strlen(s)>strlen(t); }
转载于:https://www.cnblogs.com/mintmy/p/4189097.html
csapp:无符号数可能造成的程序bug相关推荐
- 无符号数、有符号数、补码在汇编中的运用及相关注意事项
1.原码.反码.补码知识的复习: 三者的最高位均为符号位.我以前一直没弄明白的是为何8位补码的表示范围是-128~127,今天查阅了相关资料,于此记下. 仍然以8位为例: 原码的表示范围:-127~- ...
- 怎么区分有符号数和无符号数
转载至:http://www.myexception.cn/program/1264261.html 我还是搞不清指令本身是如何区分有符号数和无符号数!(问题汇总) 论坛的一个CSDN提问,对各方面的 ...
- C语言之(有关%d和%u的有关内容,输出方法)(有符号和无符号在内存中的存储情况)(整形无符号数和有符号数是如何进行计算的,整形无符号数和有符号数在循环中的应用举例)
在C语言的课本中,我们常见的是%u,但我们平时在写代码常用的确是%d,它们二者之间有什么区别呢? 表示形式上 %u表示输入输出格式说明符,是按照unsigned int(无符号十进制数据)格式输入或输 ...
- 有符号数(signed) 和 无符号数(unsigned)
我们在程序中看到的数字都是十进制值(加OX前缀或H后缀等修饰的数值除外),但在计算机底层它们都是以二进制的形式表示的.即用0和1来表示,对各种进制之间的转换不熟悉的可以看看,进制转换 和 举例说明 有 ...
- 抢车位中的排名bug(比較使用了无符号数)
昨天把这个发在了qzone,想来还是怪怪的,还是转过来不吧,纯当发现了一个虫子,玩笑一下.只是csdn如今不能贴图,挺郁闷的,原文在http://user.qzone.qq.com/110907073 ...
- 抢车位中的排名bug(比较使用了无符号数)
昨天把这个发在了qzone,想来还是怪怪的,还是转过来不吧,纯当发现了一个虫子,玩笑一下.不过csdn现在不能贴图,挺郁闷的,原文在http://user.qzone.qq.com/110907073 ...
- 编写计算表达式(X-Y+25)/Z的值得程序,要求将其商和余数分别放在A、B单元中。(设X和Y是32位无符号数,A、B和Z是16位无符号数,不考虑溢出情况。)
编写计算表达式(X-Y+25)/Z的值得程序,要求将其商和余数分别放在A.B单元中.(设X和Y是32位无符号数,A.B和Z是16位无符号数,不考虑溢出情况.) P151 例4.8 汇编思路:首先在DA ...
- 有符号数与无符号数比较-详解
正如我们所知道的,编程语句都有很多的基本数据类型,如char,inf,float等等,而在C和C++中还有一个特殊的类型就是无符号数,它由unsigned修饰,如unsigned int等.大家有没想 ...
- 信息存储 整数表示 原码 反码 补码 无符号数 有符号数 转换 扩展 截断
虚拟内存,地址,虚拟地址空间 程序对象:程序数据.指令和控制信息 16进制 字数据大小 字长 寻址和字节顺序 最小的地址 小端法和大端法 字符串表示 ascii unicode 代码表示 布尔代数 c ...
最新文章
- Request: Headless HTML rendering engine
- RID枚举工具RidEnum
- centos下rmp包离线下载
- html底部自动加载下一页,js页面滚动到底部时自动加载下一页数据
- Java知识整理——远程方法调用
- Web UI⾃动化测试平台,专治Web 的各种疑难杂症。
- 函数体中的全局变量与局部变量
- 《当程序员的那些狗日日子》(三十六)无名的配角
- flink 异步io mysql 缓存_Flink用于外部数据访问的异步I/O
- Android--UI控件
- 【数据结构与算法】二分法的边界问题总结
- 计算机专业毕业设计—351个VB管理系统源码打包(计算机专业整理)
- 全国计算机软考中级试题,计算机软考中级(网络工程师)历年真题汇总
- linux 搜索文件后缀名,Linux -find、文件后缀名
- Unity插件——Odin 学习笔记(三)
- linux kvm usb设备,KVM使用USB设备的方法
- 计算机WORD列宽行高怎么设置,word2010表格列宽和行高怎么设置
- 在python中安装包出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))
- gmail 邮箱服务器,gmail邮箱设置
- 如何动态创建水晶报表