Hỏi về ý nghĩa câu lệnh của 1 bài toán c++

Em không hiểu câu lệnh này chạy như thế nào . Ai giải thích cho em với ạ.

int func(int a)
{
   return ((a>0)-(a<0))*a;
}

Em nhập -3 vào thì nó ra 3 , 6 thì ra 6 nên em đoán đây là hàm tính trị tuyệt đối nhưng em không hiểu cái đoạn so sánh a>0 và a<0 sau return . Em cứ tưởng là phép so sánh chỉ dùng trong if else , for , while để so sánh điều kiện rồi thực hiện câu lệnh phía sau , mà chỗ này nó gắn phép so sánh trong 1 phép tính nên không biết nó ra cái gì . Ai giải thích giùm em với ạ .

Ở c và c++, kết quả so sánh là true thì sẽ trả về 1 , false là 0.

3 Likes

Như Le_Trong1 đã nói, nó là một biểu thức so sánh và kết quả sẽ luôn ở dạng TRUE (1) và FALSE (0). Để mình cho bạn một ví dụ nhỏ để bạn hiểu nhé :smiley:
a = -3
(a>0) => (-3>0) = FALSE -> 0
(a<0) => (-3<0) = TRUE -> 1
Vậy ta thấy rằng ((a>0)-(a<0))*a = (0-1)*(-3) = (-1)*(-3) = 3

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?