Toán tử một ngôi trong C++

Toan Tu Mot Ngoi Trong C



Trong C++, toán tử một ngôi là toán tử chỉ hoạt động trên một toán hạng duy nhất. Toán tử một ngôi đóng một vai trò quan trọng trong C++ bằng cách cho phép thao tác giá trị liên quan đến một biến hoặc biểu thức số ít. Các toán tử linh hoạt này có thể được sử dụng trong nhiều ngữ cảnh khác nhau như tăng hoặc giảm một biến, thay đổi dấu của một giá trị số hoặc thực hiện một phép phủ định logic. Bài viết này khám phá các toán tử một ngôi trong C++ bằng cách đề cập đến các loại và ứng dụng của chúng, đồng thời cung cấp nhiều ví dụ để hiểu rõ hơn.

C++ hỗ trợ một số toán tử một ngôi, mỗi toán tử phục vụ một mục đích duy nhất trong việc thao tác các biến. Hãy bắt đầu với các toán tử tăng và giảm thường được sử dụng trong các vòng lặp và các thuật toán khác nhau.

Ví dụ 1: Toán tử tăng (++) và giảm (-)

Các toán tử đơn nguyên tăng (++) và giảm (-) là các công cụ cơ bản trong C++ để sửa đổi giá trị của một biến bằng cách tăng hoặc giảm tương ứng 1. Toán tử tăng (++) thêm 1 vào giá trị của biến, trong khi toán tử giảm (-) trừ 1. Các toán tử này có thể được áp dụng cho các biến số nguyên, dấu phẩy động và con trỏ, mang lại sự linh hoạt trong cách sử dụng chúng.







Hãy cùng khám phá các toán tử này thông qua một ví dụ thực tế:



#include
sử dụng không gian tên tiêu chuẩn ;

int chủ yếu ( )
{

int quầy tính tiền = 0 ;

// Toán tử tăng
cout << 'Giá trị ban đầu: ' << quầy tính tiền << kết thúc ;

quầy tính tiền ++ ;
cout << 'Giá trị sau khi tăng:' << quầy tính tiền << kết thúc ;

// Toán tử giảm
quầy tính tiền -- ;
cout << 'Giá trị sau khi giảm:' << quầy tính tiền << kết thúc ;

trở lại 0 ;
}

Chương trình C++ đơn giản này bao gồm thư viện luồng đầu vào/đầu ra cần thiết với “#include ”. Trong hàm “main()”, chúng ta khởi tạo một biến số nguyên gọi là “bộ đếm” và gán nó với giá trị ban đầu là 0. Sử dụng câu lệnh “cout”, chúng ta in giá trị ban đầu của “bộ đếm” ra bảng điều khiển, cung cấp một cơ sở cho cuộc biểu tình của chúng tôi. Từ nay trở đi, toán tử tăng (bộ đếm++) được sử dụng để tăng giá trị biến “bộ đếm” lên 1.



Sau thao tác này, giá trị cập nhật của “bộ đếm” được hiển thị bằng câu lệnh “cout” khác. Sau đó, chúng tôi sử dụng toán tử giảm dần (bộ đếm—) để giảm giá trị của “bộ đếm” xuống 1. Kết quả sau đó được hiển thị trên bảng điều khiển. Cuối cùng, chương trình kết thúc với “return 0;” tuyên bố cho biết việc thực hiện thành công.





Hình ảnh đầu ra hiển thị giá trị ban đầu, giá trị sau khi tăng và giá trị giảm.



Ví dụ 2: Toán tử dương (+) và âm (-)

Trong khi toán tử một ngôi dương hiếm khi được sử dụng thì toán tử âm lại là toán tử cơ bản để thay đổi dấu của một biến.

#include
sử dụng không gian tên tiêu chuẩn ;

int chủ yếu ( ) {
int giá trị dương = 10 ;
int giá trị âm = - giá trị dương ;

cout << 'Giá trị dương: ' << giá trị dương << kết thúc ;
cout << 'Giá trị âm:' << giá trị âm << kết thúc ;

trở lại 0 ;
}

Chúng tôi khởi tạo hai biến số nguyên cho mã ví dụ này là “ PositiveValue” và “ NegativeValue”. “Giá trị dương” được gán với giá trị là 10. Sau đó, chúng ta khai báo “giá trị âm” và gán nó với giá trị phủ định của “giá trị dương” bằng cách sử dụng toán tử trừ đơn nguyên. Toán tử này thay đổi hiệu quả dấu của giá trị ban đầu. Sau đó, chúng tôi sử dụng câu lệnh “cout” để hiển thị cả đầu ra dương cũng như âm trên bảng điều khiển. Cuối cùng, chương trình trả về 0 cho biết chức năng chính đã hoàn thành thành công.

Khi được thực thi, chương trình này xuất ra các giá trị dương và âm.

Ví dụ 3: Toán tử logic NOT (!)

Toán tử một ngôi trong C++, ký hiệu là “!” ký hiệu, được gọi là toán tử logic NOT. Nó được thiết kế để đảo ngược giá trị thật của một biểu thức nhất định. Nó hoạt động trên một toán hạng duy nhất thường là một biểu thức logic hoặc một điều kiện. Phép toán NOT logic mang lại kết quả “true” khi toán hạng là “false” và mang lại kết quả “false” khi toán hạng là “true”.

Đây là một ví dụ đơn giản minh họa cách sử dụng toán tử logic NOT:

#include
sử dụng không gian tên tiêu chuẩn ;

