#include <stdio.h> #define MAX(x,y) (x)>(y)?(x):(y) void main( ) { int a=4, b=3, c=2, d=1, e; e

#include <stdio.h>
#define MAX(x,y) (x)>(y)?(x):(y)
void main( )
{ int a=4, b=3, c=2, d=1, e;
e = MAX(a+b, c+d) * 10;
printf("%d\n", e);
}
为什么答案是7,不是70?

这怎么会是70,分明是7啊!宏扩展是字符串替换而不是从左至右的计算。把具体字符串代进去就一目了然了:e=MAX(a+b,c+d)*10-->e=(a+b)>(c+d) ? (a+b) : (c+d)*10-->e=7>3 ? 7 : 3*10-->e=7。想成70或30,就得写成e=(MAX(a+b,c+d))*10;。
温馨提示:内容为网友见解,仅供参考
无其他回答

...<stdio.h> # define MAX(x,y) (x)>(y)?(x):(y) main() { int a...
应该改为:# define MAX(x,y) ((x)>(y)?(x):(y))

#include <stdio.h> #define MAX(x,y) (x)>(y)?(x):(y) void main...
这怎么会是70,分明是7啊!宏扩展是字符串替换而不是从左至右的计算。把具体字符串代进去就一目了然了:e=MAX(a+b,c+d)*10-->e=(a+b)>(c+d) ? (a+b) : (c+d)*10-->e=7>3 ? 7 : 3*10-->e=7。想成70或30,就得写成e=(MAX(a+b,c+d))*10;。

#define MAX(x,y) (x)>(y)?(x):(y) main(){int a=5,b=2,c=3,d=3,t...
t=(a+b)>(c+d)?(a+b):(c+d)*10,优先级高于:所以就等价于:7>6?7:60 所以结果就是7

假设有一带参数的宏:#define MAX(x,y) x>y?x:y利用宏MAX(x,y)计算并...
include<stdio.h> define MAX(x,y) ((x)>(y)?(x):(y))int main(void){ int x,y;scanf("%d%d",&x,&y);printf("大的数是%d\\n",MAX(x,y));return 0;}

#ifdef或#ifndef的使用
ifndef HEADFILENAME define HEADFILENAME \/\/以下为头文件内容 ...endif \/\/头文件末

c语言:输入10个数,输出最大的、最好用流程图
include <stdio.h> define N 10 define MAX(x,y) ((x)>(y)?(x):(y)) \/\/返回2个数中较大者 int main(void){ int num, i=1, max;printf("enter numbers:\\n");scanf("%d", &num); \/\/输入第一个数 max = num; \/\/把第一个数赋值给max for(i = 1; i < N; ...

C语言中如何编写这个程序:输出四个整数中第二大的数?
include<stdio.h> define max(x,y) x>y?x:y\/\/比较大小函数 int main(){ int a[5];int max1=0;int max2=0;for(int i=0;i<4;i++){ scanf("%d",&a[i]);max1=max(max1,a[i]); \/\/记录最大值 } for(int i=0;i<4;i++){ if(a[i]!=max1)\/\/记录除最大值以外的...

100分 c语言对比两个文件
最长公共子序列方法比较两个文件的相似性。输入两个文件的名字,输出一个文件,不同的地方用红色标出。include <stdio.h> include <string.h> include <stdlib.h> define max(x,y) (((x)>(y))?(x):(y))int LCS(char *str1, char *same1, int len1, char *str2, char *same2, ...

C语言 3个数比大小
scanf("%d",&a);if(a>max)max=a;} printf("max=%d",max);} 利用宏定义,求三个数中的最大值 include <stdio.h> define MAX(x,y) ((x)>(y)?(x):(y))void main(){ int a, b, c;printf("input 3 numbers:");scanf("%d%d%d",&a,&b,&c);printf("MAX is %d.\\n", ...

#include<stdio.h>
include<stdio.h> int f(int c,int d) \/\/函数写外面 { int c=c>d?c:d;return c;} void main() \/\/这个是主函数,不能在主函数中定义别的函数 { int a,b;scanf("%d%d",&a,&b);int c=f(a,b);}

相似回答