#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的值,所以你不懂的地方就是这里了 ...