C Sharp căn bản – Chương III – NỀN TẢNG NGÔN NGỮ C# 0 (0)

C Sharp căn bản – Chương III – NỀN TẢNG NGÔN NGỮ C# 0 (0)

C Sharp căn bản – Chương III – NỀN TẢNG NGÔN NGỮ C# 0 (0)

Learn more »

Trong chương trước chúng ta đã tìm hiểu một chương trình C# đơn giản nhất. Chương trình đó chưa đủ để diễn tả một chương trình viết bằng ngôn ngữ C#, có quá nhiều phần và chi tiết đã bỏ qua. Do vậy trong chương này chúng ta sẽ đi sâu vào tìm hiểu cấu trúc và cú pháp của ngôn ngữ C#.

Chương này sẽ tho luận về hệ thống kiểu dữ liệu, phân biệt giữa kiểu dữ liệu xây dựng sẵn (như intboolstring) vi kiểu dữ liệu do người dùng định nghĩa (lp hacấu trúc do người lậtrình tạo ra...). Một số cơ bản khác về lập trình như tạo và sử dụng biến dữ liệu hay hng cũng được đề cập cùng với cu trúc liệt kêchuỗi, định danh, biểthc và clnh.

Trong  phần  hai  của  chương  hưng  dn  và  minh  họa  việc  sử  dụng  lệnh  phân  nhánh ifswitchwhiledowhileforvà foreachVà toán tử như phép gán, phép toán logic, phétoán quan hệ, và toán hc

Như chúntđã biết C# là một ngôn ngữ hướng đối tưng rất mnh, và công việc ca người lậtrình là kế tha để tạo và khai thác đối tượng. Dvy để nm vững và phátriển tốt người lập trình cần phi đi từ những bưc đi dầu tiên tlà đi vào tìm hiểu những phần cơ bn và cốt lõi nhất của ngôn ng.

Kiểu dữ liệu

 

Clà ngôn ngữ lập trình mạnh về kiu dữ liu, một ngôn ngữ mạnh về kiểu dữ lilà phải khai  báo  kiểu  ca  mỗi  đi  tượng  khi  to  (kiểu  số  nguyên,  số  thc,  kiểu  chuỗi,  kiu  điều khiển…) và trình biên dch sẽ giúcho ngưi lp trình không bị lỗi khi chỉ cho phép một loại kiểu dữ liệu có thể được gán cho các kiu dữ liệu khácKiu dữ licmột đối tượng là một tín hiu để trình biên dch nhn biết kích thưca một đối tượng (kiểu int có kích thưlà 4 byte) và khả năng của nó (như một đối tượng button có thể vẽ, phản ng khi nhn,…).

Tương tự như C++ hay Java, C# chithành hai tập hợp kiểu dữ lichính: Kiu xây dựng sẵn (built- in) mà ngôn ngữ cung ccho ngưltrình và kiu đưc ngưi dùng đnh nghĩa (user-defined) do người lập trình to ra.

C# phân tp hp kiểu dữ liu này thành hai loiKiu dữ liệu giá trị (value) và kiu dữ liệu tham chiếu (reference). Vic phâchi này do sự khác nhau khi lưu kiu dữ liệu giá trị và kiểu dữ liệu tham chiếu trong bộ nhớ. Đối với một kiu dữ liệu giá trị thì sẽ được lưu giữ kích thước thtrong bộ nhớ đã cp phálà stackTrong khi đó thì đchỉ của kiểu dữ liệu tham chiếu thì được lưu trong stacnhưng đối tượng thật sự thì lưu trong bộ nhớ heap.

Nếu chúng ta có một đối tượng có kích tc rất lớn thì việlưu giữ chúng trên bộ nhớ heap rcó ích, trong chương 4 sẽ trình bày những lợi ích và bất lợi khi làm việc vi kiểu dữ liệu tham chiếu, còn trong chương này chỉ tập trung kiểu dữ kiểu cơ bản hay kiểu xây dựng sẵn.

Ghi c: Tcả các kiểu dữ liệu  xây dng sẵn là kiu  dữ liệu  giá trị  ngotrừ c đối tượng và chuỗi. Và tcả c kiu do người dùng định nghĩa ngoại trừ kicấu trúđều là kiểu dữ liệu tham chiếu.

Ngoài ra C# cũng hỗ trợ một kicon trỏ C++, nhưng hiếm khi đưsử dụng, và chỉ khi nàlàm  việc với  những đon  mã lệnh không  đưc  qulý (unmanaged  code).  Mã lnh  không đưc qulý là cálnh đưc viết bêngoài nn .MS.NET, như là các đối tượng COM.

 

