Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
425 views
in Technique[技术] by (71.8m points)

c - How #define work? Strange result for CUBE(y) y*(y*y)

#include<stdio.h>
#include<conio.h>
#define CUBE(y)y*(y*y)
 main()
      {
        int j;
        j = CUBE(-2+4);
        printf("value of j = %d",j);
        getch();
      }

Output of this code is -26. I just want to know how this code give -26 as an output. How #define work in this code. I know that #define permanent fix value for a variable or method but don't how this work for CUBE here. Can somebody please describe this step by step, means in easy way.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

It does:

j = -2 + 4 * (-2 + 4 * -2 + 4)

A more correct definition of CUBE would be

#define CUBE(y) ((y)*(y)*(y))

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...