2010-08-25 78 views
13

Tại sao chúng ta không thể sử dụng từ khóa trả về bên trong các toán tử bậc ba trong C, như sau: tổng> 0? return 1: return 0;Các toán tử Ternary và Return in C

+17

Có gì sai với 'return sum> 0? 1: 0; '? –

+2

Hoặc, đối với vấn đề đó, 'if (sum> 0) trả lại 1; else return 0; ' –

+1

Cảm ơn tất cả các câu trả lời. Không có gì sai với return sum> 0? 1: 0; Tôi chỉ muốn biết tại sao chúng ta không thể sử dụng nó theo cách được đề cập ở trên trong câu hỏi. – nullpointerexception

Trả lời

26

return là một tuyên bố. Các câu lệnh không thể được sử dụng bên trong các biểu thức theo cách đó.

25

Vì thao tác bậc ba là biểu thức và bạn không thể sử dụng câu lệnh trong biểu thức.

Bạn có thể dễ dàng sử dụng toán tử bậc ba trong phần trả về.

return sum > 0 ? 1 : 0; 

Hoặc như DrDipShit chỉ ra:

return sum > 0; 
+8

chỉ: số tiền hoàn trả> 0; mà làm việc ra như trở về 1 hoặc 0 anyway. –

+0

@DrDipShit: rất đúng, trong trường hợp này cũng hoạt động tốt :) – Wolph

9

return là một tuyên bố, không phải là một biểu hiện. Bạn cũng không thể làm int a = return 1;.

2

Xem cú pháp của một nhà điều hành ternary là

expr1 ? expr2: expr3; 

nơi expr1, expr2, expr3 là những biểu hiện;

Nhà điều hành ?: hoạt động như sau expr1 được đánh giá đầu tiên nếu nó là đúng expr2 được đánh giá khác expr3 được đánh giá.

do đó trong biểu thức, câu trả lời trả về không thể được sử dụng bằng ngôn ngữ C.

+1

-1, không thực sự trả lời câu hỏi. SO cũng không được thiết kế để hướng lưu lượng truy cập đến trang web của bạn – Hasturkun

0

Chỉ cần nhìn vào cú pháp bạn nên biết rằng một câu lệnh không thể được sử dụng trong một biểu thức. Điều bạn muốn có thể đạt được bằng cách thực hiện: return sum > 0 ? 1 : 0;

Các vấn đề liên quan