Kiu dữ liu xây dựng sẵn

 

Ngôn ngữ C# đưa ra c kiểu dữ liu xây dng sẵn rất hữu dụng, phù hợp vi một ngôn ngữ lập trình hin đi, mỗi kiu dữ liệu đưc ánh xạ đếmột kiểu dữ liệu đưc hỗ trợ bởi hệ thống  xác  nhận  ngôn  ngữ  chung  (Common  Language  Specification:  CLS)  trong  MS.NET. Việc ánh xạ các kiểu dữ liu nguyêthuỷ của C# đếc kiểu dữ liệu của .NET sẽ đảm bo các đi tượng đưtạo ra trong C# có thể đưc sử dụng đồng thời vc đối tượng đưtạo bởi bất cứ ngôn ngữ khác đưc bn dịch bởi .NET, như VB.NET.

Mỗi  kiểu  dữ  liệu  có  một  sự  xác  nhận  và  kích  thưc  không  thay  đổi,  không  giống  như C++introng C# luôn có kích thước là 4 byte bởi vì nó đưánh xạ từ kiểu Int3trong . NET.

Bảng 3.1 sau sẽ mô tả một số các kiểu dữ liệu được xây dựng sẵn

 

 

Kiểu C#

Số byte

Kiểu .NET

Mô tả

byte

1

Byte

Số nguyên dương không dấu từ 0255

char

2

Char

Ký tự Unicode

bool

1

Boolean

Giá trị logitruefalse

sbyte

1

Sbyte

Số nguyêcó du ( từ 128 đến 127)

short

2

Int16

Số  nguyên  có  du  giá  trị  từ  -32768  đến

32767.

ushort

2

Uịnt16

Số nguyên không du 0 – 65.535

int

4

Int32

Số  nguyên  có  du  –2.147.483.647 và

2.147.483.647

uint

4

Uint32

Số nguyên không du 0 – 4.294.967.295

float

4

Single

Kiu dấu chấm động, giá trị xấp xỉ từ 3,4E

38 đến 3,4E+38, với 7 chữ số có nghĩa..

double

8

Double

Kiu  dấu  chấm  động  có  độ  chính  xác  gp đôi, giá trị xấp xỉ từ 1,7E-308 đến 1,7E+308,

với 15,16 chữ số có nghĩa.

decimal

8

Decimal

Có độ chính xác đến 28 con số và giá trị thập phân,  đưc  dùng  trong  tính  toán  tài  chính, kiểu này đòi hỏi phcó hu tố “m” haM”

theo sau giá trị.

 

long

8

Int64

Kiu   số   nguyên  có   du   có  giá  trị   trong khong :

-9.223.370.036.854.775.808 đến

9.223.372.036.854.775.807

ulong

8

Uint64

Số nguyên không dtừ 0 đến

0xffffffffffffffff

Bảng 3.1 : Mô tả các kiểu dữ liệu xây dựng sẵn.

 

 

Ghi chúKiểu giá trị logichỉ có thể nhn đưc giá trị là truhafalsmà thôi. Một giá trị nguyên không thể gán vàmột biến kiểu logic trong C# và không có bất cứ chuyn đổi ngầm định nào. Điu này khác với C/C++, cho phép biến logic đưc gán giá trị nguyên, khi đó giá trị nguyên 0 là false và cágiá trị còn lại là true.

 

Chọn kiu dữ liu

 

Thông  thưng  để  chọn  một  kiu  dữ  liệu  nguyên  để  sử  dụng  như short,  int  hay  long  thường da vào độ lớn của giá trị muốn sử dụng. Ví dụ, một biến ushort có thể lưu giữ giá trịtừ 0 đến 65.535, trong khi biếuloncó thể lưu giữ giá trị từ 0 đến 4.294.967.295, do đó tùy vào miền giá trị ca phạm vi sử dụng biến mà chọn các kiểu dữ liệu thích hợp nhất. Kiểu dữ liệu inthưng đưsử dụng nhiều nhất trong ltrình vì vi kích thước 4 bytcủa nó cũng đủ để lưu các giá trị nguyêcần thiết.Kisố nguyêcó du thường được la chọn sử dụng nhiều nhtrong kisố trừ khi có lý do chính đáng để sử dụng kiểu dữ liệu không du.

 

Stack và Heap

 

 

 

