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

前端 未结 13 2120
别那么骄傲
别那么骄傲 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:41

    Preprocessors should be parenthesized properly. Replace it with

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

    and see.

提交回复
热议问题