Kiểu dữ liệu trong C

Cùng khám phá về kiểu dữ liệu trong C. Bạn sẽ biết kiểu dữ liệu trong C là gì, các kiểu dữ liệu trong C, cách kiểm soát kích cỡ size của kiểu dữ liệu, cũng như bốn kiểu dữ liệu thông dụng nhất trong C là char, int, float & double. không dừng lại ở đó bạn cũng sẽ học được cách dùng kiểu dữ liệu có dấu & không có dấu trong C (signed & unsigned) trong C sau bài học này.

Kiểu dữ liệu trong C là gì

Trong các bài Biến trong C là gì tất cả chúng ta đã biết biến trong C là một thẻ địa chỉ đại diện cho một vùng trong bộ nhớ lưu trữ laptop được sử dụng để lưu dữ liệu trong giải quyết chương trình. Trong laptop có nhiều loại dữ liệu khác nhau với độ lớn nhỏ khác nhau, do vậy so với mỗi loại dữ liệu tất cả chúng ta cũng phải chỉ định vùng chứa nó có độ dài hợp lý, tránh việc diện tích vùng quá nhỏ chẳng thể chứa hết dữ liệu, hoặc là vùng chứa dữ liệu lại quá to gây phí phạm tài nguyên chương trình.

Vì thế trong chương trình C, việc chỉ định loại dữ liệu nào sẽ được sử dụng trong biến đặc biệt quan trọng, & loại dữ liệu nào được sử dụng trong biến được quyết định bằng kiểu dữ liệu sử dụng trong biến hay có cách gọi khác là kiểu dữ liệu trong C.

Nói một cách dễ dàng thì kiểu dữ liệu trong C là cái tên đại diện của dữ liệu trong chương trình, từ kiểu dữ liệu tất cả chúng ta sẽ hiểu rằng loại dữ liệu đang được sử dụng là gì cũng như các đặc điểm của loại dữ liệu đó. Chẳng hạn như kiểu int sẽ cho tất cả chúng ta biết dữ liệu thuộc loại số, độ rộng bit là 4 byte, & có dãy giá trị nằm từ 2147483648 tới 2147483647 ví dụ.

Có một liên tưởng rất hay này là kiểu dữ liệu trong C không khác gì với là kiểu Pokemon vậy, ai đã xem loạt anime về Pokemon sẽ biết nhân vật Satoshi có một cái máy chứa thông tin về toàn bộ các loại Pokemon trên toàn cầu. Giống như mỗi Pokemon sẽ thuộc về một kiểu Pokemon riêng, với cái tên, mẫu mã, đặc điểm, ưu nhược riêng, thì mỗi dữ liệu trong C cũng sẽ thuộc về một kiểu dữ liệu riêng, với cái tên , độ lớn & phạm vi giá trị của riêng dữ liệu đó vậy.

Kiểu dữ liệu trong C được sử dụng trong khai báo & khởi tạo biến, & có công dụng cảnh báo cho chương trình biết & chuẩn bị vùng chứa dữ liệu thích hợp trong bộ nhớ lưu trữ laptop để có thể lưu được nó. Bạn có thể đọc qua cách dùng cụ thể của chúng trong khởi tạo & khai báo biến như sau:

Các kiểu dữ liệu trong C

Có 3 loại dữ liệu tương ứng với 7 kiểu dữ liệu thông dụng trong C như sau:

LoạiKiểu dữ liệuKích thướcPhạm vi giá trịLoại ký tựchar1 byte-127 ~ 128Số nguyênshort int
int
long int2 byte
4 byte
4 byte-32768 ~ 32767
-2147483648 ~ 2147483647
-2147483648 ~ 2147483647Số thực dấu phẩy độngfloat
double
long double4 byte
8 byte
8 byte3.4E-38 ~ 3.4E+38
1.7E-308 ~ 1.7E+308
1.7E-308 ~ 1.7E+308

Giống như ở bảng trên thì mỗi kiểu dữ liệu trong C đều được chỉ định một kích cỡ riêng, & tương ứng với kích cỡ đó thì khả năng lưu trữ giá trị cũng sẽ được seting. Chẳng hạn như kiểu char ở trên có kích cỡ nhỏ nhất (1 byte) & chỉ chứa được các giá trị trong phạm vi từ -127 đến 128 ví dụ.

Chú ý rằng trong C do không có nguyên tắc cụ thể về kích cỡ của một kiểu giá trị, & có thể khác nhau tùy theo vào môi trường lớn mạnh, do vậy các thông tin về kích cỡ của kiểu dữ liệu ở trên chỉ đưa tính đọc qua.

