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:\n");
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.