Kiểu dữ liệu

Kiểu dữ liệu trong C

Sau đây là các kiểu dữ liệu trong C:

  • Kiểu số nguyên, có thể số âm hoặc số dương: char, short, int, long, long long.
  • Kiểu số nguyên không dấu (thêm từ khóa unsigned vô trước các kiểu số nguyên ): unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long.
  • Kiểu số thực: gồm có floatdouble.
  • Kiểu struct.

Mỗi kiểu có số lượng byte để lưu trữ khác nhau. Trên máy 64-bit thì thường theo thứ tự là char (1 byte), short (2 bytes), int (4 bytes), longlong long (8 bytes). Mỗi byte tương đương với 8 bit nên kiểu char có thể chứa 28 giá trị khác nhau từ -128 đên 127. Kiểu unsigned char cũng chứa 28 giá trị khác nhau nhưng các giá trị từ 0 đến 255.

Trong C không có định nghĩa boolean, các giá trị số 0 thì tương đương với false. Giá trị số khác 0 là true.

Một xâu ký tự (string) là một mảng của kiểu char.

Khai báo biến

Khởi tạo biến sử dụng tên kiểu dữ liệu của biến và tiếp theo là tên biến.
Cũng có thể gán các giá trị cho biến sử dụng toán tử =.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
int a; // khai báo biến a kiểu int
int b = 1, c = 2;
a = b + c; // 3
long d = 123l; // l hoặc L cuối sẽ cho biết nó kiểu long
float e = 1.23f; // f hoặc F cuối sẽ cho biết nó kiểu float

// E hoặc e là kiểu 10^x 
float f = 1.0E-2f; // 1.0E-2f tương đương với 1.0 * 10^(-2)
double g = 3.14; // không có f ở cuối là kiểu double
char h = 97; // 97 tương đương ký tự 'a' trong bộ mã ASCII

Khai báo hằng số chúng ta sử dụng từ khóa const và nên gán giá trị ngay cho hằng số.

1
const int a = 3;

Toán tử sizeof

Toán tử sizeof trả về số lượng theo byte kiểu dữ liệu hoặc biến. Ví dụ:

1
2
3
4
5
6
7
8
9
int a = 10;
sizeof(a); // -> 4, a kiểu int có 4 byte
sizeof(int); // -> 4, kiểu int có 4 byte
sizeof(char); // -> 1, kiểu char có 1 byte
sizeof(short); // -> 2, kiểu short có 2 byte
sizeof(1.0f); // -> 4, kiểu float
sizeof(1.0); // -> 8, kiểu double
sizeof(1l); // -> 8, kiểu long
sizeof(long long); // -> 8, kiểu long long

Kiểu dữ liệu size_t

size_t là kiểu dữ liệu không dấu thường mang kiểu dữ liệu có độ rộng lớn nhất của kiểu số. Ví dụ trong hệ thống 64-bit thì thường size_t sẽ có độ rộng là 8 bytes. Kiểu dữ liệu có dấu của size_tssize_t (signed size_t).

size_t là kiểu rất hay được sử dụng trong ngôn ngữ C. Ví dụ kết quả của trả về của hàm sizeof() là kiểu size_t.

1
2
3
4
sizeof(size_t); // 8
sizeof(ssize_t); // 8

size_t i = 10; // khai báo biến kiểu size_t