定义一个有参宏MUABS(x),求参数兄弟绝对值。小弟我写的这个程序对不。该怎么改才好
定义一个有参宏MUABS(x),求参数兄弟绝对值。我写的这个程序对不。该如何改才好?
#define MYABS(x) (x=-x)
#include "stdio.h"
#include "conio.h"
void main()
{int x;
printf("input a numbers x=");
scanf("%d",&x);
if(x<0)
MYABS(x);
printf("x=%d\n",x);
getch();
}
------解决方案--------------------
对的啊
------解决方案--------------------
MYABS(x) ((x)=(x)>0?(x):(-(x)))
------解决方案--------------------
#define MYABS(x) (x)=(-(x)) 宏里面的变量操作需要增加括号,以防止被修改或误操作
------解决方案--------------------
#define MYABS(x) (x=-x)
#include "stdio.h"
#include "conio.h"
void main()
{int x;
printf("input a numbers x=");
scanf("%d",&x);
if(x<0)
MYABS(x);
printf("x=%d\n",x);
getch();
}
------解决方案--------------------
对的啊
------解决方案--------------------
MYABS(x) ((x)=(x)>0?(x):(-(x)))
------解决方案--------------------
#define MYABS(x) (x)=(-(x)) 宏里面的变量操作需要增加括号,以防止被修改或误操作
------解决方案--------------------
- C/C++ code
#include <stdio.h> #include <conio.h> #define MYABS(x) ((x)>=0?(x):(-(x))) void main() { int x; printf("input a numbers x="); fflush(stdout); if (1==scanf("%d",&x)) { printf("MYABS(%d)==%d\n",x,MYABS(x)); } getch(); }