Staclà một cấu trúc dữ liu lưu trữ thôntin dạng xếchồng tc là vào sau ra t(Last In FirsOut : LIFO), điều này ging như chúng ta có một chồncác đĩa, tcứ xếp c đĩa vào chồng và khi ly ra thì đĩa nào nằm trên cùng sẽ đưlập ra trưc, tức là đĩvàsau sẽ được ly ra tc.

Trong C#, kiểu giá trị như kiểu số nguyên đưc cp phát trêstack, đâlà vùng  nhớ  đưc  thiết  lp  để  lưu  c  giá  trị,  và  vùng  nhớ  này  đưc  tham chiếu bởi tên của biến.

Kiểu tham chiếu như c đối tưng thì đưcấp phátrên heap. Khi một đối tưng đưc cp phát tn heathì đchỉ của nó đưtrả về, và đchỉ này được gán đến một tham chiếu.

Thnh  thong  cơ  chế  thu  gom  sẽ  hũy  đối  tượng  trong stacsau  khi  một vùng trong stack đưc đánh dấu là kết thúcThông tng một vùng trong stacđưc  định  nghĩa  bởi  một  hàm.  Do  đó,  nếu  chúng  ta  khai  báo  một biến cc bộ trong một hàm là một đối tượng thì đối tưng nàsẽ đánh du để hũy khi kết thúhàm. Nhng đối tưng trên heasẽ đưc thu gom sau khi một tham chiếu cuối cùng đến đối tưng đó đưc gọi.

 

Cách  tốt  nht  khi  sử  dụng  biến  không  dấu  là  giá  trị  ca  biến  luôn  luôn  dương,  biến  này thường thể hiện một thuc tính nào đó có miền giá trị dương. Ví dụ khi cần khai báo một biến lưu  giữ  tuổi  của  một  người  thì  ta  dùng  kiểbyt(số  nguyên  từ  0-255)  vì  tuổi  của  ni không thể nào âm đưc.

Kifloatdouble, và decimađưa ra nhiều mức độ khác nhau về kích thưc cũng như độ chính xác.Vi thatác trên các phâsố nhỏ thì kiểu float là thích hợp nhất. Tuy nhiên lưu ý rng trình biên dch luôn luôn hiu bất cứ một số thc nào cũng là một số kiểu double trừ khi chúnta khai báo rõ ràng. Để gámột số kiểfloat thì số phải có ký tự f thesau.

float soFloat = 24f;

Kiu dữ liệký tự thể hicác ký tự Unicode, bao gồm c ký tự đơn ginký tự theo mã Unicode và cáký tự thoát khác đưc bao trong những du nháy đơn. Ví dụ, A là một ký tự đơn giảtrong khi \u0041 là một ký tự UnicodeKý tự thoát là nhữnký tự đc bit bao gồm hai ký tự liên tiếp trong đó ký tự dầu tiêlà du c\’. Ví dụ, \là dấu tab. Bng 3.2 trình bày các ký tự đặc biệt.

 

 

Ký tự

Ý nghĩa

\

Dấu nháy đơn

\

Dấu nháy kép

\\

Dấu chéo

\0

Ký tự null

\a

Alert

 

 

\b

Backspace

\f

Santrang forfeed

\n

ng mới

\r

Đầu dòng

\t

Tab ngang

\v

Tab dc

Bảng 3.2 : Các kiểu ký tự đặc bit.

 

Chuyển đổi các kiểu dữ liệu

 

Những đi tượng ca một kiểu dữ liệu nàcó thể đưc chuysang những đối tượng của một kiểu dữ liệu khác thông qua cơ chế chuyn đổi tường minh hay ngm định. Chuyển đổi nhm định được thc hiện một cáctự động, trình biên dịch sẽ thc hiện công việc nàyCòn chuyn đổi tường minh diễn ra khi chúntgán ép một giá trị cho kiu dữ liệu khác.

Việc chuyn đổi giá trị ngm định đưthực hiện một cách tự động và đảm blà không mt thông tin. Ví dụ, chúng ta có thể gán ngđnh một số kiểu short (2 byte) vào một số kiểu int (4 byte) một cách ngm định. Sau khi gán hoàn toàn không mt dữ liệu vì bcứ giá trị của shorng thuvề int:

 

short x = 10;

 

int y = x;  /chuyển đi ngầm định

