[Wiki] Mẹo sử dụng dẫn hướng #define

#define AREA_CIRCLE (frad) (4*PI*frad*frad) //tinh dien tich hinh cau
#define SUM(x,y) ((x)+(y))                  //cong 2 so
#define SQR(x) ((x)*(x))                      //tinh x binh phuong
#define MAX(x,y) ((x)>(y)?(x):(y))           //tim so lon nhat giua x va y
#define ERROR (s) printf("%s.\n", s)        //in thong bao voi chuoi s
2 Likes

Mình nghĩ nên thêm ( ) vào tên biến trong #define

int a=SQR(1+3); /*<-> (1+3*1+3) */

/*------------------------------------*/
#define SQR(x) ((x)*(x))  
/*---------------------------------------------------------
| code tren tro thanh
+---------------------------------------------------------*/
int a=SQR(1+3) /* <-> ((1+3)*(1+3)) */

#define SQR(x) ((x)*(x))
#define SUM(x,y) ((x)+(y))
#define AREA_CIRCLE(r) (M_PI*(r)*(r))
#define MAX(x,y) ((x)>(y)?(x):(y))
#define ERROR(s) fprintf(stderr,"%s\n",s)
3 Likes

True :smile:

:+1:

Vì nếu không thêm ngoặc vào sẽ bị lỗi

Ví dụ:

#define SQR (x) (x*x)                       //tinh x binh phuong

Mà ta thử code như sau

SQR(2+3)

thì sẽ thành

2+3*2+3 = 11

chứ không phải

(2+3)*(2+3) = 25

Đã sửa lại theo ý của @Gio

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