Lại nữa, dù rằng có nhiều kiểu dữ liệu trong C như trong bảng trên, nhưng chỉ có 4 kiểu dữ liệu mà tất cả chúng ta hay dùng nhất đó chính là char, int, float & double mà thôi. Thông thường khi cần lưu dữ liệu ký tự thì tất cả chúng ta sử dụng kiểu char, số nguyên thì dùng kiểu int, & số thực thì sẽ dùng kiểu float. Ngoài ra trong các phép tính toán khoa học cần độ đúng đắn cao thì hay dùng kiểu double.

Xem Thêm  Truy cập dữ liệu từ JavaScript JSON - cách lấy dữ liệu json trong javascript

Kiểm soát kích cỡ (size) của kiểu dữ liệu trong C

Sau đây Kiyoshi sẽ chỉ dẫn bạn cách kiểm soát kích cỡ (size) của dữ liệu trong C. Chú ý là do trong C do không có nguyên tắc cụ thể về kích cỡ của một kiểu giá trị, & có thể khác nhau tùy theo vào môi trường lớn mạnh, nên giá trị của phép tìm này có thể khác đi trong môi trường lớn mạnh C của các bạn.

Để kiểm soát kích cỡ (size) của kiểu dữ liệu trong C, tất cả chúng ta sử dụng tới hàm sizeof() với cú pháp sau đây:

sizeof(type);

Trong số đó type là tên của kiểu dữ liệu cần kiểm soát, chẳng hạn như là int, short int, double hay long double ví dụ. Tất cả chúng ta sẽ sử dụng mã lệnh sau để tiến hành kiểm soát kích thức của kiểu dữ liệu trong C như sau:



int

main

(

void

)

{


printf

(

"char : %dn"

,

sizeof

(

char

));


printf

(

"short int : %dn"

,

sizeof

(

short

int

));


printf

(

"int : %dn"

,

sizeof

(

int

));


printf

(

"long int : %dn"

,

sizeof

(

long

int

));


printf

(

"float : %dn"

,

sizeof

(

float

));


printf

(

"double : %dn"

,

sizeof

(

double

));


printf

(

"long double : %dn"

,

sizeof

(

long

double

));



return

;


}


Kết quả kiểm soát kích cỡ size của kiểu dữ liệu trong môi trường lớn mạnh C của Kiyoshi sẽ là:

char : 1


short int : 2


int : 4


long int : 8


float : 4


double : 8


long double : 16


Bạn cũng hãy thử xem kết quả trong môi trường lớn mạnh C của các bạn có giống Kiyoshi hay không nhé.

Bốn kiểu dữ liệu thông dụng nhất trong C

Kiểu char trong ͼ

Kiểu char, hay có cách gọi khác là kiểu ký tự trong C, được sử dụng để thao tác với các ký tự trong chương trình C. Tất cả chúng ta khởi tạo một biến thuộc kiểu char trong C với cú pháp sau đây:

char name = 'value';

Chẳng hạn rõ ràng:

char

char1 =

'α'

;


char

char2 =

'?'

;


char

char3 =

'8'

;


Tất cả chúng ta sử dụng cặp dấu nháy đơn '' để trình diễn giá trị của ký tự được gán vào biến thuộc kiểu char. Các bạn có thể khám phá kỹ hơn về ký tự là gì, cũng như cách dùng & in kiểu ký tự ra màn hình tại nội dung sau:

  • Đọc thêm: Ký tự trong C

Chú ý là tất cả chúng ta chỉ sử dụng kiểu char với một ký tự. Trong trường hợp cần lưu một chuỗi ký tự thì thay vì kiểu char thông thường thì tất cả chúng ta cần sử dụng kiểu chuỗi ký tự với cách diễn tả & cú pháp khai báo khác như sau:

char name[size] = "value";

Trong số đó size là độ dài của chuỗi ký tự có giá trị value cần gán, & đối số này có thể được lược bỏ.

Chẳng hạn rõ ràng:

char

str1[

3

] =

"abc"

;


char

str2[] =

"abc"

;


Bạn cũng có thể đọc thêm về chuỗi ký tự tại nội dung sau:

  • Đọc thêm: Chuỗi ký tự trong C

Kiểu int trong ͼ

Kiểu int, hay có cách gọi khác là kiểu số nguyên trong C, được sử dụng để thao tác với các số nguyên trong chương trình C. Tất cả chúng ta khởi tạo một biến thuộc kiểu int trong C với cú pháp sau đây:

int name = value;

Chẳng hạn rõ ràng:

int

num1 =

1

;


int

num2 =

22

;


int

num3 =

88

;


Kiểu int có kích cỡ dữ liệu là 4 byte, & cho phép tất cả chúng ta lưu giá trị trong khoảng từ -2147483648 đến 2147483647.

