VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • Python
  • PHP
  • Eclipse
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Phần mềm tiện ích
    • Selenium Test
  • Tuyển Dụng

C Cơ Bản

Ngôn ngữ lập trình C là gì? Lịch sử của C Các tính năng của C Cài đặt môi trường lập trình C Chương trình C đầu tiên Flow của chương trình C Biến trong C Các kiểu dữ liệu trong C Ép kiểu trong C Từ khóa trong C Các toán tử trong C Comment trong C Các hằng số trong C printf và scanf trong C Ký tự đặc biệt trong C Xử lý lỗi trong C Tệp Header trong C

Câu Lệnh Điều Khiển C

Mệnh đề if-else Mệnh đề switch Vòng lặp for Vòng lặp while Vòng lặp do-while Lệnh Break Lệnh Continue Lệnh Goto

Con Trỏ

Con trỏ (pointer) trong C Con trỏ trỏ tới con trỏ Con trỏ và mảng trong C Quản lý bộ nhớ trong C

Structure & Union

Structure trong C Mảng của structure trong C Structure lồng nhau trong C Union trong C

C Math

Hàm math cơ bản trong C

C Function

Hàm trong C Hàm do người dùng định nghĩa Các kiểu hàm trong C Đệ quy trong C Call by value Call by reference

C Array

Mảng (array) trong C Mảng 2 chiều trong C Truyền mảng vào hàm

C Strings

Chuỗi (String) trong C Nhập chuỗi từ bàn phím Các phương thức xử lý chuỗi Hàm strlen() trong C Hàm strcpy() trong C Hàm strcmp() trong C Hàm strcat() trong C Hàm strrev() trong C Hàm strlwr() trong C Hàm strupr() trong C Hàm strstr() trong C

File Trong C

Xử Lý File Trong C Hàm fscanf và fprintf() Hàm fgetc và fputc() Hàm fgets() và fputs() Hàm fseek() trong C Hàm rewind() trong C Hàm ftell() trong C

Bài Học Bổ Sung

Enumeration (enum) trong C Preprocessors trong C Bảng ASCII
Bài Tập C Có Lời Giải

Enum trong C


Hàm ftell() trong C
Preprocessor trong C

Enum trong C là kiểu dữ liệu do người dùng định nghĩa. Nó được sử dụng chủ yếu để gán các tên cho các hằng số, các tên giúp một chương trình dễ đọc và bảo trì.

Từ khóa 'enum' được sử dụng để khai báo các kiểu liệt kê mới trong C và C++. Sau đây là cú pháp về khai báo enum.

Cú pháp:

enum enum_name{constant1, constant2, constant3, .......};

Các biến enum có thể được định nghĩa theo 2 cách:

// trong ca 2 truong hop duoi day, "day" 
// duoc dinh nghia nhu bien cua kieu week

enum week{Mon, Tue, Wed};
enum week day;

// hoac

enum week{Mon, Tue, Wed} day;

Ví dụ sử dụng enum trong C:

#include<stdio.h> 

enum week{Mon, Tue, Wed, Thur, Fri, Sat, Sun};

int main() {
    enum week day;
    day = Wed;
    printf("Chi so cua Wed la %d\n", day);
    
    // duyet tat ca cac chi so phan tu cua enum week
    int i; 
    for (i = Mon; i <= Sun; i++)
        printf("%d ", i);
    return 0;
}

Kết quả:

Chi so cua Wed la 2
0 1 2 3 4 5 6

Trong ví dụ này, vòng lặp for sẽ chạy từ i = 0 đến i = 6, như ban đầu giá trị của i là Mon là 0 và giá trị của tháng Sun là 6.


Đặc điểm thú vị về khơi tạo enum

1. Hai biến enum có thể có cùng giá trị. Ví dụ, trong chương trình C sau cả 'Failed' và 'Error' có cùng giá trị 0.

#include <stdio.h> 

enum status {Working = 1, Failed = 0, Error = 0};
  
int main() {
   printf("%d, %d, %d", Working, Failed, Error);
   return 0; 
}

Kết quả:

1, 0, 0

