#define max(a,b) (a>b?a:b) int main() { int i=6,j=5; printf("%d,",max(i+=1,++j));值i是怎么传递的;i++和i+=1区别在哪

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/02 09:51:23
#define max(a,b) (a>b?a:b) int main() { int i=6,j=5; printf(

#define max(a,b) (a>b?a:b) int main() { int i=6,j=5; printf("%d,",max(i+=1,++j));值i是怎么传递的;i++和i+=1区别在哪
#define max(a,b) (a>b?a:b) int main() { int i=6,j=5; printf("%d,",max(i+=1,++j));
值i是怎么传递的;
i++和i+=1区别在哪

#define max(a,b) (a>b?a:b) int main() { int i=6,j=5; printf("%d,",max(i+=1,++j));值i是怎么传递的;i++和i+=1区别在哪
max=(a>b)?a:b;
等效于
if(a>b) {max=a;}
else {max=b;}
i=6,j=5
max(i+=1,++j) : i+=c 等价于 i=i+c || ++j : 加减号放前是先运算后引用,放后面就是先引用后运算
max(i+=1,++j)等价于{max(i+1,j); j++;}
max(6+1,5)->a==7 b==5 则max=7
最后输出7
下边是抄的zhangyuestars的
在讲课时老师会说“i++是i=i+1的简略形式”.不过很遗憾的告诉你,不是任何时候都可以互换.
当一条语句只有“i=i+1”时,此时是可以互换的.
但是当需要用到语句的返回值时,就要小心了.i++返回值为i,然后将i+1;i=i+1返回的是i+1(赋值语句之后的i值):如
if(i++) a=0;
这条语句是说“如果i不等于0,a赋值为0,并且i进行加一操作”,此时等价于:
if(i!=0){i++;a=0;}(注意,i++操作是在判断过if条件后做的,不是条件成立后才做,这里的写法结果没错,但严格来说不等价,是错误的,只显示操作的先后关系)
if(i=i+1) a=0;
这是说“首先将i加1,然后看i是否为0,如果不为0,a赋值为0.此时等价于:
i=i+1;
if(i) a=0;
有人会给你举i++和++i同时出现在一条语句中的例子.个人认为,那种例子没有必要看,也没有必要弄懂.因为那种例子“没有”正确答案(编译器不同,答案不一样),只要记得不要那么使用就对了.
作为初学者,应该要知道i++的真正含义,不要单纯记如“它和i=i+1一样”这种结论.你能提这种问题,就比这里其它要求写作业的人好多了~~(那种问题我是不回答的:P)

#define max(a,b) a>b?a:b中的?和: #define A B C语言宏定义#define max(a,b) a>b?a:b 有什么隐患?据说要这样写:#define max(a,b) ((a)>(b)?(a):(b)),如果不加括号有什么不一样吗? #define MAX(a,b) (a>b)?a:b 中的(a>b)?a:b(a>b)?a:b 问号的意思?a: #define LT(a,b) ((a) #includestdio.h #define MAX(A,B) (A)>(B)?(A):(B) #define PRINT(Y) printf(Y=%d ,Y) main() { int#includestdio.h#define MAX(A,B) (A)>(B)?(A):(B)#define PRINT(Y) printf(Y=%d ,Y)main(){int a=1,b=2,c=3,d=4,t;t=10*MAX(a+b,c+d);PRINT(t);} #define MAX 10 int a[MAX],i; int main( ) sub1( ) { for(i=0;i #define MAX(A,B) A>B 2*A :2*B#define MAX(A,B) A>B 2*A :2*Bvoid main(){ int a=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);printf(%d ,t);} Define Max(a,b)a>b?a:b a=5Define Max(a,b)a>b?a:b,void main(){int a=5,b=6,c=4,d;printf(%d,d);}我算出来输出结果是10,5 为什么? max= (a>b)?a: max=a>b?a: #define max(a,b) (a>b?a:b) int main() { int i=6,j=5; printf(%d,,max(i+=1,++j));值i是怎么传递的;i++和i+=1区别在哪 #define MAX(x,y) (x)>(y)?(x):(y) main() {int a=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10 ;printf(%d ,t);} #define c语言预处理命令2以下程序的运行结果是 .#define MAX(A,B) (A)>(B)?(A):(B)#define PRINT(Y) printf(“Y=%d ”,Y)main(){int a=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);}A)Y=3 B)存在语法错误 C)Y=7 D)Y=0请给我解释 # include # define MAX(x,y) (x)>(y)?(x):(y) main() { int a=5,b=2,c=3,d=3,t; 求表达式B/B的值?#define A 3+2 #define B A*A max|(a,b)|什么意思 设有宏定义#define MAX(x,y) (x)>(y)?(x):(y),则F=4*MAX(2,3)的值为( ).A、3 B、2 C、12 D、8答案为什么是B而不是C啊,不懂.