成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊一聊為什么是 0x3f ?

開發 前端
寫 dijkstra 等等經典算法時;我們希望 dist 數組初始值是 無窮大 的數,常常會用到 memset(dist, 0x3f, sizeof dist) 。為什么要給 dist 賦值為 0x3f3f3f3f 呢?

 [[419429]]

為什么是 0x3f ?

寫 dijkstra 等等經典算法時;我們希望 dist 數組初始值是 無窮大 的數,常常會用到 memset(dist, 0x3f, sizeof dist) 。為什么要給 dist 賦值為 0x3f3f3f3f 呢?

首先我們看一下 0x3f 有多大。

  1. #include <iostream> 
  2. #include <cstring> 
  3. #include <algorithm> 
  4. using namespace std; 
  5.  
  6. int main() 
  7.     int a[1]; 
  8.     memset(a, 0x3f, 4); 
  9.     cout << a[0]; 

輸出 1061109567 ,是10^9級別的。

memset 按照字節賦值,因此我們把 4 個 0011 1111 填充到 32 位的 int 上。但問題是,為什么不是 0x4f 或者 0x5f ?

首先 10^9 級別足夠大,其次,也是最重要的,0x3f3f3f3f + 0x3f3f3f3f 等于 0x7e7e7e7e , 不會爆int 。

在很多算法中,我們需要進行諸如 dist[j] > dist[t] + w[t][j] 之類的判斷,如果兩個大于 0x3f3f3f3f 的數相加,那么后果不堪設想。因為溢出并不會報錯,算法邏輯復雜,我們往往很難定位真正的錯誤。

附:近期收集了很多 C++ STL 的妙用... 如下圖片的 C++ 確實有點感觸。

筆記主要放在 github/PiperLiu/ACMOI_Journey[1] 的“經驗”中。有空一并整理。

此外,memset 對于不同的數據類型初始值當然是不同的,有一篇極好的文章:【自用】 memset對于int、long long、float、double 的極值怎么清[2],閱讀原文也可查看。比如 int 對應 0x3f, float 對應 0x4f 。

值得注意的是,我最近在看歪總代碼時,用到初始化 -INF ,直接 memset(a, -0x3f, sizeof a) 也是可以的,無非就是 0x3f 取反加一嘛,從 0011 1111 變為 1100 0001 。但是相加會爆。

參考資料

[1]github/PiperLiu/ACMOI_Journey: https://github.com/PiperLiu/ACMOI_Journey

[2]【自用】 memset對于int、long long、float、double 的極值怎么清: https://blog.csdn.net/vmurder/article/details/46537613

責任編輯:武曉燕 來源: Piper蛋窩
相關推薦

2021-12-29 07:18:20

重構工具資源

2021-12-09 10:17:25

部署實戰Linux

2023-10-24 15:56:23

2024-04-16 08:20:01

React屬性鉆取狀態管理

2023-03-05 18:40:39

iptables防火墻軟件

2021-06-29 08:45:55

邏輯變量法函數

2021-05-25 05:28:05

uniCloud前端項目

2023-09-22 17:36:37

2021-01-28 22:31:33

分組密碼算法

2020-05-22 08:16:07

PONGPONXG-PON

2018-06-07 13:17:12

契約測試單元測試API測試

2022-11-09 08:05:15

JavaScriptsuper()

2019-02-13 14:15:59

Linux版本Fedora

2021-08-04 09:32:05

Typescript 技巧Partial

2021-01-29 08:32:21

數據結構數組

2021-02-06 08:34:49

函數memoize文檔

2022-08-08 08:25:21

Javajar 文件

2018-11-29 09:13:47

CPU中斷控制器

2022-11-01 08:46:20

責任鏈模式對象

2023-07-06 13:56:14

微軟Skype
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产一级 | 热久久久 | 欧美视频中文字幕 | 欧美精品一区二区三区在线播放 | 日韩中出 | 在线欧美一区二区 | 久久小视频 | 日韩中文字幕一区二区 | 免费成人在线网 | 日韩在线免费视频 | 国产精品久久久久久久久免费 | 久久精品国产亚洲夜色av网站 | 久久人爽| 精品一区二区三区中文字幕 | caoporn国产精品免费公开 | 麻豆国产一区二区三区四区 | 精品国产一区二区三区久久影院 | 亚洲久草 | 欧美韩一区二区 | 成人免费在线播放视频 | 自拍偷拍中文字幕 | 成av在线 | 中文天堂网 | 亚洲视频 欧美视频 | 欧美在线视频一区二区 | 国产视频久久 | 中文字幕在线观看视频网站 | 欧美韩一区二区三区 | 91在线精品一区二区 | 久久另类视频 | 欧美国产在线一区 | 欧美精品中文字幕久久二区 | 久久久精品一区 | 国产精品久久久久久一级毛片 | 国产精品久久av | 欧美高清hd | 特a毛片 | 国产精品国产精品国产专区不片 | 神马久久久久久久久久 | 亚洲精品国产综合区久久久久久久 | 亚洲精品国产一区 |