2. Nếu chúng ta không gán giá trị cho tên enum một cách rõ ràng, trình biên dịch theo mặc định gán giá trị bắt đầu từ 0. Ví dụ, trong chương trình C sau, sunday sẽ nhận giá trị 0, sunday được 1, v.v.

#include <stdio.h>

enum day {sunday, monday, tuesday, wednesday, thursday, friday, saturday};
  
int main() {
    enum day d1 = monday;
    enum day d2 = tuesday;
    printf("So ngay duoc luu tru trong bien d1 la %d\n", d1);
    printf("So ngay duoc luu tru trong bien d2 la %d\n", d2);
    return 0;
} 

Kết quả:

So ngay duoc luu tru trong bien d1 la 1
So ngay duoc luu tru trong bien d2 la 2

3. Chúng tôi có thể gán giá trị cho một số tên theo bất kỳ thứ tự nào. Tất cả các tên chưa được chỉ định nhận giá trị là giá trị của tên trước đó cộng với một.

#include <stdio.h>

enum day {sunday = 1, monday, tuesday = 5,
          wednesday, thursday = 10, friday, saturday};
  
int main() {
    printf("%d %d %d %d %d %d %d", sunday, monday, tuesday,
            wednesday, thursday, friday, saturday);
    return 0;
}

Kết quả:

1 2 5 6 10 11 12

4. Giá trị được gán cho tên enum phải là một số hằng số nguyên, tức là, giá trị phải nằm trong phạm vi từ giá trị nguyên nhỏ nhất có thể đến giá trị nguyên lớn nhất.

5. Tất cả các hằng số enum phải là duy nhất trong phạm vi của chúng. Ví dụ, chương trình sau bị lỗi trong quá trình biên dịch.

#include <stdio.h>


enum state  {working, failed}; 
enum result {failed, passed}; 
  
int main()  { 
    return 0; 
} 

Kết quả:

[Error] redeclaration of enumerator 'failed'
[Note] previous definition of 'failed' was here


Enum với Macro

Chúng ta cũng có thể sử dụng các macro để định nghĩa hằng số. Ví dụ, chúng ta có thể định nghĩa 'Working' và 'Failed' bằng cách sử dụng macro sau.

#include <stdio.h>

#define Working 0
#define Failed 1
#define Done 2
  
int main()  {
    printf("%d, %d, %d", Working, Failed, Done);
    return 0; 
} 

Kết quả:

0, 1, 2

Enum có nhiều lợi thế hơn Macro khi đặt tên các hằng cố có giá trị đầy đủ.

  • Enum tuân theo các quy tắc phạm vi.
  • Các biến Enum được gán giá trị tự động. Ví dụ sau tương đương với Enum.
    enum state  {Working, Failed, Done};
    

Hàm ftell() trong C
Preprocessor trong C

Recent Updates

Học Lập Trình Online Miễn Phí - VietTuts.VnPhân biệt List, Tuple, Set, Dictionary trong PythonHàm Dictionary dict() trong PythonHàm Set set() trong PythonBài tập Java - Trộn 2 mảng trong javaBài tập Java - Chèn phần tử vào mảng trong javaBài tập Java - Sắp xếp mảng theo thứ tự giảm dầnBài tập Java - Sắp xếp mảng theo thứ tự tăng dầnJava - Liệt kê số lần xuất hiện của các phần tử trong một mảngJava - Liệt kê các phần tử xuất hiện trong mảng đúng 2 lầnJava - Liệt kê các phần tử xuất hiện trong mảng đúng 1 lầnChuỗi chứa chuỗi trong java

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn

Danh sách bài học

Học java
Học servlet
Học jsp
Học Hibernate
Học Struts2
Học Spring
Học SQL

Câu hỏi phỏng vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

About VietTuts.Vn

Hệ thống bài học trên VietTuts.Vn bao gồm các bài lý thuyết và thực hành về các công nghệ java và công nghệ web. Các bài lý thuyết trên hệ thống VietTuts.Vn được tham khảo và tổng hợp từ các trang http://javatpoint.com, http://www.tutorialspoint.com, http://docs.oracle.com/en …

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | VietTuts.Vn team | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml