Biểu thức điều kiện (Conditional expressions)
Hôm nay đọc sách thấy phần này hay nên muốn viết 1 bài chia sẻ với các bạn.
Bản chất của biểu thức điều kiện cũng là một biểu thức với cú pháp đơn giản mà chắc các bạn cũng biết:
biểu thức 1 ? biểu thức 2 : biểu thức 3.
Về cách hoạt động của nó thì rất đơn giản. Đầu tiên, biểu thức 1 được đánh giá.Nếu kết quả thu được khác 0 thì biểu thức 2 được đánh giá và kết quả thu được từ việc đánh giá biểu thức 2 chính là kết quả của biểu thức điều kiện. Ngược lai,nếu như kết quả của biểu thức 1 bằng o thì biểu thức 3 được đánh giá và kết quả của thằng 3 là kết quả của biêu thức điều kiện.
Ví dụ: Viết chương trình tìm số lớn nhất trong 2 số a,b.(a,b nhập từ bàn phím).
#include<stdio.h>
int main()
{
int a,b,max;
printf("Nhap gia tri cua a ,b:
");
scanf("%d%d",&a,&b);
max=(a>b)?a:b;
printf("Gia tri can tim la:%d",max);
return 0;
}
Một bài toán khá đơn giản, có rất nhiều cách để giải nhưng ở đây mình chọn cách dùng biểu thức điều kiện.Chắc code trên sẽ không khó được các bạn nhưng mình chỉ muốn lưu ý ở câu lệnh
max=(a>b)?a:b;
dấu ngoặc đơn ở câu lệnh trên có thể bỏ qua mà không hề thay đổi kết quả, mình viết như vậy để các bạn có thể nhìn thấy rõ biểu thức 1 mà mình đã nói trong phần cú pháp.Nếu không rõ phần này thì có thể vào đây để xem:
http://www.java-samples.com/showtutorial.php?tutorialid=503
Một phần nữa mình muốn nói với các bạn ở đây.Nếu như kết quả của biểu thức 1 và 2 có kiểu dữ liệu khác nhau thì kết quả của biểu thức điều kiện sẽ lấy theo kiễu dữ liệu lớn hơn.
Ví dụ: max=(a>b)?a:b
Nếu a là 1 int
,b là 1 float
thì max
sẽ là 1 float
.
Có vẻ rất khó hiểu nhưng các bạn có thể chạy code sau để hiểu rõ hơn.
#include<stdio.h>
int main()
{
int a=1;
float b=1.5;
printf("%d",(5>0)?b:a);
printf("%f",(5>0)?b:a);
return 0;
}
Diễn đạt của mình hơn kém mong các bạn thông cảm.Thank you vì đã đọc bài viết của mình,nếu có sai chỗ nào nhờ các bạn fix lại giúp mình.
Biểu thức này là phiên bản ngắn gọn của lệnh if, thường được sử dụng trong một số trường hợp nếu ta dùng nó mà làm cho việc đọc code trở nên đơn giản hơn. Một cách hiểu khác có thể viết như sau
Hay lắm @14520054