Tôi đang cố gắng tạo macro bằng công thức sau: (a^2/(a+b))*b
và tôi muốn đảm bảo rằng sẽ không có chia cho 0.Có thể sử dụng câu lệnh if trong #define không?
#define SUM_A(x, y) if(x == 0 || y == 0) { 0 } else { (((x * x)/((x) + (y))) * (y))}
và sau đó tôi gọi là macro bên chính:
float a = 40, b = 10, result;
result = SUM_A(a, b);
printf("%f", result);
Tôi đã thử sử dụng dấu ngoặc xung quanh nếu chức năng nhưng tôi cứ bị lỗi cú pháp trước khi câu lệnh if. Tôi cũng đã cố gắng sử dụng trở lại, nhưng tôi đọc một nơi nào đó mà bạn không được sử dụng để xác định.
Phát biểu của dấu ngoặc đơn, không nên là '(x) * (x)', '(x) == 0' và' (y) == 0'? – SirGuy
thực sự. Cảm ơn bạn đã chỉ ra điều đó. – tomahh
Cảm ơn bạn rất nhiều, tôi chưa bao giờ nghe nói về nhà điều hành này trước đây. – Frey1337