高手求解:#define ABC(x) x*x#include<stdio.h>main(){int a=3,b;b=ABC(a-2);printf("b=%d",b);}

如题所述

#define ABC(x) x*x#include<stdio.h> main(){int a=3,b; // 定义a,b,并初始化a=3b=ABC(a-2); // 计算ABC(a-2)的值并赋值给b,这里ABC(a-2)替换为3-2*3-2,结果为-5printf("b=%d",b); // 最后输出b的值为-5}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-27
相当于定义了一个函数ABC(x)=x*x,当x取表达式时,按照格式依次写出,b=a-2*a-2=3-2×3-2=-5,最后输出b的值-5。
第2个回答  2013-06-27
b=ABC(a-2)=>b=a-2*a-2=>b=3-2*3-2=-5

#define ABC(x) x*x #include"stdio.h" main (int a
答案是7 为什么不是16呢因为宏定义只是简单的替换,ABC(a+1)会被换成a+1*1+a

设C程序如下: #define ABC(x) x*x #inc
那是因为宏定义#define只是单纯的字符串替换,所以当你算的时候就把字符串替换回去就是了,b=ABC(a+1),把x用a+1来替换那就变成:b=a+1*a+1,所以结果就是b=7了

c语言中#define ABC(x) x*x问题
define ABC(x) x*x 在你使用ABC(x)的时候,计算机自动的,进行原样的替换 b=ABC(a+1); 就被替换为b=a+1^a+1 注意是原样替换,所以不是(a+1)^(a+1)所以答案是D

#include<stdio.h> void main() { char a[]="abc
程序是这样干活的:先用记录下0,暂时算a[j]=a[0]是最大值,然后让下标i从1循环到数组结束,每次a[j]跟a[i]比,如果发现a[i]大则将i值赋值给j,这样实现数组中最大的值的下标用j来记录的目的,最后用中间变量t将最大值a[j]与a[0]值互换。这个程序实现将指定数组中最大字符交换到数组...

#include<stdio.h> #define S(x) (x)*x*2 main(){int k=5,j=2;print...
"%d,",S[k+j]);“S[k+j]”应是“S(k+j)”正确答案是49,1(运行过)解析:S(K+J)就是将x的地方都替换为k+j,所以替换之后S(K+J)等同于(k+j)*k+j*k+j*2 = (5+2)*5+2*5+2*2=49 那么同理S(K-J)等同于(k-j)*k-j*k-j*2 = (5-2)*5-2*5-2*2=1 ...

#include <stdio.h> int main() { int max(in
不对,应该写成a>b&&a>c,以下错误都一样:-)

#include"stdafx.h" #define SQR(X)X*X int main(int argc, char *arg...
2

#include <stdio.h> #define F(X,Y) X*Y main() { int a=3, b=4...
define F(X,Y) X*Y define G(X,Y) (X)*(Y)int main() { int a = 3, b = 4;printf("%d\\n", F(a + b, a - b));\/\/ 宏展开式为:3 + 4*3 - 4,输出为: 11 printf("%d\\n", G(a + b, a - b));\/\/ 宏展开式为:(3 + 4)*(3 - 4),输出为: -7 retu...

#define f(x) x*x main() { int a=6,b=2,c; c=f(a)\/f(b); printf("%d...
完整程序是:include "stdio.h"define f(x) x*x int main(){ int a=6,b=2,c;c=f(a)\/f(b);printf("%d\\n",c);return 0;} \/\/c=f(a)\/f(b); 实际上在预编译时把f(x)直接用x*x替换了,c=a*a\/b*b,c=6*6\/2*2=36,是不会加括号的,要自己加括号#define f(x) ((...

#define S(x) x*x void main() { int a,k=3,m=1; a=S(k+m) printf...
define S(x) x*x 问题就出现在这句话上,就是误认为S(x)就是代表x*x的结果,其实不是就是代表中间有一个乘号, a=S(k+m)是用到s(x)了,就是k+m*k+m,运行是 3 + 1 * 3 + 1,x就是代表k+m 而不是k+m的值,所以你不懂的地方就是这里了 ...

相似回答