Tôi đang sử dụng SDK cho một dự án nhúng. Trong mã nguồn này, tôi tìm thấy một số mã mà ít nhất tôi thấy đặc biệt. Ở nhiều nơi trong SDK có mã nguồn ở định dạng này:
#define ATCI_IS_LOWER( alpha_char ) ( ( (alpha_char >= ATCI_char_a) && (alpha_char <= ATCI_char_z) ) ? 1 : 0 )
#define ATCI_IS_UPPER( alpha_char ) ( ( (alpha_char >= ATCI_CHAR_A) && (alpha_char <= ATCI_CHAR_Z) ) ? 1 : 0 )
Việc sử dụng toán tử bậc ba ở đây có tạo ra sự khác biệt nào không?
Không
#define FOO (1 > 0)
giống như
#define BAR ( (1 > 0) ? 1 : 0)
?
Tôi đã thử đánh giá nó bằng cách sử dụng
printf("%d", FOO == BAR);
và nhận được kết quả 1, vì vậy có vẻ như chúng bằng nhau. Có lý do gì để viết mã như họ đã làm không?