hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Học C căn bản
Các kiểu dữ liệu cơ bản trong C

Các kiểu dữ liệu cơ bản trong C

  • 06-03-2022
  • Toanngo92
  • 1 Comment

Ở bài viết trước, chúng ta đã biết cách biến lưu trữ giá trị trong máy tính và cú pháp để khai báo biến, trong bài viết này chúng ta sẽ thảo luạn về các kiểu dữ liệu trong ngôn ngữ C, nhắc lại kiến thức của bài học trước, chung ta hiểu khi khai báo kiểu dữ liệu cho biến để lưu trữ, máy tính sẽ tự động cấp phát cho chúng ta một vị trí vùng nhớ (memory address) cùng một kích thước xác định (memory size) vừa đủ để lưu trữ kiểu dữ liệu chúng ta mong muốn. Và vì ngôn ngữ lập trình C yêu cầu cú pháp chặt chẽ, nên bạn không thể gán giá trị kiểu dữ liệu này cho một biến có kiểu dữ liệu khác, một khi khai báo kiểu dữ liệu gì cho biến thì chỉ được phép gán giá trị kiểu dữ liệu đó cho biến.

Mục lục

  • Từ khóa (keywords) trong khai báo biến C
  • Danh sách các kiểu dữ liệu cơ bản trong C
    • Trong ngôn ngữ C, có 5 kiểu dữ liệu cơ bản:
    • Kiểu dữ liệu dẫn xuất
  • Giới thiệu hàm sizeof()
  • Giới thiệu hàm printf()

Từ khóa (keywords) trong khai báo biến C

