Code:
#define square(x) x*x
main()
{
int i;
i=64/square(4);
printf("%d",i);
}
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
|
Light Poster
|
|
| 12Aug2007,01:45 | #1 |
|
Code:
#define square(x) x*x
main()
{
int i;
i=64/square(4);
printf("%d",i);
}
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 Last edited by shabbir; 12Aug2007 at 06:26.. Reason: Code block - http://www.go4expert.com/forums/misc.php?do=bbcode#code |
|
Team Leader
|
![]() |
| 12Aug2007,06:06 | #2 |
|
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. |
|
Go4Expert Member
|
|
| 13Aug2007,15:52 | #3 |
|
hi priyabc,
you should try something like this Code:
#define square(x) x*x
main()
{
int i;
i=(64)/(square(4));
printf("%d",i);
}
|
|
Team Leader
|
![]() |
| 13Aug2007,16:13 | #4 |
|
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;
}
|
|
Go4Expert Member
|
|
| 13Aug2007,17:33 | #5 |
|
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. |
|
Team Leader
|
![]() |
| 13Aug2007,19:12 | #6 |
|
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.
|