C语言中 #define MAX(x,y) (x)>(y)? (x):(y) 是什么意思啊

作者&投稿:针耿 (若有异议请与网页底部的电邮联系)
#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 ;~

宏不做类型判断,编译的时候就是简单的替换,所以在判断宏的时候,如果看不明白,你就在纸上写一下,把要替换的语句直接替换了,一看就明白了。
这句替换完就是
t=(a+b)>(c+d)?(a+b):(c+d)*10,
*优先级高于:所以就等价于:
7>6?7:60
所以结果就是7

首先要清楚 #define 宏定义并不会有任何的计算发生,只是单纯的将替换文本其看成字符串。
如下
#include #define A 3+3int main(){ printf("%d",A*A); return 0;}结果是15 原因是宏定义并非计算A为3+3的值,而是仅仅将‘3' ,'+' ,'3'字符串赋给A
输出的结果即为3+3*3+3=15
2.本题中
#define MAX(x,y) (x)>=(y)?(x):(y)将替换文本 (x)>=(y)?(x):(y) 赋给 MAX(x,y)
printf("%d",10*MAX(i,j));输出即为 10*x >= y? x: y 10*x = 100 大于 15 输出 x ,即为 i 等于 10

三目运算,这条语句实现了两数比较大小 返回较大数的功能
具体就是:如果条件x>y成立,就输出x,否则就输出y。由于是宏定义,x和y都需要用括号包围。

这是一个带参数的宏,意思是取两数中的大者,如果x>y,就取x,否则取y

在凡是MAX(a,b)的地方都替换成(a)>(b)?(a):(b)
后面是一个表达式,算最大值的.

比较x,y的大小,如果想x>y,就输出x,如果x<y就输出y

一个三目运算的宏替换

比较大小 返回最大的


涟源市15214136352: #define max - cn 4是什么意思
芮咸维康: 在 C 语言中,define 表示宏定义语句,前面以 # 号开始.例如你所写的: #define max_cn 4 表示的确切含义就是:在 C 语言程序中定义了一个宏,其名称为:max_cn,其值为 4(常量). 但是在这里要注意一点就是:为了避免将宏定义中定义的名称和程序中定义的各种类型的变量相混淆,以增加整个程序的可读性,故宏定义一般采取大写比较醒目.例如: #define MAX_CN 4 这样以后在程序中一见到 MAX_CN,就知道它是一个宏定义,而不是一个通常的变量了. 以上也是我多年的编程经验和风格,供你参考.

涟源市15214136352: C语言中 #define MAX(x,y) (x)>(y)? (x):(y) 是什么意思啊 -
芮咸维康: 三目运算,这条语句实现了两数比较大小 返回较大数的功能 具体就是:如果条件x>y成立,就输出x,否则就输出y.由于是宏定义,x和y都需要用括号包围.

涟源市15214136352: C语言中这句是什么意思?#define MAX(a, b) ((a)>(b)?(a):(b)) -
芮咸维康:[答案] 取ab中最大值 若a>b 执行问号后的 否者执行冒号后的

涟源市15214136352: C语言中的#define有什么意义?好像可以用int,float,什么的代替啊! -
芮咸维康: 比如说你想定义一个数组,int num[MAX], 在c语言中,要求max必须是常数,那怎么办呢,你又不想写成int num[10], 所以你就写#define MAX 10

涟源市15214136352: #define max 1000 -
芮咸维康: 定义一个宏max 宏的内容是1000 代码中出现max的地方都会用1000替代 譬如有个语句是int x=max*2; 那么在编译的时候会等价于int x=1000*2; 或者int x[max];就是等价于int x[1000];

涟源市15214136352: 请问C语言中#define是什么意思?谁有相关说明?
芮咸维康: 宏定义,一般用于定义常量 #define MAX 1024 #include &lt;stdio.h&gt; void main() { printf("%d", MAX*4 );// 这里打印 MAX*4 的值 = 1024*4 } 主要作用是,如果你程序中多次用到这个常量值,只要替换你上面的常量定义就能替换很多

涟源市15214136352: c语言宏定义中出现的##是什么意思 如define MAX(A,B) A##B -
芮咸维康: 预处理运算符# #为宏扩展提供了一种连接实际变元的手段.如果替换文本中的参数用 # #相 连,那么参数就被实际变元替换, # #与前后的空白符被删除,并对替换后的结果重新扫描.例 如,下面定义的宏p a s t e用于连接两个变元: #define paste( front, back ) front ## back 从而宏调用paste(name, 1)的结果是建立单词n a m e 1.

涟源市15214136352: #define MAX - SIZE 25在c语言中啥意思 -
芮咸维康: 宏定义.使用 MAX_SIZE代替25.在程序代码中,看到 MAX_SIZE,就表示是25

涟源市15214136352: C语言define可以作为用户自定义符号吗.. -
芮咸维康: 不太清楚你的自定义符号是自定义类型吗?希望下面的对你有用. #define指令 该指令有三种用法: 第一种是定义标识,标识有效范围为整个程序,形如#define XXX,常与#if配合使用; 第二种是定义常数,如#define max 100,则max代表100...

涟源市15214136352: c语言 define 怎么用的 -
芮咸维康: 宏定义 define 可定义常量如define pi 3.14;也可以宏定义函数如 #define MAX(x, y) ((x)>(y)?(x):y()这样比函数定义要好 可以减少堆栈的使用,并且这样定义可以比较多种数据类型,float int,相当于c++里面的模版了..而若是函数就只能比较一种.其实define一般不用来定义常量 以后你学C++就知道定义常量一般用const

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网