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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux中atoi函数的实现 值得借鉴,atoi 函数实现

發布時間:2023/12/20 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux中atoi函数的实现 值得借鉴,atoi 函数实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

要考慮的東西實在也挺多的。總結如下:

1 前面空格分隔符號的時候

2 第一個符號位處理+ -

3 遇到非數字字符退出

4 為正數的時候,大于INT_MAX上溢

5 為負數的時候, 小于INT_MIN下溢

6 為空字符串或者空指針的時候

1 int atoi(const char *str)

2 {

3 if (str == nullptr) return 0;

4 //注意:判斷空字符串數組

5 if(*str == ‘\0‘) return 0;

6 long long llnum = 0;

7 int sign = 1;

8

9 while (*str == ‘ ‘)

10 {

11 str++;

12 }

13 if (*str == ‘-‘)

14 {

15 sign = -1;

16 str++;

17 }

18 //注意:不要溜了要判斷+號的情況

19 else if(*str == ‘+‘)

20 {

21 str++;

22 }

23 while (*str >= ‘0‘ && *str <= ‘9‘)

24 {

25 int i = *str - ‘0‘;

26 llnum = llnum*10 + i;

27 if (llnum*sign > INT_MAX)

28 {

29 llnum = INT_MAX;

30 break;

31 }

32 else if (llnum*sign < INT_MIN)

33 {

34 llnum = INT_MIN;

35 break;

36 }

37 str++;

38 }

39 return int(sign*llnum);

40 }

頭文件和INT_MAX和INT_MIN的含義用法。

一般情況下,C中int類型32位,范圍是-2147483648到2147483647.

(1)最輕微的上溢是 INT_MAX + 1 :結果是 INT_MIN。

(2)最嚴重的上溢是 INT_MAX + INT_MAX :結果是 -2。

(3)最輕微的下溢是 INT_MIN - 1 :結果是 INT_MAX。

(4)最嚴重的下溢是 INT_MIN +INT_MIN :結果是 0。

應付溢出的最佳方法就是防范于未然:充分了解數據的范圍,選擇恰當的變量類型。

時間: 10-29

總結

以上是生活随笔為你收集整理的linux中atoi函数的实现 值得借鉴,atoi 函数实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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