Tuy nhiên, nếu chúng ta thực hiện chuyn đổi ngưlại, chchắn chúntsẽ bị mất thông tin. Nếu giá trị của số nguyên đó lớn hơn 32.767 thì nó sẽ bị ct khi chuyển đổiTrình biên dch sẽ không thc hiện việc chuyn đổi ngầm định từ số kiểu insang số kiểu short:

short x;

 

int y = 100;

 

x = y;      // Không biên dch, li !!!

Để không bị lỗi chúng ta phi dùnlệnh gán tường minh, đomã trên được viết li như sau:

 

short x;

 

int y = 500;

 

x = (short) y;      // Ép kiểu tường minh, trình biên dịch không báo lỗi

 

Biến và hng

 

Một biến là một vùng lưu trữ với một kiểu dữ liệu. Trong ví dụ tc cả x, và điều là biến. Biến có thể đưgán giá trị và cũng có thể thay đổi giá trị khi thực hiện cálệnh trong chươntrình.

Để tạo một biếcng ta phải khai báo kiểca biến và gán cho biến một tên duy nht. Biến có thể đưc khtạo giá trị ngay khi được khai báo, hay nó cũng có thể đưgán một giá trị mới vào bất cứ lúc nàtrong chươntrình. Ví dụ 3.1 saminh họa sử dụng biến.

Ví dụ 3.1: Khởi tạo và gán giá trị đến một biến.

—-—-—-—-—-—-—-—-—-—-—-—-—-—-

 

class MinhHoaC3

 

{

 

static void Main()

 

{

 

int bien1 = 9;

 

System.Console.WriteLine(Sau khi khoi tao: bien1 ={0}”, bien1);

 

bien1 = 15;

 

System.Console.WriteLine(Sau khi gan: bien1 ={0}”, bien1);

 

}

 

}

 

—-—-—-—-—-—-—-—-—-—-—-—-—-—-

Kết quả:

 

Sau khi khoi tao: bien1 = 9

 

Sau khi gan: bien1 = 15

—-—-—-—-—-—-—-—-—-—-—-—-—-—-

Ngay khi khai báo biến ta đã gán giá tr là 9 cho biến, khi xuất biến thì biến có giá trị là 9. Thc hiện phép n biến cho giá trị mới là 15 thì biến sẽ có giá trị là 15 và xuất kết quả là 15.

 

Gán giá trị xác địncho biến

 

C#  đòi  hỏi  các  biến  phải  đưc  khởi  to  trưc  khi  đưc  sử  dụng.  Để  kim  tra  lut  này chúnta thay đổi dòng lệnh khởi tạo biến bien1 trong ví dụ 3.1 như sau:

int  bien1;

và giữ nguyên phcòlại ta đưc ví dụ 3.2:

Ví dụ 3.2: Sử dụng một biến không khởi tạo.

—-—-—-—-—-—-—-—-—-—-—-—-—-—-

 

class MinhHoaC3

 

{

 

static void Main()

 

{

 

int bien1;

 

System.Console.WriteLine(Sau khi khoi tao: bien1 ={0}”, bien1);

 

bien1 = 15;

 

System.Console.WriteLine(Sau khi gan: bien1 ={0}”, bien1);

 

}

 

}

 

—-—-—-—-—-—-—-—-—-—-—-—-—-—-

Khi biên dịch đochương trình trên thì trình biên dịcC# sẽ thông báo một lỗi sau:

 

...error CS0165: Use of unassigned local variable ‘bien1’

 

Việc sử dụng biến khi chưa được khởi tạlà không hợp lệ trong C#. Ví dụ 3.2 trên không hợp lệ.

Tuy nhiên không nhất thiết lúnào chúng ta cũng phải khởi tạo biến. Nhưng để dùng được thì bt buộc phi gácho chúng một giá trị trưc khi có một lệnh nào tham chiếu đến biến đó. Điu này đưgọi là gán giá trị xác định cho biến và C# bắt buc phải thực hin điu này.

Ví dụ 3.3 minh ha một chương trình đúng.

Ví dụ 3.3: Biếkhông đưkhi tạo nhưng sau đó được gán giá trị.

—-—-—-—-—-—-—-—-—-—-—-—-—-—-

 

class MinhHoaC3

 

{

 

static void Main()

 

{

 

int bien1;

 

bien1 = 9;

 

System.Console.WriteLine(Sau khi khoi tao: bien1 ={0}”, bien1);

 

bien1 = 15;

 

System.Console.WriteLine(Sau khi gan: bien1 ={0}”, bien1);

 

}

 

}

 

—-—-—-—-—-—-—-—-—-—-—-—-—-—-

 

