C程序输出的原因
我检查了这个程序的输出将是9。为什么? 因为一切都正常运转。因为2+7=9大于3+2=5 不过,通常在编写此类宏时,应小心将参数括在替换宏的表达式中的括号中,以避免有人使用优先级低于所用运算符的运算符传递表达式,从而弄乱表达式 所以,通常你会写:C程序输出的原因,c,C,我检查了这个程序的输出将是9。为什么? 因为一切都正常运转。因为2+7=9大于3+2=5 不过,通常在编写此类宏时,应小心将参数括在替换宏的表达式中的括号中,以避免有人使用优先级低于所用运算符的运算符传递表达式,从而弄乱表达式 所以,通常你会写: #include<stdio.h> #define MAX(a,b) (a>b?a:b); main() { int x; x=MAX(3+2,2+7) printf("%d",x); } …因为9比5大? 我猜你是在问它
#include<stdio.h>
#define MAX(a,b) (a>b?a:b);
main()
{
int x;
x=MAX(3+2,2+7)
printf("%d",x);
}
…因为9比5大? 我猜你是在问它是怎么工作的。可能要查找三元运算,以便
#define MAX(a,b) ((a)>(b)?(a):(b));
是一个宏,名称为MAX,它采用两个值a和b。它的工作原理是,如果a大于b,则返回a,否则返回b
在这种情况下,3+2=5=a和2+7=9=b。因此,宏可以归结为:
#define MAX(a,b) (a>b?a:b);
然后,当代码运行时,您可以想象宏调用被该代码替换:
if (5 > 9)
return 5
else
return 9
显然,我们将返回9,它存储为“x”,然后打印
这有用吗
void main()
{
int x;
if (5 > 9)
x = 5;
else
x = 9;
printf("%d", x);
}
在宏定义中,三元if-espression?:是这样工作的
状况?[条件为真时的值]:[条件不满足时的值]
条件是任何在C中有效的表达式,因此0为假,其他一切为真
如果满足条件,表达式将求值为?后面的第一个值,或者求值为:if条件未满足之后的第二个值到目前为止,您希望得到什么?感谢您迄今为止所做的工作?请为自己准备好学习C的参考资料书籍、网站、常见问题解答。您指定主要内容的方式表明您没有任何像样的东西。谢谢。我想知道它是如何工作的。这个宏定义是否替换了调用它的位置?是的,如果我理解你的要求。。。宏类似于函数,因为它允许您在过程之外定义一些功能,以便在其范围内的任何位置轻松调用它。我将更新我的示例以向您展示。
#define MAX(a,b) (a>b?a:b);