編程規范之枚舉

編程規范之枚舉

1.1 初始化枚舉項

枚舉平時用的也沒有很頻繁,今天看代碼規范提到枚舉類型初始化枚舉項。并對初始化枚舉項進行了歸納。包括下面三個

不進行顯示初始化,交由編譯器完成。

對第一個枚舉項的顯式初始化,這樣可以強制整數值的分配從給定的值開始。采用這種方法,必須確保所使用的初始化值足夠小,是的后續值不會超過枚舉項所使用潛在類型的存儲范圍

對枚舉中所有枚舉項顯示初始化。

另外提到c++直接從c繼承了枚舉類型,其工作方式基本和c類似,只是枚舉在c++中是”真正的類型“,增加了編譯期檢查。c++11提供了類型安全的枚舉類,使用enum struct和enum class來聲明,相對于c風格(unscoped enum),該類型不會被隱式轉換為整數類型。

1.2 優先使用枚舉類而不是枚舉項

當然這個是在c++中才行。c只有普通枚舉。提到普通類型的枚舉項和他的枚舉類型在一個作用域空間。會污染命名空間,因而在這個作用域內不能再使用相同標識符聲明變量。

寫了下面的代碼驗證。同時還注意了枚舉的規范寫法。

//enum WEEKDAY
//{
//    MONDAY = 0,
//    TUESDAY,
//    WEDNESDAY,
//    THURSDAY,
//    FRIDAY,
//    SATURDAY,
//    SUNDAY
//};		//寫法不對enum Weekday
{MONDAY = 0,TUESDAY,WEDNESDAY,
};const bool MONDAY = false;			// 報錯重復定義enum class WeekdayClass
{THURSDAY = 3,FRIDAY,SATURDAY,SUNDAY
};const bool THURSDAY = false;

除此之外,普通枚舉的枚舉項太容易被隱式轉換為int,而某些轉換可能并不是程序員所期望的。枚舉類的枚舉項是強類型的,不允許隱式轉換為數值。改為使用枚舉類后,例子中的意外情況在編譯時就會被發現。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77271.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77271.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77271.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《軟件設計師》復習筆記(12.1)——范圍管理、進度管理

目錄 一、范圍管理 1. 核心概念 2. 范圍管理過程 WBS(工作分解結構)示例 真題示例: 二、進度管理 1. 核心過程 2. 關鍵工具與技術 真題示例: 一、范圍管理 1. 核心概念 項目范圍:為交付產品必須完成的工作…

過去十年前端框架演變與技術驅動因素剖析

一、技術演進脈絡(2013-2023) 2013-2015:結構化需求催生框架雛形 早期的jQuery雖然解決了跨瀏覽器兼容性問題(如IE8兼容性處理),但其松散的代碼組織方式難以支撐復雜應用開發。Backbone.js的出現首次引入M…

中華傳承-醫山命相卜-梅花易數

梅花易數 靈活起卦(如數字、聲音、外應等)和象數結合,準確率可達96.8%。其起卦方式擺脫傳統龜殼、蓍草的繁瑣,強調直覺與靈活性。 個人決策、事件預測等 尤其在短期、具體問題上表現突出。

如何用Brower Use WebUI實現網頁數據智能抓取與分析?

作者:算力魔方創始人/英特爾創新大使劉力 Browser-use是一款能讓AI智能體像人類一樣操作網頁的創新工具,與傳統網絡爬蟲技術相比,Browser-use能模擬人瀏覽并操作網頁,在采集網站數據時,不會被網站反爬機制識別和封禁&…

LIMS引領綜合質檢中心數字化變革,賦能質量強國戰略

在質量強國戰略的深入推進下,我國綜合質檢機構迎來了前所未有的發展機遇,同時也面臨著諸多嚴峻挑戰。隨著檢測領域從傳統的食品藥品監督向環境監測、新材料檢測等新興領域不斷拓展,跨領域協同管理的復雜度呈指數級增長。作為提升產品質量的關…

簡單好用的在線工具

用AI寫了一些在線工具,簡介好用,推薦給大家,歡迎大家使用并提議意見。 網址:https://www.bittygarden.com/ 目前已有以下功能: MD5SM3SHAUnicode 編碼Unicode 解碼Base32 編碼Base32 解碼Base64 編碼Base64 解碼URL …

阿里云服務器搭建開源版禪道

一,下載地址:禪道11.5版本發布,主要完善細節,修復bug,新增動態過濾機制 - 禪道下載 - 禪道項目管理軟件 下載地址二: 禪道21.6.stable 實現舊編輯器撰寫的文檔無感升級至新版編輯器 - 禪道下載 - 禪道項目…

leetcode 309. Best Time to Buy and Sell Stock with Cooldown

目錄 題目描述 第一步,明確并理解dp數組及下標的含義 第二步,分析并理解遞推公式 1.求dp[i][0] 2.求dp[i][1] 3.求dp[i][2] 第三步,理解dp數組如何初始化 第四步,理解遍歷順序 代碼 題目描述 這道題與第122題的區別就是賣…

嵌入式硬件常用總線接口知識體系總結和對比

0.前言 在嵌入式工程實現中,多多少少我們都使用過總線,各種各樣的總線應用于不同場合,不同場景有不同的優勢,但是我們在作為工程師過程中在如何選擇項目合適的總線,根據什么來選?需要我們對項目全局和總線特征有所了解,本文目的就是對比多種總線的關鍵特征 我們在聊到…

數據分析處理庫Pandas常用方法匯總

目錄 一、基礎操作 1.1 創建df對象 1.1.1 讀入表格數據 1.1.2 手動創建df 1.2 .info() 1.3 df.index 1.4 df.columns 1.5 df.dtypes 1.6 df.values 1.7 .set_index() 1.8 df[xxx] 1.9 .describe() 1.10 .isin() 1.12 .where() 1.13 .query() 1.14 Series類型運算…

智慧大屏系統

延凡智慧大屏系統旨在打破數據壁壘,將海量、復雜的數據轉化為直觀易懂的可視化圖形和信息,廣泛應用于城市管理、企業運營、交通指揮、能源監控等多個領域,為管理者、決策者提供全面、實時、精準的信息展示和分析工具,助力高效決策…

樹莓派超全系列教程文檔--(32)config.txt常用音頻配置

config.txt常用音頻配置 板載模擬音頻(3.5mm耳機插孔)audio_pwm_modedisable_audio_ditherenable_audio_ditherpwm_sample_bits HDMI音頻 文章來源: http://raspberry.dns8844.cn/documentation 原文網址 板載模擬音頻(3.5mm耳機…

23種設計模式全面解析

設計模式是解決軟件設計中常見問題的經典方案。根據《設計模式:可復用面向對象軟件的基礎》(GoF),23種設計模式分為以下三類: 一、創建型模式(5種) 目標:解耦對象的創建過程&#x…

AI 推理框架詳解,包含如COT、ReAct、LLM+P等的詳細說明和分類整理,涵蓋其原理、應用場景及對比分析

AI 推理引擎 以下是關于 AI 推理引擎 的詳細說明,涵蓋其定義、類型、核心組件、技術實現、應用場景及挑戰: 1. 推理引擎的定義 推理引擎(Inference Engine)是 AI系統的核心組件,負責根據輸入數據、知識庫或預訓練模…

《探秘鴻蒙分布式軟總線:開啟無感發現與零等待傳輸新時代》

在數字化浪潮中,設備之間的互聯互通成為構建智能生態的關鍵。鴻蒙系統中的分布式軟總線技術,宛如一座橋梁,讓各種智能設備緊密相連。尤其是其實現的設備間無感發現和零等待傳輸功能,更是為用戶帶來了前所未有的便捷體驗&#xff0…

JDBC 與 MyBatis 詳解:從基礎到實踐

目錄 一、JDBC 介紹 二、使用 JDBC 查詢用戶信息 三、ResultSet 結果集 四、預編譯 SQL - SQL 注入問題 五、預編譯 SQL - 性能更高 六、JDBC 增刪改操作 插入數據: 更新數據: 刪除數據: 七、MyBatis 介紹 八、MyBatis 入門程序 引…

基于SpringBoot成績管理系統設計與實現(源碼+文檔+部署講解)

技術范圍:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

<sql>、<resultMap>、<where>、<foreach>、<trim>、<set>等標簽的作用和用法

目錄 一. sql 代碼片段標簽 二. resultMap 映射結果集標簽 三. where 條件標簽 四. set 修改標簽 五. trim 標簽 六. foreach 循環標簽 一. sql 代碼片段標簽 sql 標簽是 mybatis 框架中一個非常常用的標簽頁,特別是當一張表很有多個字段多,或者要…

《MySQL:MySQL數據庫的基本操作》

1.創建數據庫 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name 大寫表示關鍵字[]:表示可選項CHARACTER SET ch…

深入簡出:KL散度、交叉熵、熵、信息量簡介、交叉熵損失

學習這些的最終目的 1、量化兩個概率分布的差異 2、推導交叉熵損失 一、KL散度 KL散度就是用來量化兩個概論分布的差異,如何量化? 計算真實概論分布P信息量 和 估計概論分布為Q,但實際概率分布為P時信息量的差值 那么設,概率分…