出自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. 无符号数、有符号数、补码在汇编中的运用及相关注意事项

    1.原码.反码.补码知识的复习: 三者的最高位均为符号位.我以前一直没弄明白的是为何8位补码的表示范围是-128~127,今天查阅了相关资料,于此记下. 仍然以8位为例: 原码的表示范围:-127~- ...

  2. 怎么区分有符号数和无符号数

    转载至:http://www.myexception.cn/program/1264261.html 我还是搞不清指令本身是如何区分有符号数和无符号数!(问题汇总) 论坛的一个CSDN提问,对各方面的 ...

  3. C语言之(有关%d和%u的有关内容,输出方法)(有符号和无符号在内存中的存储情况)(整形无符号数和有符号数是如何进行计算的,整形无符号数和有符号数在循环中的应用举例)

    在C语言的课本中,我们常见的是%u,但我们平时在写代码常用的确是%d,它们二者之间有什么区别呢? 表示形式上 %u表示输入输出格式说明符,是按照unsigned int(无符号十进制数据)格式输入或输 ...

  4. 有符号数(signed) 和 无符号数(unsigned)

    我们在程序中看到的数字都是十进制值(加OX前缀或H后缀等修饰的数值除外),但在计算机底层它们都是以二进制的形式表示的.即用0和1来表示,对各种进制之间的转换不熟悉的可以看看,进制转换 和 举例说明 有 ...

  5. 抢车位中的排名bug(比較使用了无符号数)

    昨天把这个发在了qzone,想来还是怪怪的,还是转过来不吧,纯当发现了一个虫子,玩笑一下.只是csdn如今不能贴图,挺郁闷的,原文在http://user.qzone.qq.com/110907073 ...

  6. 抢车位中的排名bug(比较使用了无符号数)

    昨天把这个发在了qzone,想来还是怪怪的,还是转过来不吧,纯当发现了一个虫子,玩笑一下.不过csdn现在不能贴图,挺郁闷的,原文在http://user.qzone.qq.com/110907073 ...

  7. 编写计算表达式(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 ...

  8. 有符号数与无符号数比较-详解

    正如我们所知道的,编程语句都有很多的基本数据类型,如char,inf,float等等,而在C和C++中还有一个特殊的类型就是无符号数,它由unsigned修饰,如unsigned int等.大家有没想 ...

  9. 信息存储 整数表示 原码 反码 补码 无符号数 有符号数 转换 扩展 截断

    虚拟内存,地址,虚拟地址空间 程序对象:程序数据.指令和控制信息 16进制 字数据大小 字长 寻址和字节顺序 最小的地址 小端法和大端法 字符串表示 ascii unicode 代码表示 布尔代数 c ...

最新文章

  1. Request: Headless HTML rendering engine
  2. RID枚举工具RidEnum
  3. centos下rmp包离线下载
  4. html底部自动加载下一页,js页面滚动到底部时自动加载下一页数据
  5. Java知识整理——远程方法调用
  6. Web UI⾃动化测试平台,专治Web 的各种疑难杂症。
  7. 函数体中的全局变量与局部变量
  8. 《当程序员的那些狗日日子》(三十六)无名的配角
  9. flink 异步io mysql 缓存_Flink用于外部数据访问的异步I/O
  10. Android--UI控件
  11. 【数据结构与算法】二分法的边界问题总结
  12. 计算机专业毕业设计—351个VB管理系统源码打包(计算机专业整理)
  13. 全国计算机软考中级试题,计算机软考中级(网络工程师)历年真题汇总
  14. linux 搜索文件后缀名,Linux -find、文件后缀名
  15. Unity插件——Odin 学习笔记(三)
  16. linux kvm usb设备,KVM使用USB设备的方法
  17. 计算机WORD列宽行高怎么设置,word2010表格列宽和行高怎么设置
  18. 在python中安装包出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))
  19. gmail 邮箱服务器,gmail邮箱设置
  20. 如何动态创建水晶报表

热门文章

  1. [YTU]_1096( 字符逆序)
  2. Cuda中Global memory中coalescing例程解释
  3. [html] 回车表单自动跳转如何禁止
  4. linux-linux top 命令各参数详解
  5. ssm学习的第一个demo---crm(2)
  6. centos 7 配置 到多站点设置
  7. 关于面试,我也有说的
  8. cv2.putText 文字换行('\n')无法解析换行
  9. 谈谈对线程与进程的理解
  10. 关于java类型数据组的调用