Using macro results in incorrect output when used as part of a larger math expression - why does this happen?

前端 未结 13 1980
别那么骄傲
别那么骄傲 2020-12-11 17:50

This is a normal C routine program which i found out in some question bank. It is shown below:

#define CUBE(p) p*p*p

main()
{
    int k;
    k = 27 / CUBE(3         


        
13条回答
  •  有刺的猬
    2020-12-11 18:33

    Your macro is not protected. Try

    #define CUBE(p) ((p)*(p)*(p))
    

    The current macro was expanded to

    k=27/3*3*3
    

    which is ((27/3)*3)*3

提交回复
热议问题