Nếu chưa hiểu khái niệm về từ khóa, bạn có thể đọc lại bài viết Cấu trúc chương trình C, danh sách từ khóa (keywords) trong ngôn ngữ C để hiểu lại khái niệm. Ở đây, chúng ta nói qua về các từ khóa để xác định kiểu dữ liệu cho biến khi khai báo biến. Khi khai báo biến, cần đảm bảo tên biến không được phép trùng từ khóa (trong tên biến có thể chứa từ khóa nhưng không được phép giống hệt, ví dụ:

int int; // lỗi
int intNum; // không lỗi

Danh sách các kiểu dữ liệu cơ bản trong C

Các loại dữ liệu được lưu trữ trong biến thông thường bao gồm:

  • Dữ liệu kiểu số
    • Số nguyên. Ví dụ (6 hoặc -5)
    • Số thực. Ví dụ (5.20 hoặc 7.234)
    • Các số dương
    • Các số âm
  • Dữ liệu kiểu văn bản ( ví dụ “abcde” , “toi la toan”)
  • Dữ liệu luận lý (true/false)

Khi dữ liệu được lưu trữ trong các biến dữ có kiểu liệu khác nhau, chúng yêu cầu dung lượng lượng bộ nhớ khác nhau. Dung lượng bộ nhớ chỉ định cho biến tùy thuộc vào kiểu dữ liệu của biến đó (với các ngôn ngữ lập trình khác cũng tương tự ). Cú pháp trong C khi sử dụng kiểu dữ liệu:

data_type variable_name //kiểudữliệu tên_biến
data_type function_name(){
  // do something here
  // kiểudữliệu tên_hàm
}

Trong ngôn ngữ C, có 5 kiểu dữ liệu cơ bản:

int – kiểu dữ liệu số nguyên, sử dụng để biểu diễn các số nguyên trong tự nhiên (viết tắt interger), chiếm 2 bytes vùng nhớ. (Ví dụ 5 hoặc 100 hoặc 10000)

float, double – kiểu dữ liệu số thực, biểu diễn các đại lượng số thập phân như trong toán học, kiểu float chiếm 4 bytes và biểu diễn được 6 số đằng sau số thập phân ( ví dụ 5.999999), còn kiểu double chiếm 8 bytes vùng nhớ, biểu diễn được 10 số đằng sau số thập phân

char – kiểu dữ liệu ký tự, chiếm 1 bytes vùng nhớ biểu diễn các ký tự đơn ( ‘A’,’a’,’B’,’1′,’2′ …). Lưu ý ký tự ‘1’ khác số nguyên 1

void – kiểu dữ liệu sử dụng cho khai báo hàm ( không sử dụng cho khai báo biến), sử dụng để khai báo hàm không trả về giá trị. Sẽ được đề cập ở bài khái niệm về hàm.

Kiểu dữ liệu dẫn xuất

Một bổ từ (modifier) sử dụng để kết hợp với các kiểu dữ liệu số cơ bản nhằm đáp ứng các tính huống khác nhau ( giảm kích thước bộ nhớ, tăng kích thước bộ nhớ, tăng khả năng biểu diễn cho biến ), giúp cho chương trình tối ưu hơn, tiết kiệm bộ nhớ hệ thống, hay biểu diễn các con số lớn hơn khả năng các biến có kiểu dữ liệu thông thường biểu diễn được. ( Sẽ nói ở ví dụ dưới)

sign – kiểu dữ liệu có dấu

unsign – kiểu dữ liệu không dấu

long – cấp phát gấp đôi kích thước vùng nhớ của kiểu dữ liệu

short – cấp phát một nửa kích thước vùng nhớ của kiểu dữ liệu

Cú pháp khai báo:

sign int a; // khai báo biến integer a có dấu
unsign int b; // khai báo biến interer b không dấu
short float c; // khai báo biến float nhưng cấp phát 1 nửa kích thước vùng nhớ => 2 bytes
unsign long double d; // khai báo biến double nhưng cấp phát gấp đôi kích thước vùng nhớ => 16 bytes và biểu diễn số thực không dấu 

Vậy tại sao mỗi kiểu dữ liệu lại chiếm dung lượng vùng nhớ khác nhau, để hiểu rõ hơn vấn đề này, chúng ta hiểu nôm na như sau, về mặt máy tính, máy tính được thiết kế từ các linh kiện điện tử, bao gồm các bảng mạch và sử dụng dòng điện để truyền tải dữ liệu, và nó chỉ hiểu được các giá trị 0,1 tương đương với việc bật tắt dòng điện trong thiết bị điện tử. Vì vậy, để biểu diễn bất kì kiểu dữ liệu nào, máy tính cuối cùng cũng chuyển đổi nó về dạng nhị phân. Vì vậy, mọi con số, mọi ký tự hay các chuỗi kí tự khi đưa về ngôn ngữ máy để thực thi nó cũng sẽ chuyển đổi về giá trị 0 và 1. Nếu muốn tìm hiểu kỹ hơn cách biểu diễn, hãy đọc thêm bài viết Biểu diễn số nguyên dưới dạng nhị phân và các phép toán hệ nhị phân nhé.

mô tả quy trình biên dịch các ngôn ngữ lập trình

Ví dụ: số 31 khi biểu diễn dưới dạng nhị phân sẽ là 11111, với kiểu dữ liệu int, nó sẽ được cấp phát 2 bytes, tương đương 16 bits và lưu trữ dãy số sau dưới bộ nhớ Ram: 0000000000011111 ( số 0 đầu tiên biểu diễn dấu lượng để xác định số nguyên dương hay âm)

(000011111)₂ = (0 × 2⁸) + (0 × 2⁷) + (0 × 2⁶) + (0 × 2⁵) + (1 × 2⁴) + (1 × 2³) + (1 × 2²) + (1 × 2¹) + (1 × 2⁰) = (31)₁₀

Như vậy, với kiểu int thông thường, nó chỉ có thể biểu diễn số lớn nhất là 32767 (0111111111111111) , và nhỏ nhất là -32767( 0111111111111111)

Còn với ký tự (char), nó sẽ được cấp phát 1 byte tương đương 8bits, là bộ ký tự trong bảng mã ASCII ( Chuẩn mã trao đổi thông tin Hoa Kỳ ), mỗi ký tự này hoàn toàn có thể biểu diễn theo dạng số và chúng ta có thể so khới trực tiếp trong bảng mã. Ví dụ: với ký tự ‘A’, mã ascii hệ thập phân là 65 , lưu trữ dãy số sau dưới bộ nhớ RAM: 01000001.

Tương tự với kiểu float và double, tuy nhiên 2 kiểu dữ liệu này cách biểu diễn khá phức tạp nên mình không đề cập ở đây, và chúng ta thấy, với kiểu dữ liệu càng phức tạp, bộ nhớ càng cần nhiều vùng nhớ để lưu trữ nó.

Bảng trình ví dụ mô tả vi dữ liệu biến

Kiểu dữ liệuKích thước vùng nhớ (đơn vị bit)Phạm vi biểu diễn
char8-128 -> 127 ( mã ASCII)
unsigned80 -> 255
signed char8 -128 -> 127 ( mã ASCII)
int16-32.678 -> 32.767
unsigned int160 -> 65.535
signed int16 -32.678 -> 32.767
short int8 -128 -> 127
long int32-2.147.483.648 -> 2.147.483.647

Ví dụ khai báo biến cơ bản:

/* khai bao thu vien chuan */
#include<stdio.h>
#include<stdlib.>
/* end khai bao thu vien chuan */

int main() {
    // khai bao bien so nguyen
    int songuyen;
    // gan gia tri cho so nguyen bang 5
    songuyen = 5;
    // khai bao va gan luon gia tri cho so nguyen
    int songuyencach2 = 6;
    // khai bao bien c la ki tu va gan bang ky tu 'A';
    char c = 'A';
    // khai bao bien so thuc va gan gia tri bang 5.1
    float sothuc = 5.1;
}

Giới thiệu hàm sizeof()

Hàm sizeof là hàm có sẵn (builtin) của ngôn ngữ lập trình c, sử dụng để đo lường kích thước kiểu dữ liệu, giá trị trả về của hàm sẽ là một số nguyên, thể hiện kích thước kiểu dữ liệu mà chúng ta kiểm tra.

Cú pháp hàm sizeof:

#include stdio.h
#include stdlib.h
int main(){
   int a;
   a = sizeof(int);
   printf("%d",a);
   return 0;
}
// kết quả in ra trả về 2 với hệ 16 bit, 4 với hệ 32 và 64bit

Giới thiệu hàm printf()

Hàm printf là một hàm trong input output system của ngôn ngữ C, đây là một hàm kinh điển, hay sử dụng để in dữ liệu từ biến ra màn hình thông qua các bộ định dạng (format specifier). Chúng ta sẽ nói sâu hơn ở bài Thao tác Input / Output trong C. Ở bài viết này mình sẽ ví dụ về cách sử dụng hàm printf cơ bản cùng các bộ định dạng để mọi người hiểu qua vấn đề.

Cú pháp hàm printf():

printf("%d",a); // in biến a dưới dạng só nguyên (decimal)
printf("%f",b)  // in biến dưới dạng số thực (float)
printf("%c",c)  //  in biến dưới dạng ký tự (character)

Ví dụ kết hợp giữa việc khai báo biến và hàm printf() để in kết quả biến ra màn hình

#include<stdio.h>

#include<stdio.h>

int main() {
    // khai bao bien so nguyen
    int songuyen;
    // gan gia tri cho so nguyen bang 5
    songuyen = 5;
    // khai bao va gan luon gia tri cho so nguyen
    int songuyencach2 = 6;
    // khai bao bien kytu la ki tu va gan bang ky tu 'A';
    char kytu = 'A';
    // khai bao bien so thuc va gan gia tri bang 5.1
    float sothuc = 5.1;
    printf("%d,%d,%c,%f",songuyen,songuyencach2,kytu,sothuc);
}

Bài viết liên quan:

Kiểu dữ liệu Struct và một số thuật toán sắp xếp
Xử lý tệp tin (File Handling)
Hàm trong C (Functions)
Chuỗi trong C (String)
Con trỏ trong C (Pointers)
Mảng trong C – Mảng một chiều và mảng đa chiều
Các lệnh rẽ nhánh vô điều kiện trong C – return, goto, break, continue, hàm exit
Vòng lặp trong C – các cấu trúc vòng lặp for, while, do while
Điều kiện trong C – các cấu trúc điều kiện if/else, switch case
Các toán tử và biểu thức trong C
Thao tác Input / Output trong C
Biến và hằng số, định danh trong ngôn ngữ C

1 Comments

  1. Pingback: Học lập trình C theo giáo trình cho người mới bắt đầu - Web888 chia sẻ kiến thức lập trình, kinh doanh, mmo

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

4. KIỂM THỬ VÀ TRIỂN KHAI HỆ THỐNG

2. PHÂN TÍCH VÀ ĐẶC TẢ HỆ THỐNG

5. VIẾT BÁO CÁO VÀ THUYẾT TRÌNH DỰ ÁN

3. THIẾT KẾ HỆ THỐNG

1. TỔNG QUAN KIẾN THỨC THỰC HÀNH TRIỂN KHAI DỰ ÁN CÔNG NGHỆ THÔNG TIN

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×