1. 程式人生 > >C/C++enum列舉型別及賦值範圍

C/C++enum列舉型別及賦值範圍

        C++的enum工具提供了一種建立符號常量的方式,這種方式可以代替const

        1.建立enum列舉

        

        這語句完成工作:1.讓weekday成為新型別的名稱,2.讓sun、mod、tue等作為符號常量,它們對應整數值0~6.這些常量叫做列舉量。

        也可以自定義列舉量的值,指定的值為整數。沒指定的自動根據前一個加1,第一個預設是0.可重複指定(比如兩個1)。

        

        2.宣告此類列舉型別變數

        

        也可在定義列舉量時同時定義列舉變數,如:

        這種型別的變數特性:不進行強制型別轉換的情況下,只能將定義列舉時使用的列舉量賦給這種列舉的變數。

        如:today = sun;//正確

               today = 0; //錯誤

                VS裡會自動報錯:

               而列舉量是整型,可以直接被提升為int型給其他值賦值。如:此時yesterday值為1。

        但可通過強制型別轉換,將int值賦給列舉變數:此時today打印出來為4.但強制型別轉換的數字要在列舉的取值範圍內。

        總結:宣告的列舉型別變數,可由列舉型別符號常量直接賦值,但不可以由int型別直接賦值,int型別要想賦值給列舉型別變數,滿足兩個條件:int數字要在列舉的取值範圍內,要加上強制型別轉換。  

關於將int值賦值給列舉變數取值範圍,從C++PrimerPlus截出:


相關推薦

C/C++enum列舉型別範圍

        C++的enum工具提供了一種建立符號常量的方式,這種方式可以代替const        1.建立enum列舉                這語句完成工作:1.讓weekday成為新型別的名稱,2.讓sun、mod、tue等作為符號常量,它們對應整數值0~

【掃盲點】——C語言enum列舉型別、union共用體

一、列舉型別  enum: 在實際應用中,有的變數只有幾種可能取值。如人的性別只有兩種可能取值,星期只有七種可能取值。在 C 語言中對這樣取值比較特殊的變數可以定義為列舉型別。所謂列舉是指將變

C#中Enum列舉型別的簡單使用

列舉型別的介紹:  列舉型別是由一組特定常量構成的一組資料結構,是值型別的一種特殊形式,當需要一個由指定常量集合組成的資料型別時,使用列舉型別。列舉宣告可以顯式地宣告 byte、sbyte、short

C語言中 char 型別的取範圍為什麼是-128~127

我們之前已經說過關於原碼、反碼和補碼的一些東西,如果你沒有看過,可以點這裡《 你知道原碼、反碼和補碼嗎,進來了解一下吧 》看一下 。 好了,可能你不會太想看,所以我們一起再來簡單的複習一下,如果我們現在有一個十進位制的整數 1 ,我們知道 1 個位元組等於 8 位,

C語言各種資料型別的取範圍

速查表: char -128 ~ +127 (1 Byte) short -32767 ~ + 32768 (2 Bytes)-2的15次方-1 ~ 2的15次方 unsigned short 0 ~ 65536 (2 Bytes)0 ~ 2的16次方 int (l

8種基本資料型別範圍

整型: byte:-2^7 ~ 2^7-1,即-128 ~ 127。1位元組。Byte。末尾加B short:-2^15 ~ 2^15-1,即-32768 ~ 32767。2位元組。Short。末尾加S 有符號int:-2^31 ~ 2^31-1,即-214748364

MYSQL中支援的資料型別範圍

DATE、TIME 和 TEAR 型別  MySQL用 DATE 和 TEAR 型別儲存簡單的日期值,使用 TIME 型別儲存時間值。這些型別可以描述為字串或不帶分隔符的整數序列。如果描述為字串,DATE 型別的值應該使用連字號作為分隔符分開,而 TIME 型別的值應該使用冒號作為分隔符分開。   需要注意的

c++基本資料型別之整形方法

#include <iostream> // climits 是由c裡的limits.h轉化成c++可用的limits前面的c表示是從c的標頭檔案過來的,所以叫climits #include <climits> using namespace std; int main

C++列舉型別EnumC++11強列舉型別用法

列舉常常和switch配合使用,用一個程式碼片段來說明: //W A S D 前、後、左、右行走\nQ E 左、右轉頭\nF 復位\nG H 暫停、繼續、重播例項\nY 停止例項\nB 刪除例項\nSPACE 刪除所有例項 enum Keydown{ Forward='w', Back

C# 中的列舉型別 enum (屬於型別

        C# 支援兩種特殊的值型別:列舉和結構。宣告列舉:宣告時要宣告所有可能的值。 using System; using System.Collections.Generic; using System.Linq; using System.Text; na

C++ protobuf 自定義資料型別

對於C++ protobuf 自定義資料型別的賦值,有兩種方式 set_allocate_XXX mutable_XXX 舉例說明 message SAT_JSON_CONFIG { required int32 AxisYMax = 1; required i

C/C++開發】C++之enum列舉量宣告、定義、使用與列舉類詳解與列舉類前置型別宣告

前面講到可以通過強制轉換將其他型別值賦給列舉變數:Weekday = enumType(2);這是合法的;但是Weekday = enumType(20);是非法的。這裡涉及列舉取值範圍的概念:列舉的上限是 大於最大列舉量的 最小的2的冪,減去1; 列舉的下限有兩種情況:一、列舉量的最小值不小於0,則列

C++中基本資料型別位元組數範圍【轉】

【轉自】:http://blog.csdn.net/a775992553/article/details/8790241 機器字長:是指計算機進行一次整數運算所能處理的二進位制資料的位數(整數運算即定點整數運算)。機器字長也就是運算器進行定點數運算的字長,通常也是CPU內部資料通路的寬度。現在一

重新認識memset函式c++中陣列的初始化

下面就好好重新認識一下這個函式,自己寫了測試的程式碼,memset到底怎麼用呢? 先貼測試程式碼: #include<iostream> #include<cstdio> #include<algorithm> #include<string>

C 語言之列舉型別Enum

列舉型別的定義形式為: enum typeName{ valueName1, valueName2, valueName3, ...... }; enum是一個新的關鍵字,專門用來定義列舉型別,這也是它在C語言中的唯一用途;typeName是列舉型別的名字;value

C++回顧之前置++、後置++、不等號!運算子過載

        運算子過載的主要目的是為了讓類物件能像普通資料型別一樣能夠進行加減乘除,自加自減等操作,非常直觀方便。現在來回顧C++的自加減(分前置與後置)以及不等號非運算子,賦值運算子的過載。         1 ++過載         (1)前置++運算子的過載方式

c和verilog的enum列舉型別

Verilog中的列舉型別與C語言中一樣。 C語言中列舉型別 1、應用場合  在程式中,可能需要為某些整數定義一個別名,我們可以利用預處理指令#define來完成這項工作: #define MON  1  #define TUE   2  #define WED  3  #

c語言蛋疼的字串

我覺得c語言比較蛋疼的一個地方就是給字串賦值,不是初始化,是賦值。 char string[20]={0}; 你不能通過 string="hello";這種方式賦值。但是在字串初始化的時候可以通過這種方式賦值 char string[20]="hello"; //這是正確的,只有在初始化的時候是正確的。

[C]關於函式指標引數的

問題 在有一次嘗試用stat()函式獲取檔案屬性的時候,發現如果直接宣告一個指標,然後把這個指標作為引數傳給函式,會導致函式執行失敗,原始碼: #include <sys/stat.h> #include <unistd.h> #include <stdio.h>

C語言之列舉型別

在C語言中,列舉型別(enumerated type)宣告符號名稱來表示整形常量。使用enum關鍵字,可以建立一個新“型別”並指定它可具有的值,如: //建立spectrum作標記名,那enum spectrum作為一個型別名使用 enum spectrum { red, orange,