Khi Note đến phạm vi của số, tất cả chúng ta có thể thấy kiểu int nằm trong phạm vi của cả kiểu float & kiểu double nên sẽ có bạn tự hỏi tạo sao lại cần đến kiểu int, kiểu int có thiết yếu không trong khi đã có 2 kiểu khác chứa nó rồi? Ngoài ra vì thuộc tính của chúng là khác nhau, nên dù cho chúng có bao gồm phạm vi của nhau thì tất cả chúng ta cũng phải sử dụng chúng thích hợp trong các trường hợp. Chẳng hạn đơn cử, kiểu int sẽ hiển thị đúng đắn giá trị của số, trong khi hai kiểu float & double chỉ có thể hiển thị giá trị ước lượng mà thôi.

Xem Thêm  Cách thêm CSS vào HTML (các kiểu Liên kết, Nhúng, Nhập & Nội tuyến) - cách thêm lớp css vào html

Các bạn có thể khám phá kỹ hơn về số là gì, cũng như cách dùng & in kiểu số ra màn hình tại nội dung sau:

  • Đọc thêm: Số trong C

Kiểu double trong ͼ

Kiểu double trong C được sử dụng để thao tác với các số thực dấu phẩy động trong chương trình C. Tất cả chúng ta khởi tạo một biến thuộc kiểu double trong C với cú pháp sau đây:

double name = value;

Chẳng hạn rõ ràng:

double

num1 =

1.234

;


double

num2 =

22.3463

;


double

num3 =

88.52432

;


Kiểu double cùng với kiểu float là hai kiểu dữ liệu được sử dụng để trình diễn số thực dấu phẩy động trong chương trình C. Ngoài ra do kiểu double có độ đúng đắn cao hơn kiểu float (trổ tài qua việc số chữ số đằng sau dấu chấm là nhiều hơn đối với kiểu float), nên nó hay được sử dụng nhiều hơn trong các tính toán khoa học vốn yêu cầu cao hơn về độ đúng đắn.

Kiểu float trong ͼ

Kiểu float trong C được sử dụng để thao tác với các số thực dấu phẩy động trong chương trình C. Tất cả chúng ta khởi tạo một biến thuộc kiểu float trong C với cú pháp sau đây:

float name = value;

Chẳng hạn rõ ràng:

float

num1 =

1.234

;


float

num2 =

22.3463

;


float

num3 =

88.52432

;


Kiểu double cùng với kiểu float là hai kiểu dữ liệu được sử dụng để trình diễn số thực dấu phẩy động trong chương trình C. Dù rằng phạm vi kiểu float nằm trong kiểu double & có độ đúng đắn kém hơn kiểu double, không những thế trong các tính toán thông thường với số thực vốn không yêu cầu quá cao về độ đúng đắn, & hay được làm tròn số nữa, thì kiểu float lại có ích thế hơn kiểu double, do nó bé hơn nên tốn ít bộ nhớ lưu trữ hơn.

Kiểu dữ liệu có dấu & không có dấu trong C | signed & unsigned trong C

signed & unsigned trong C là gì

Ở phần trên tất cả chúng ta đã biết với mỗi kiểu dữ liệu trong C sẽ có một phạm vi giá trị riêng khởi đầu từ một số âm đến một số dương nào đó. Chẳng hạn như kiểu char có phạm vi giá trị khởi đầu từ -127 đến 128 ví dụ. Tất cả chúng ta gọi các dữ liệu có phạm vi giá trị chứa cả số âm & số dương như thế là kiểu dữ liệu có dấu – kiểu dữ liệu signed trong C.

Trái lại thì với các dữ liệu có phạm vi giá trị không chứa số âm thì được gọi là kiểu dữ liệu không dấu- kiểu dữ liệu unsigned trong C.

Về mặc định thì khi khai báo hoặc khởi tạo biến trong C, chương trình sẽ auto khái niệm biến thuộc kiểu kiểu dữ liệu có dấu – kiểu dữ liệu signed . Ngoài ra cũng có những trường hợp tất cả chúng ta biết trước sẽ không sử dụng tới số âm trong chương trình, do vậy nếu tất cả chúng ta khai báo kiểu dữ liệu theo cách thông thường, thì sẽ kéo theo một phần dung tích trong biến sẽ được khai báo mà không được sử dụng, kéo theo sự phí phạm bộ nhớ lưu trữ chương trình.

Bởi thế, để tiết kiệm & sử dụng hiệu quả dung tích bộ nhớ lưu trữ chỉ định cho biến, tất cả chúng ta có thể báo cho chương trình biết trước dữ liệu mà tất cả chúng ta lưu trong biến có dấu hay không, bằng cách dùng tới hai từ khoá là signed & unsigned trong C. Trong số đó signed nghĩa là dữ liệu có dấu, & unsigned nghĩa là dữ liệu không có dấu trong C.

Xem Thêm  Nền nội dung HTML: Đây là các thuộc tính CSS để thay thế bằng » - nền cơ thể trong css

