日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

atoi函数_吊打面试官 | 腾讯经典考点写代码实现atoi函数

發布時間:2024/1/23 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 atoi函数_吊打面试官 | 腾讯经典考点写代码实现atoi函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊藍字關注我哦

以下是本期干貨視頻視頻后還附有文字版本哦

▼《騰訊經典考點-寫代碼實現atoi函數》▼

ps:請在WiFi環境下打開,如果有錢任性請隨意

在騰訊面試時,經常會被問到如何用代碼實現atoi函數?這道題看起來很簡單,如果需要實現基本功能,大概10行以內就可以搞定。比如如下代碼:int?atoi(char*?str){ int number = 0; while(*str != 0) { number = number * 10 + *str - '0'; ++str; } return number; }但是上面的代碼漏洞百出,不是面試官想要的代碼。上述代碼在遇到特殊情況時,就會產生不靠譜的結果。比如
  • 空指針

  • 正負號

  • 溢出

  • 非法字符

我們在寫代碼時,需要把這些特殊情況全部考慮進去,才能寫出一個讓面試官滿意的代碼。一個邏輯比較完備的代碼如下所示:int?atoi(const?char*?str){ //給一個比較大的數據類型,方便處理溢出 long long num = 0; //判斷指針是否為空,以及是否有有效字符 if(str != nullptr && *str != '\0') { //是否為負數 bool minus = false; if(*str == '+') ++str; else if(*str == '-') { ++str; minus = true;} if(*str != '\0') { num = StrToInt(str, minus); } } return (int) num;}long long StrToInt(const char* str, bool minus){ long long num = 0; while(*str != '\0') { //判斷是否為有效字符 if(*str >= '0' && *str <= '9') { //判斷正負數 int flag = minus ? -1 : 1; num = num * 10 + flag * (*str - '0'); //判斷是否溢出,包括正溢出和負溢出 if((!minus && num > 0x7fffffff) || (minus && num < (signed int) 0x80000000)) { num = 0; break; } ++str; } else { num = 0; break; }} return num;}作者:周榮審核:王海斌編輯:文藝

點個在看,點亮"offer"

總結

以上是生活随笔為你收集整理的atoi函数_吊打面试官 | 腾讯经典考点写代码实现atoi函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。