csapp:无符号数可能造成的程序bug
生活随笔
收集整理的這篇文章主要介紹了
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hive与Hbase结合使用
- 下一篇: 【leetcode】3Sum