Chú ý là khi chỉ định Kiểu dữ liệu signed & unsigned trong C, tất cả chúng ta cần phải Note tới 2 điểm sau đây:

  1. Chẳng thể sử dụng signed & unsigned trong C cho các kiểu dữ liệu số thực dấu phẩy động như là float hay double.

  2. Việc chỉ định signed & unsigned sẽ không làm biến đổi kích cỡ (size) của dữ liệu, mà chỉ biến đổi phạm vi dữ liệu có thể gán trong nó mà thôi.

Rõ ràng thì tất cả chúng ta có bảng so sánh các kiểu dữ liệu trong C trong trường hợp mặc định (signed) & unsigned như sau:

Bảng So sánh Kiểu dữ liệu mặc định (signed) & unsigned trong C

LoạiKiểu dữ liệuKích thướcPhạm vi giá trị mặc đinh (signed)Phạm vi giá trị (unsigned)Loại ký tựchar1 byte-127 ~ 1280 ~ 255Số nguyênshort int
int
long int2 byte
4 byte
4 byte-32768 ~ 32767
-2147483648 ~ 2147483647
-2147483648 ~ 21474836470 ~ 65535
0 ~ 4294967295
0 ~ 4294967295

Cách khai báo kiểu dữ liệu signed & unsigned trong C

Để khởi tạo & khai báo kiểu dữ liệu có dấu signed trong C, theo cách đúng đắn thì tất cả chúng ta cần phải thêm từ khoá signed vào trước tên biến khi khai báo hoặc khởi tạo nó. Chẳng hạn:

signed

char

char1 =

'α'

;


signed

char

str[] =

"abc"

;


signed

int

num1 =

22

;


Ngoài ra thì do tất cả chúng ta có thể lược bỏ từ khoá này & sử dụng kiểu dữ liệu theo cách mặc định, giống như Kiyoshi đã chỉ dẫn ở phần trên.

char

char1 =

'α'

;


char

str[] =

"abc"

;


int

num1 =

22

;


Khác với kiểu dữ liệu có dấu thì để sử dụng kiểu dữ liệu không dấu unsigned trong C thì tất cả chúng ta bắt buộc phải thêm từ khoá unsigned vào đằng trước khi khởi tạo & khai báo biến. Chẳng hạn:

unsigned

char

char1 =

'α'

;


unsigned

char

str[] =

"abc"

;


unsigned

int

num1 =

22

;


Sự độc đáo giữa kiểu dữ liệu signed & unsigned trong C

Hai kiểu dữ liệu signed & unsigned trong C có điểm nhấn duy nhất đó chính là phạm vi giá trị có thể sử dụng được trong nó.

Lấy chẳng hạn như kiểu char ví dụ. Với mặc định thông thường thì tất cả chúng ta chỉ có thể gán các giá trị trong phạm vi từ -127 đến 128, không những thế nếu chuyển sang kiểu unsigned trong C thì tất cả chúng ta lại có thể gán các giá trị trong phạm vi từ 0 đến 255.

Hãy kiểm chứng bằng chương trình sau đây:



int

main

(

void

)

{


char

var1 =

200

;


unsigned

char

var2 =

200

;



printf

(

"kiểu dữ liệu signedt= %dn"

,var1);



printf

(

"kiểu dữ liệu unsignedt= %d"

,var2);



}


Bạn có thể thấy cụ thể rằng với mặc định thông thường (signed) thì biến var1 chẳng thể chứa giá trị 200 mà trả về một giá trị không phải do tất cả chúng ta chỉ định, trong khi kiểu dữ liệu unsigned lại có thể chứa được giá trị 200 & in nó ra đúng đắn ở màn hình kết quả.

Lưu ý không sử dụng signed & unsigned với float hay double trong C

Với các kiểu dữ liệu dùng để trình diễn số thực dấu phẩy động trong C như là kiểu float hay double ví dụ, tất cả chúng ta Note rằng chẳng thể sử dụng signed & unsigned với chúng được. Chẳng hạn các cách viết sau đây sẽ đều kéo theo lỗi compile chương trình:

signed

float

num1 =

1.234

;


signed

double

num2 =

1.234

;



unsigned

float

num3 =

1.234

;


unsigned

double

num4 =

1.234

;



>>>Main.ͼ:4:2: error: 'float' cannot be signed or unsigned


signed

float

num1 =

1.234

;


^


>>>Main.ͼ:5:2: error: 'double' cannot be signed or unsigned


unsigned

double

num3 =

1.234

;


^


Kết luận

Trên đây Kiyoshi đã giải thích cụ thể về kiểu dữ liệu trong C rồi. Để nắm vững bài viết bài học hơn, bạn hãy thực hành viết lại các chẳng hạn của ngày lúc này nhé.

& hãy cùng khám phá những tri thức sâu hơn về C trong các bài học kế tiếp.

Viết một bình luận