Hng

 

Hằng cũng là một biến nhưng giá trị của hng không thay đổi. Biếlà công cụ rt mnh,tuy nhiên khi làm việc với một giá trị đưc định nghĩlà không thay đổita phải đm bo giátrị của nó không đưc thay đổi trong suchương trình. Ví dụ, khi lập một chương trình thí nghiệm hóa học liên quan đến nhiệt độ sôi, hay nhiệt độ đông của nưcchương trình cn khai báo hai biến là DoSoi và DoDong, nhưng không cho phép giá trị ca hai biến này bị thay đổi hay bị gán. Để ngăn nga việc gán giá trị khácta phi sử dụng biến kiểu hằng.

Hằng đưc phân thành ba loại:  giá trị hng (literal), biểu tưng hng (symboliconstants), kiểu liệu kê (enumerations).

Giá trị hằngta có một câlệnh gán như sau:

 

x = 100;

Giá trị 100 là giá trị hng. Giá trị của 100 luôn là 100. Ta không thể gán giá trị khác cho 100 được.

Bitượnhằngn một tên cho một giá trị hng, để tạo một biểu tưnhng dùng từ khóconsvà cú pháp sau:

 

<const> <type> <tên hằng> = <giá trị>;

 

Một bitượng hằng phi đưc khtạo khi khai báo, và chỉ khởi tạo duy nhất một lần trong suốt chương trình và không đưc thay đổiVí dụ:

const int DoSoi = 100;

Trong khai báo trên, 32 là một hng số và DoSoi là một biểu tưng hng có kiểu nguyên. Ví dụ 3.4 minh ha việc sử dụng những bitưng hng.

Vi dụ 3.4: Sử dụng biểu tượng hằng.

—-—-—-—-—-—-—-—-—-—-—-—-—-—-

 

class MinhHoaC3

 

{

 

static void Main()

 

{

 

const int DoSoi = 100;    // Độ C

 

const int DoDong = 0;    // Độ C

 

System.Console.WriteLine( “Do dong cua nuoc {0}”, DoDong ); System.Console.WriteLine( “Do soi cua nuoc {0}”, DoSoi );

}

 

}

 

—-—-—-—-—-—-—-—-—-—-—-—-—-—-

Kết quả:

 

Do dong cua nuoc 0

 

Do soi cua nuoc 100

—-—-—-—-—-—-—-—-—-—-—-—-—-—-

Ví dụ 3.4 tạo ra hai biểu tưng hằng cha giá trị nguyênDoSoi và DoDong, theo qui tắc đặt tên hng thì tên hằng thưng đưc đt theo cú pháPascal, nhưng điu này không đòi hỏi bởi ngôn ngữ nên ta có thể đt tùý.

Việc dùng  biu  thc  hng nàsẽ  làm cho  chương  trình  đưc viết  tăng  thêm phn  ý nghĩa cùng với sự dễ hiểu. Thsự chúntcó thể dùng hng số là 0 và 100 thay thế cho hai biu tượng hng trên, nhưng khi đó cơng trình không đưc dễ hiểu và không được tự nhlắm. Trình biên dch không bao giờ chp nhn một lnh gán giá trị mới cho một biểu tượng hng.

Ví dụ 3.4 trên có thể đưc viết li như sau

 

class MinhHoaC3

 

{

 

static void Main()

 

{

 

const int DoSoi = 100;    // Độ C

 

const int DoDong = 0;    // Độ C

 

System.Console.WriteLine( “Do dong cua nuoc {0}”, DoDong );

 

System.Console.WriteLine( “Do soi cua nuoc {0}”, DoSoi );

 

DoSoi = 200;

 

}

 

}

 

Khi đó trình biên dch sẽ phát sinh một lỗi sau:

 

error CS0131: The left-hand side of an assignment must be a variable, property or indexer.

Kiu liệt kê

 

Kiu liệt kê đơn giản là tp hợp n hằncó giá trị không thay đổi (thường đưc gọi là danh sách liệt kê).

Trong ví dụ 3.4, có hai bitượng hằng có quan hệ với nhau:

 

const int DoDong = 0;

 

const int DoSoi = 100;

Do mục đích mở rộng ta mong muốn thêm một số hằnsố khác vào danh sáctrên, như các hng sau:

const int DoNong  = 60; const int DoAm = 40; const int DoNguoi = 20;

