a=x+5*y-3.1 原因是:C语言的预处理系统会在编译前把宏进行替换替换的规则是:p (x,y,z) x=y*z所以在识别到形如p (x,y,z)的式子时就会把参数代入自动替换为了防止意外,最好加上括号()。。。
define只是直接的字符(或者字符串)上的对应。所以你这里的p(a,x+5,y-3.1)通过直接的替换就是a=x+5*y-3.1
应该为a=x+5*y-3.1
a=x+5*y-3.1
好吧我还要继续修炼。