int qempty()
{
return (f == r ? 1 : 0);
}
Trong đoạn mã trên, " ? " Có nghĩa là gì? Chúng ta có thể thay thế nó bằng gì?
int qempty()
{
return (f == r ? 1 : 0);
}
Trong đoạn mã trên, " ? " Có nghĩa là gì? Chúng ta có thể thay thế nó bằng gì?
Câu trả lời:
Đây thường được gọi là toán tử điều kiện và khi được sử dụng như thế này:
condition ? result_if_true : result_if_false
... nếu condition
giá trị là thành true
, biểu thức sẽ đánh giá thành result_if_true
, nếu không, nó sẽ đánh giá thành result_if_false
.
Nó là đường cú pháp , và trong trường hợp này, nó có thể được thay thế bằng
int qempty()
{
if(f == r)
{
return 1;
}
else
{
return 0;
}
}
Lưu ý: Một số người gọi ?:
nó là " toán tử bậc ba ", bởi vì nó là toán tử bậc ba duy nhất (tức là toán tử nhận ba đối số) trong ngôn ngữ họ đang sử dụng.
Đây là một toán tử bậc ba, về cơ bản nó là một câu lệnh if nội tuyến
x ? y : z
hoạt động như thế nào
if(x) y else z
ngoại trừ, thay vì các câu lệnh bạn có các biểu thức; vì vậy bạn có thể sử dụng nó ở giữa một câu lệnh phức tạp hơn.
Nó hữu ích để viết mã ngắn gọn, nhưng có thể bị lạm dụng để tạo mã khó bảo trì.
a = x ? y : z;
mà bạn không thể nóiint a = if(x) y else z;
Bạn chỉ có thể viết lại nó thành:
int qempty(){ return(f==r);}
Điều nào làm tương tự như đã nói trong các câu trả lời khác.
Chỉ cần một ghi chú, nếu bạn thấy điều này:
a = x ? : y;
Đó là một tiện ích mở rộng GNU cho tiêu chuẩn (xem https://gcc.gnu.org/onlineocs/gcc/Conditionals.html#Conditionals ).
Nó giống như
a = x ? x : y;
x = 1+1 ? : 0
; trả về chính xác 2
, trong trình biên dịch của tôi và điều này không phàn nàn bất cứ điều gì.
Nó được gọi là toán tử điều kiện .
Bạn có thể thay thế nó bằng:
int qempty(){
if (f == r) return 1;
else return 0;
}
Dấu chấm hỏi là toán tử điều kiện. Mã có nghĩa là nếu f == r thì trả về 1, ngược lại, trả về 0. Mã có thể được viết lại thành
int qempty()
{
if(f==r)
return 1;
else
return 0;
}
đây có lẽ không phải là cách sạch sẽ nhất để làm điều đó, nhưng hy vọng sẽ giúp ích cho sự hiểu biết của bạn.