Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   Clear my doubt (http://www.go4expert.com/forums/clear-my-doubt-t5812/)

 priyabc 12Aug2007 01:45

Clear my doubt

Code:

```#define square(x) x*x main() {  int i;  i=64/square(4);  printf("%d",i); }```
the result obtained for this
64

how it is so??

i thought 64/square(4) will be 64/4*4 = 64/16 which will be 4... but the result is not so why.. what happens

 DaWei 12Aug2007 06:06

Re: Clear my doubt

64/4*4

64/4 = 16

16*4 = 64

If you're going to use macros, you better learn that you need to parenthesize the hell out of them. You would be much wiser to write the function.

 kaustubh 13Aug2007 15:52

Re: Clear my doubt

hi priyabc,
you should try something like this

Code:

```#define square(x) x*x main() {  int i;  i=(64)/(square(4));  printf("%d",i); }```
this mean (64) / (4 * 4) = (64)/(16) = 4

 DaWei 13Aug2007 16:13

Re: Clear my doubt

You guys don't listen well. If you must use a macro, do it right. Also, kaustub, the C standard defines main as returning an int. Please don't teach bad habits.
Code:

```#include <stdio.h> #define square(x) (x*x) int main () {     int i = 64 / square(4);     printf ("%d", i);     return 0; }```

 kaustubh 13Aug2007 17:33

Re: Clear my doubt

hi dawei,
she must be beginner. Most books of beginners written about 5 to 10 years ago didn't contain standard c or c++ . I will try to use known c /c++ standards in posts in future.

 DaWei 13Aug2007 19:12

Re: Clear my doubt

The C standards were issued in 1989/90 and 1999. There are lots of compilers that don't completely conform and lots of books and tutorials (including by MS) that teach faulty C.

 All times are GMT +5.5. The time now is 09:17.