int chủ yếu ( ) {
bool là đúng = ĐÚNG VẬY ;
bool là sai = SAI ;

bool kết quảKhông đúng = ! là đúng ;
bool kết quảKhông sai = ! là sai ;

cout << 'Giá trị ban đầu:' << là đúng << ', Sau KHÔNG:' << kết quảKhông đúng << kết thúc ;
cout << 'Giá trị ban đầu:' << là sai << ', Sau KHÔNG:' << kết quảKhông sai << kết thúc ;

trở lại 0 ;
}

Trong ví dụ này, chúng ta khai báo hai biến Boolean là “isTrue” và “isFalse”. Sau đó, chúng tôi áp dụng toán tử NOT logic cho từng biến, lưu trữ kết quả tương ứng trong “resultNotTrue” và “resultNotFalse”. Chương trình sau đó in các giá trị ban đầu và kết quả của phép toán NOT logic cho cả hai biến.

Khi thực thi chương trình này, chúng ta sẽ nhận thấy rằng toán tử logic NOT đảo ngược giá trị thật của “isTrue” (ban đầu được đặt thành true), hiển thị giá trị sai. Tương tự, nó đảo ngược giá trị thật của “isFalse” (ban đầu là sai), mang lại giá trị đúng.

Đầu ra minh họa rõ ràng sự đảo ngược các giá trị chân lý mà toán tử logic NOT đạt được.

Ví dụ 4: Toán tử bitwise NOT (~)

Toán tử NOT theo bit (~) trong C++ là toán tử một ngôi thực hiện việc phủ định từng bit của toán hạng của nó. Nó hoạt động với các kiểu dữ liệu cơ bản, đặc biệt là các kiểu dữ liệu tích phân, chẳng hạn như số nguyên. Kết quả đạt được bằng cách đảo ngược từng bit riêng lẻ trong toán hạng, chuyển đổi 0 thành 1 và 1 thành 0.

Để minh họa cách sử dụng nó, hãy xem xét đoạn mã sau:

#include
sử dụng không gian tên tiêu chuẩn ;

int chủ yếu ( ) {
int giá trị gốc = 5 ;

int kết quảBitwiseNot = ~giá trị gốc ;

cout << 'Giá trị ban đầu:' << giá trị gốc << ', Sau Bitwise KHÔNG: ' << kết quảBitwiseNot << kết thúc ;

trở lại 0 ;
}

Trong ví dụ này, chúng tôi khai báo một biến số nguyên “originValue” có giá trị là “5”. Tiếp theo, chúng tôi sử dụng toán tử NOT theo bit (~) trên biến này. Kết quả của biến này được lưu trữ trong “resultBitwiseNot”. Sau đó, chương trình sẽ in giá trị ban đầu và kết quả sau thao tác NOT theo bit bằng cách sử dụng câu lệnh “cout”.

Khi chạy chương trình này, chúng ta sẽ thấy toán tử NOT theo bit đảo ngược từng bit của biểu diễn nhị phân của “originValue”, dẫn đến một giá trị mới.

Ví dụ 5: Toán tử địa chỉ và gián tiếp

Địa chỉ của toán tử, được biểu thị bằng ký hiệu “&”, phục vụ mục đích truy xuất vị trí bộ nhớ của một biến. Nó trả về một con trỏ tới biến cho phép truy cập gián tiếp vào giá trị của nó. Toán tử gián tiếp hoặc toán tử quy định (*) nhận giá trị được lưu trữ tại vị trí bộ nhớ được chỉ định bởi một con trỏ. Nó cung cấp cách làm việc với dữ liệu thực tế thông qua một con trỏ một cách gián tiếp.

Hãy hiểu khái niệm này bằng một ví dụ:

#include
sử dụng không gian tên tiêu chuẩn ;

int chủ yếu ( ) {
int giá trị = 99 ;

cout << 'Giá trị ban đầu:' << giá trị << kết thúc ;

int * ptr = & giá trị ;
cout << 'Địa chỉ bộ nhớ:' << ptr << kết thúc ;

int đã lấy được giá trị = * ptr ;
cout << 'Giá trị được truy xuất:' << đã lấy được giá trị << kết thúc ;

trở lại 0 ;
}

Mã này minh họa việc sử dụng các toán tử địa chỉ và gián tiếp. Đầu tiên, một biến số nguyên có tên “value” được khởi tạo với giá trị 99. Sau đó, giá trị ban đầu của “value” được xuất ra bảng điều khiển. Sau đó, biến con trỏ “ptr” được khai báo và địa chỉ của toán tử (&) được sử dụng để gán địa chỉ bộ nhớ của “giá trị” cho “ptr”. Sau đó, chương trình xuất ra địa chỉ bộ nhớ này, hiển thị hoạt động cơ bản của toán tử “địa chỉ”.

Sau đó, một biến số nguyên mới là “retrievedValue” được khai báo và toán tử gián tiếp (*) được sử dụng để truy xuất giá trị được lưu trữ tại địa chỉ bộ nhớ được trỏ bởi “ptr”. Giá trị được truy xuất sau đó được xuất ra bàn điều khiển.

Phần kết luận

Bài viết này cung cấp sự khám phá toàn diện về các toán tử một ngôi trong C++. Chúng tôi bắt đầu bằng cách phân loại các toán tử một ngôi thành nhiều loại khác nhau bao gồm số học, logic, bitwise và những loại liên quan đến địa chỉ và hướng dẫn. Các tình huống trong thế giới thực đã được minh họa để chứng minh ứng dụng hữu ích của các toán tử này. Các toán tử này đóng vai trò then chốt trong lập trình C++, cho phép các nhà phát triển làm việc với con trỏ một cách hiệu quả và quản lý bộ nhớ.