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

Modifier trong C/C++

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"

Trắc Nghiệm

Ngày:27/10/2020 Chia sẻ bởi:Hoang Oanh Nguyen

CÓ THỂ BẠN QUAN TÂM