Trong loạt bài hướng dẫn lập trình C đang diễn ra này, chúng ta đã thảo luận một số nội dung cơ bản như toán tử số học, logic và quan hệ cũng như các vòng lặp có điều kiện như 'if' và 'while'. Thêm vào đó, hướng dẫn này sẽ tập trung vào các toán tử gán (ngoài =) và các biểu thức điều kiện.
Chúng ta hãy bắt đầu với các toán tử gán. Nếu bạn đã tạo các chương trình C cơ bản cho đến bây giờ (tôi chắc rằng bạn sẽ làm như vậy, đặc biệt là sau khi làm theo loạt hướng dẫn của chúng tôi), thì khả năng cao là bạn đã làm điều gì đó tương tự như sau:
Đúng không?
Điều mới mà chúng ta sẽ học hôm nay là bạn có thể viết lại biểu thức này thành như sau:
Đúng vậy, += là một toán tử và cũng được gọi là toán tử gán.
Bây giờ, nếu tôi nói rằng sử dụng các toán tử gán như thế này làm cho mã gọn gàng và dễ đọc hơn, một số bạn có thể lập luận rằng trong bối cảnh của ví dụ chúng ta đã sử dụng, một toán tử tăng cũng tốt như vậy vì nó cũng đảm bảo giá trị của 'a' tăng thêm 1.
Tôi đồng ý, nhưng hãy nghĩ đến các tình huống khác như sau:
Trong những trường hợp này, việc sử dụng toán tử gán chắc chắn làm cho mã viết, đọc và xem lại một bước dễ dàng.
Vẫn chưa thuyết phục? Có lẽ, ví dụ chung sau đây sẽ cung cấp cho bạn ý tưởng tốt hơn về giá trị của toán tử gán. Hãy xem:
Dòng mã này mất nhiều thời gian để hiểu cụ thể vì bạn phải đảm bảo rằng hai mảng (ở mỗi bên của toán tử =) tham chiếu đến cùng một giá trị hay không. Trong trường hợp này, chúng có, vì vậy cách tốt hơn là sử dụng toán tử gán theo cách sau:
Vì vậy, sử dụng toán tử gán trong trường hợp này không chỉ giúp dòng lệnh dễ hiểu hơn mà còn giúp trình biên dịch thân thiện hơn theo nghĩa là nó có thể giúp trình biên dịch tạo ra mã hiệu quả.
Bây giờ bạn đã tin (tôi thực sự hy vọng là bạn tin) về thực tế rằng toán tử gán rất hữu ích, sau đây là danh sách các toán tử có toán tử nhị phân tương ứng:
Năm toán tử đầu tiên trong danh sách mà chúng ta đã thảo luận trong các hướng dẫn cho đến nay. Năm toán tử cuối cùng là toán tử bitwise và chúng ta sẽ thảo luận về chúng trong một trong các hướng dẫn sắp tới của mình. Trong khi đó, đây là một tham chiếu nhanh đến các toán tử gán tương ứng với một số toán tử này:
Vì vậy, nói chung, bạn có thể ghi nhớ rằng:
có thể được biểu thị như sau:
trong đó 'op' là toán tử đang được sử dụng, như +, -, *, v.v.
Xin lưu ý rằng biểu thức sau cũng như các biểu thức tương tự như vậy:
sẽ được mở rộng thành:
Tôi hy vọng mình có thể làm rõ khái niệm về toán tử gán ít nhất là ở cấp độ cơ bản. Tiếp tục, bây giờ chúng ta hãy thảo luận nhanh về biểu thức điều kiện.
Lấy ví dụ sau:
Biểu thức điều kiện giúp bạn viết các logic như thế này trên một dòng. Cách thực hiện như sau:
Vậy thì ở đây, trước tiên điều kiện (a==b) được kiểm tra. Nếu đúng, thì (c+1) được gán cho c, nếu không thì (c-1) được gán cho c. Sau đây là một mã mẫu để làm rõ hơn:
Vì a không bằng b ở đây, nên c được gán (c-1), nghĩa là giá trị mới của c trở thành 8. Trong trường hợp bạn cần, đây là dạng chung của biểu thức điều kiện:
Tôi hy vọng bạn đã có ý tưởng cơ bản về toán tử gán và biểu thức điều kiện. Bây giờ bạn được khuyến khích sử dụng chúng trong các hoạt động mã hóa hàng ngày của mình và nếu bạn gặp bất kỳ vấn đề nào, đừng quên để lại bình luận cho chúng tôi tại đây.
Chúng ta hãy bắt đầu với các toán tử gán. Nếu bạn đã tạo các chương trình C cơ bản cho đến bây giờ (tôi chắc rằng bạn sẽ làm như vậy, đặc biệt là sau khi làm theo loạt hướng dẫn của chúng tôi), thì khả năng cao là bạn đã làm điều gì đó tương tự như sau:
Mã:
a = a + 1;
Điều mới mà chúng ta sẽ học hôm nay là bạn có thể viết lại biểu thức này thành như sau:
Mã:
a += 1;
Bây giờ, nếu tôi nói rằng sử dụng các toán tử gán như thế này làm cho mã gọn gàng và dễ đọc hơn, một số bạn có thể lập luận rằng trong bối cảnh của ví dụ chúng ta đã sử dụng, một toán tử tăng cũng tốt như vậy vì nó cũng đảm bảo giá trị của 'a' tăng thêm 1.
Mã:
a++;
Mã:
b = b + 10;
b = b + c
Vẫn chưa thuyết phục? Có lẽ, ví dụ chung sau đây sẽ cung cấp cho bạn ý tưởng tốt hơn về giá trị của toán tử gán. Hãy xem:
Mã:
arr1[arr2[integer1 + integer2] + arr3[integer3 + integer4] + arr4 [integer5 + integer6]] =arr1[arr2[integer1 + integer2] + arr3[integer3 + integer4] + arr4 [integer5 + integer6]] + 5
Mã:
arr1[arr2[integer1 + integer2] + arr3[integer3 + integer4] + arr4 [integer5 + integer6]] += 5;
Bây giờ bạn đã tin (tôi thực sự hy vọng là bạn tin) về thực tế rằng toán tử gán rất hữu ích, sau đây là danh sách các toán tử có toán tử nhị phân tương ứng:
Mã:
+ - * / % > & ^ |
Mã:
a += b;
a -= b;
a *= b;
a /= b;
a %= b;
Mã:
biểu thức1 = (biểu thức1) op (biểu thức2)
Mã:
biểu thức1 op= biểu thức2
Xin lưu ý rằng biểu thức sau cũng như các biểu thức tương tự như vậy:
Mã:
a *= b - c
Mã:
a = a * (b-c)
Lấy ví dụ sau:
Mã:
if(a==b)
c = c + 1;
else
c = c - 1;
Mã:
c = (a==b) ? (c+1) : (c -1)
Mã:
int main()
{
int a = 6, b = 5, c = 9;
c = (a==b) ? (c+1) : (c -1) ;
printf("\n %d \n", c);
return 0;
}
Mã:
expression1 ? expression2 : expression3