Cách gán, thay đổi giá trị của biến và khởi tạo nó trong C++

59

Trong bài học trước, giới thiệu về biến, chúng ta đã đề cập đến cách khai báo một biến mà chúng ta có thể sử dụng để lưu trữ các giá trị. Trong bài học này, chúng ta sẽ khám phá tiếp cách đặt, gán các giá trị vào các biến và sử dụng các giá trị đó.

  Tìm hiểu về Comments trong C++ và ý nghĩa của nó
  Các thành phần và cấu trúc của một chương trình C++

1. Gán giá trị cho biến

Sau khi một biến đã được khái báo, bạn có thể cung cấp cho nó một giá trị (trong một câu lệnh riêng) bằng cách sử dụng toán tử =. Quá trình này được gọi là gán giá trị.

Việc gán giá trị như trên chính là cách sao chép giá trị ở phía bên phải của toán tử = vào biến ở phía bên trái của toán tử. Toán tử = được gọi là toán tử gán.

Dưới đây, một ví dụ mà chúng ta sử dụng phép gán hai lần:

Khi chúng ta gán giá trị 7 cho biến width để nó thay đổi giá trị 5 trước đó và được ghi đè bằng 7. Các biến thông thường chỉ có thể giữ một giá trị tại một thời điểm.

Lưu ý

Một trong những lỗi phổ biến nhất mà các lập trình viên mới thường mắc phải là nhầm lẫn toán tử gán (=) với toán tử so sánh (==). Gán (=) được sử dụng để gán giá trị cho biến. Toán tử này (==) được sử dụng để kiểm tra xem hai toán hạng có bằng nhau về giá trị hay không.

2. Sao chép và khởi tạo giá trị trực tiếp

Một nhược điểm của phép gán là nó yêu cầu ít nhất hai câu lệnh: một để khai báo biến và một để gán giá trị cho biến đó.

Hai bước này có thể được kết hợp. Khi một biến được khai báo, bạn cũng có thể cung cấp một giá trị ban đầu cho biến đó tại ngay thời điểm khai báo đó. Điều này được gọi là khởi tạo.

C ++ hỗ trợ ba cách cơ bản để khởi tạo một biến. Đầu tiên, chúng ta có thể thực hiện sao chép bằng cách sử dụng dấu bằng(=):

Giống như gán, điều này sao chép giá trị ở phía bên phải của giá trị bằng với biến được tạo ở phía bên trái.

Thứ hai, chúng ta có thể thực hiện khởi tạo trực tiếp bằng cách sử dụng dấu ngoặc đơn.

Đối với các kiểu dữ liệu đơn giản (như số nguyên), sao chép và khởi tạo trực tiếp về cơ bản là giống nhau. Nhưng đối với một số loại nâng cao, khởi tạo trực tiếp có thể là cách tốt hơn so với khởi tạo bằng cách gán lại sau. Trước C ++ 11, khởi tạo trực tiếp được khuyến nghị so với khởi tạo lại sau trong hầu hết các trường hợp vì tăng hiệu suất.

3. Khởi tạo bằng dấu ngoặc nhọn

Thật không may, khởi tạo trực tiếp có thể được sử dụng cho tất cả các loại khởi tạo (chẳng hạn như khởi tạo một đối tượng với một danh sách dữ liệu). Trong việc cung cấp một cơ chế khởi tạo phù hợp hơn, C ++ 11 đã thêm một cú pháp mới gọi là khởi tạo dấu ngoặc (đôi khi còn được gọi là khởi tạo thống nhất hoặc khởi tạo danh sách) sử dụng dấu ngoặc nhọn.

Khởi tạo đó có hai dạng:

Hai hình thức này hoạt động gần như giống hệt nhau, nhưng hình thức gán trực tiếp thường được ưa thích hơn.

Khởi tạo một biến với dấu ngoặc rỗng khi muốn khởi tạo giá trị bằng không.

Khởi tạo ngoặc nhọn có thêm lợi ích từ việc không cho phép chuyển đổi kiểu của giá trị đang gán với kiểu hiện tại của biến. Điều này có nghĩa là nếu bạn cố gắng sử dụng dấu ngoặc để khởi tạo một biến có giá trị mà nó không phù hợp với kiểu của biến đó thì trình biên dịch sẽ đưa ra cảnh báo hoặc lỗi. Ví dụ:

Trong đoạn trích trên, chúng ta đang cố gắng gán một số (4.5) có một phần phân số (phần 0,5) cho một biến số nguyên (chỉ có thể giữ các số mà không có các phần phân số). Sao chép và khởi tạo trực tiếp sẽ bỏ phần phân số, dẫn đến khởi tạo giá trị width bằng 4. Tuy nhiên, khởi tạo với dấu ngoặc sẽ khiến trình biên dịch gặp lỗi (nói chung là một điều tốt, vì mất dữ liệu hiếm khi được mong muốn).

Mẹo

Ưu tiên khởi tạo trực tiếp bằng dấu ngoặc bất cứ khi nào có thể.

Bài tập C++ về Biến và Kiểu dữ liệu

TechTalk via Cafedev