Modifier trong C/C++
Chúng ta đã biết về kiểu dữ liệu cơ bản trong C++, bao gồm kiểu int, char, kiểu double short int, unsigned char, long double, và kiểu signed int. Trong đó các từ như short, unsigned, long, signed được gọi là các kiểu Modifier, để tìm hiểu modifier trong C++ là gì, mời bạn đọc cùng tham khảo bài viết dưới đây của eLib.VN
Mục lục nội dung
1. Modifier trong C/C++
C++ cho phép các kiểu dữ liệu char, int và double có các Modifier đặt trước chúng. Một Modifier được sử dụng để thông báo ý nghĩa của kiểu cơ sở, giúp cho nó tăng sự chính xác hơn với sự cần thiết của các tình huống đa dạng.
Dưới đây là các Modifier trong C/C++:
-
signed (có dấu)
-
unsigned (không có dấu)
-
long
-
short
Các Modifier là: signed, unsigned, long, và short có thể được áp dụng cho kiểu integer. Ngoài ra, signed và unsigned có thể được áp dụng cho kiểu char, và long có thể áp dụng cho kiểu double.
Các Modifier là signed và unsigned cũng có thể được sử dụng như là tiền tố cho các Modifier là long hoặc short modifiers. Ví dụ: unsigned long int.
C++ cho phép kiểu khai báo tắt để khai báo các unsigned, short, or long integer. Bạn có thể chỉ đơn giản sử dụng từ unsigned, short, hoặc long, mà không cần int. Ví dụ sau minh họa hai khai báo là hợp lệ trong C/C++ để khai báo các biến unsigned integer:
unsigned x;
unsigned int y;
Để phân biệt sự khác nhau giữa hai Modifier là signed integer và unsigned integer được thông dịch bởi C/C++, bạn nên chạy chương trình sau:
#include <iostream>
using namespace std;
/*
* Chương trình này chỉ ra diểm khác nhau giữa
* 2 kiểu số nguyên signed và unsigned.
*/
int main() {
short int i; // số nguyên signed short int
short unsigned int j; // số nguyên unsigned short int
j = 32769;
i = j;
cout << i << " " << j;
return 0;
}
Nó sẽ cho kết quả:
-32767 32769
Nếu bạn quay trở lại chương Kiểu dữ liệu trong C/C++, và đọc phần dãy giá trị của short int và unsigned short int, bạn sẽ nhận ra sự khác nhau khi chạy chương trình trên với j <= 32767 và với j >= 32767.
2. Qualifier trong C/C++
Qualifier cung cấp thông tin bổ sung về các biến theo sau nó.
Qualifier | Ý nghĩa |
---|---|
const | Đối tượng của kiểu const không thể bị thay đổi bởi chương trình trong khi thực thi |
volatile | Modifier này nói cho compiler rằng giá trị của biến có thể được thay đổi một cách không rõ ràng (không báo trước) bởi chương trình. |
restrict | Một con trỏ được đặt là restrict thì có ý nghĩa là đối tượng nó trỏ đến có thể được truy cập. Restrict được thêm vào trong chuẩn C99. |
Ví dụ:
int main()
{
int n1 = 0; // non-const object
const int n2 = 0; // const object
int const n3 = 0; // const object (same as n2)
volatile int n4 = 0; // volatile object
const struct
{
int n1;
mutable int n2;
} x = {0, 0}; // const object with mutable member
n1 = 1; // ok, modifiable object
// n2 = 2; // error: non-modifiable object
n4 = 3; // ok, treated as a side-effect
// x.n1 = 4; // error: member of a const object is const
x.n2 = 4; // ok, mutable member of a const object isn't const
const int& r1 = n1; // reference to const bound to non-const object
// r1 = 2; // error: attempt to modify through reference to const
const_cast<int&>(r1) = 2; // ok, modifies non-const object n1
const int& r2 = n2; // reference to const bound to const object
// r2 = 2; // error: attempt to modify through reference to const
// const_cast<int&>(r2) = 2; // undefined behavior: attempt to modify const object n2
}
Kết quả:
# typical machine code produced on an x86_64 platform
# (only the code that contributes to observable side-effects is emitted)
main:
movl $0, -4(%rsp) # volatile int n4 = 0;
movl $3, -4(%rsp) # n4 = 3;
xorl %eax, %eax # return 0 (implicit)
ret
Trên đây là bài viết của eLib.VN về Modifier trong C/C++. Hy vọng qua bài này bạn sẽ hiểu và vận dụng trong quá trình học tập và làm việc với C++. Chúc các bạn thành công!
Như vậy là chúng ta đã hoàn thành nội dung "Giới thiệu về lập trình C++". Để củng cố và nắm vững nội dung đã học, mời bạn cùng thử sức với "Bộ Câu hỏi Trắc Nghiệm C++ có đáp án chi tiết"
Tham khảo thêm
- doc Cài đặt môi trường lập trình C++
- doc Chương trình C++ đầu tiên
- doc Biến trong C++
- doc Kiểu dữ liệu trong C++
- doc Ép kiểu trong C++
- doc Toán tử trong C++
- doc Từ khóa và comment trong C++
- doc Hằng số trong C++
- doc cout, cin và endl trong C++
- doc Ký tự đặc biệt trong C++
- doc Namespace trong C++
- doc Template trong C++