Các biểu tưng hntrên  đicó ý nghĩa quan hệ với nhau, cùng nói về nhiệt độ của nưc, khi khai bátng hng trêcó vẻ cồng knh và không đưc liên kết cht chẽ cho lm. Thay vào đó Ccung cấp kilit kê để giải quyết vấn đề tn:

enum NhietDoNuoc

 

{

 

DoDong = 0, DoNguoi = 20, DoAm  = 40, DoNong = 60, DoSoi  = 100,

}

 

Mỗi kilit kê có một kiểu dữ liệu cơ sở, kiu dữ liệu có thể là bt cứ kiu dữ liệu nguyên nào như intshort, long… tuy nhn kiểu dữ lêu của liệt kê không chp nhận kiu ký t. Để khai báo một kilit kê ta thc hiện theo cú phásau:

[thuộtính] [bổ sung] enum <tên liệt kê> [:kiu cơ s{dansách các thành phần liệkê};

Thành  phần  thuc  tính  và  bổ  sung  là  tự  chọn  sẽ  đưc  trình  bày  trong  phần  sau  của  sách.

Trong phần nàcnta sẽ tập trung vào phn còn li ca khai báo. Một kiểu liệt kê bắt đầu với từ khóa enum, tiếp sau là một định danh cho kiu liệt :

 

enum NhietDoNuoc

Thành phần kiểcơ sở chính là kiểu khai báo cho các mục trong kiểu liệt kê. Nếu bỏ qua thành phnày thì trình biên dịcsẽ gán giá trị mặc định là kiu nguyêint, tuy nhiên chúnta có thể sử dụng bất cứ kiu nguyênào như ushort halong,..ngotrừ kiểu ký t. Đoạn ví dụ sau khai o một kiểu lit kê sử dụng kiểu cơ sở là số nguyên không duint:

 

enuKichThuoc :uint

 

{

 

Nho = 1, Vua = 2, Lon = 3,

}

 

Lưu ý là khai báo một kiểu liệt kê phải kết thúc bng một danh ch liệt kêdanh sách liệt kê này phải có hằng được gánvà mỗi thành phần phải phâcách nhau du phy.

Ta viết li ví dụ minh họa 3-4 như sau.

Ví dụ 3.5: Sử dụng kiu liệt kê để đơn giản chương trình.

—-—-—-—-—-—-—-—-—-—-—-—-—-—-

 

class MinhHoaC3

 

{

 

// Khai báo kiu liệt kê enum NhietDoNuoc

{

 

DoDong = 0, DoNguoi = 20, DoAm  = 40, DoNong = 60, DoSoi  = 100,

}

 

static void Main()

 

{

 

System.Console.WriteLine( “Nhiet do dong: {0}, NhietDoNuoc.DoDong); System.Console.WriteLine( “Nhiet do nguoi: {0}”, NhietDoNuoc.DoNguoi); System.Console.WriteLine( “Nhiet do am: {0}NhietDoNuoc.DoAm); System.Console.WriteLine( “Nhiet dnong: {0}NhietDoNuoc.DoNong); System.Console.WriteLine( “Nhiet do soi: {0}”, NhietDoNuoc.DoSoi);

}

 

}

 

—-—-—-—-—-—-—-—-—-—-—-—-—-—-

Kết quả:

 

Nhiet do dong: 0

 

Nhiet do nguoi: 20

 

Nhiet do am: 40

 

Nhiet do nong: 60

 

Nhiet do soi: 100

—-—-—-—-—-—-—-—-—-—-—-—-—-—-

Mỗi thành phn trong kiểu lit kê tương ứng vi một giá trị số, trong trường hợp nàlà một số nguyên. Nếu chúnta không khtạo chcác thành phn này thì chúng sẽ nhcác giá trị tiếp theo vi thành phần đu tiên là 0.

Ta xem thử khai básau:

 

enum Thutu

 

{

 

ThuNhat, ThuHai, ThuBa = 10, ThuTu

}

 

Khi đó giá trị cThuNhat là 0, giá trị cThuHai là 1, giá trị cThuBa là 10 và giá trị của ThuTlà 11.

Kiu liệt kê là một kiểu hình thc do đó bắt buộc phi thực hiện phép chuyn đổi tường minh với các kiêu giá trị nguyên:

int x = (in


Lượt xem : 241

Integrations
Users

Share Profile

Anyone at KeenThemes can view
Anyone with link can edit

Give Award

Anyone at KeenThemes can view
Anyone with link can edit

Report User

Let us know why you’re reporing this person
Don't worry, your report is completely anonymous; the person you're
reporting will not be informed that you've submitted it