csapp:无符号数可能造成的程序bug
生活随笔
收集整理的這篇文章主要介紹了
csapp:无符号数可能造成的程序bug
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
出自csapp練習(xí)2.26
size_t strlen(const char *s); int strloner(char *s,char *t) {return strlen(s)-strlen(t); }乍一看沒(méi)什么問(wèn)題,但是size_t是定義為unsigned int的,那么當(dāng)s串長(zhǎng)度小于t串,計(jì)算結(jié)果是負(fù)數(shù),對(duì)于無(wú)符號(hào)數(shù)既是一個(gè)很大的無(wú)符號(hào)數(shù),這樣返回結(jié)果為1,結(jié)果錯(cuò)誤
改正可以采用避免無(wú)符號(hào)數(shù)計(jì)算的下面代碼,適合時(shí)可計(jì)算長(zhǎng)度差
int strlonger(char *s,char *t) {return (int)strlen(s)-(int)strlen(t)>0; }當(dāng)然本問(wèn)題只要比較長(zhǎng)度,可以改成下面代碼,不引入計(jì)算就行
int strlonger(char *s,char *t) {return strlen(s)>strlen(t); }轉(zhuǎn)載于:https://www.cnblogs.com/mintmy/p/4189097.html
總結(jié)
以上是生活随笔為你收集整理的csapp:无符号数可能造成的程序bug的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Hive与Hbase结合使用
- 下一篇: 【leetcode】3Sum