C语言问题:

对下列程序编译运行,其输出的结果为( ).
#define ADD(x,y)x+y
int main()
{
int x(2),y(2),s;
s=ADD(x+1,y+2)+1;
printf("s=%d",s);
return 0;
}

A.s=8 B.s=7 C.s=4 D.翻译错误

答案:B

我感觉是D啊,为什么是B啊???
这程序什么意思?帮忙解释一下,高手们~~~

第1个回答  2012-02-23
首先答案是A。
分析
#define ADD(x,y) x+y //注意这个宏,没有加()
int main()
{
int x(2),y(2),s; //x(2), y(2),相当于 x = 2, y = 2.
s=ADD(x+1,y+2)+1; //因为宏是直接展开的,这里展开的结果是 x+1+y+2+1 = 2+1+2+2+1=8
printf("s=%d",s);//所以S = 8;
return 0;
}
这题考的是宏展开的问题,
记住,写宏的时候,一定要注意加上()。
变量,表达式,整个宏,3个地方都要加。防止调用出错。
第2个回答  2012-02-23
#define ADD(x,y)x+y//宏替换是先直接替换再计算的
int main()
{
int x(2),y(2),s;
s=ADD(x+1,y+2)+1;//ADD(x+1,y+2)= x+1+y+2+1=2+1+2+2+1=8
printf("s=%d",s);
return 0;
}
有没有编译错误用编译器运行一下就知道了,你觉得哪里错误呢?
可是我的答案算出来是8啊,我觉得是选择A的追问

看一下图片,就是运行之后的错误

追答

我这里运行正确,答案是8

本回答被提问者采纳
第3个回答  2012-02-23
s=ADD(x+1, y+2)+1 替换后结果为s = x+1+y+2+1; s应该为8 选A
第4个回答  2012-02-23
s=8 s=ADD(x+1,y+2)+1; 被翻译成 s=(x+1)+(y+2)+1 还有这事C++的赋值不是C
第5个回答  2012-02-23
自己运行看看结果再说。
VC6.0运行结果是s=8

c语言常见问题有哪些
1、书写标识符时,忽略了大小写字母的区别。2、忽略了变量的类型,进行了不合法的运算。3、将字符常量与字符串常量混淆。4、忽略了等号与双等号的区别。5、忘记加分号。6、输入变量时忘记加地址运算符。7、输入数据的方式与要求不符。8、输入字符的格式与要求不一致。9、输入输出的数据类型与所用格式...

C语言的问题!
4,下一步是使用浮点参数以符合浮点格式规范,或在程序中的其他位置执行浮点分配。请注意,此操作将导致加载浮点支持。5,最后一步是,当程序以混合语言编写的程序链接时,在FORTRAN库之前指定C库。重新解决了秋天的飞行问题。

c语言常见问题有哪些?
1.书写标识符时,忽略了大小写字母的区别。main(){ int a=5;printf("%d",A);} 编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。2.忽略了变量的类型,进行了不合法的运算。main(...

计算机程序c语言面试常见问题
1、C语言程序的基本单位是___A.语句 B.函数 C.程序行 D.字符 答案:B 2、C语言程序由()组成 A.子程序 B.过程 C.函数 D.主程序段程序 答案:C 3、算法的表示方法有___A.自然语言,传统流程图,N-S流程图,伪代码,计算机语言 B.高级语言,汇编语言,机器语言 C.C语言,QBASIC语言,I...

c语言能解决哪些问题
C语言能解决的问题 一、系统开发问题 C语言首先是一种通用编程语言,它可以用于开发各种类型的系统软件和应用程序。例如,操作系统、编译器、驱动等核心组件大多使用C语言开发,因其具有直接访问内存、进行复杂运算和进行底层设备操作的能力。此外,C语言还常被用于开发嵌入式系统,如智能家居控制、工业控制等...

C语言问题编程问题?
int main(){ int i,j,n=-1;float scores[30],sum=0,temp;printf("请输入n的值(0~30):");while(n<0 || n>30) scanf("%d",&n);if(!n) return 0;for(i=0;i<n;scanf("%f",&scores[i]),sum+=scores[i],i++)printf("请输入学生%d分数:",i+1);printf("%d名学生的...

C语言问题?
答案是B。1,因为,*p++先执行*p,就是取出a[0]的值而已,就是10,没有实际用。可以写成p++;2,再执行p++ ,这是p指向a[1]的地址。3,*p +=1, 就是指a[1]的值加1,即11+1=12。

求c语言一些常见问题,
在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写 if (a=3) then …但C语言中,“=”是赋值运算符,“==”是关系运算符。如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。5....

c语言面试经常问到的问题有哪些?
c语言面试经常问到的问题有:1、C语言的主要特征是什么?C是一种过程语言。C语言的主要功能包括对内存的低级访问,简单的关键字集和简洁的样式。这些功能使其适用于诸如操作系统或编译器开发之类的系统编程。2、i ++和++i有什么区别?1)表达式“i ++”返回旧值,然后递增i。表达式++i递增该值...

C语言弱智问题! 请帮忙解答!1个小时之类!
1、a+b=c a,b,c是3个变量,做赋值操作 ;c=a+b \/\/只要abc都有定义并且ab都赋值了就可以 2、int x=31.123 \/\/double不能直接赋值给int 可以int x = (int)31.123或将小数点去掉 3、z=x÷y x、y、z均为float型 z=x\/y \/\/float\/float结果是double 所以z应定义为double 4、x=E-...

相似回答
大家正在搜