首页 > 试题广场 >

下面程序输出结果为?

[单选题]
下面程序输出结果为?
#include<iostream.h>
#define SUB(X,Y) (X)*Y
int main(){
    int a=3,b=4;
    cout<<SUB(a++,++b);
    return 0;
}
  • 15
  • 16
  • 20
  • 12
不要总是相信别人的答案是正确的,vs2017 运行结果:15
发表于 2017-08-07 16:03:11 回复(0)
#define 宏定义命令
#define  宏名 宏体   
目的:为了简化代码,增加阅读性,定义宏实现替换工作;
发表于 2016-03-06 23:28:26 回复(0)
考点:自增运算符。区别前置与后置运算符区别
发表于 2015-10-23 14:47:51 回复(0)
SUB(a++,++b) =  (a++)*++b = (3++)*++4 = 3*5 = 15
发表于 2015-10-17 12:11:51 回复(3)
所以注意3++和++4,表达式中的3++得先结束表达式再自加,而++4是先自加再执行表达式。
发表于 2015-10-17 14:41:21 回复(1)
a++其实没用 宏定义展开后 a还是3 
但是++b是先b加1 然后展开 所以是3*5=15
发表于 2017-08-03 11:38:51 回复(0)
啊啊啊,这种明明理解区别,每次还写错。a++,先赋值,再加加。所以a=3,我知道,但是a++整体不是4吗?   ++b,先++,所以++b是5。
发表于 2023-05-29 17:07:34 回复(1)
这段代码我至少找出来三个错误,1: <iostream.h>; 2:std::cout; 3:SUB后的括号是中文括号
发表于 2021-04-12 16:30:26 回复(1)
a++先还回在自增
发表于 2019-08-17 15:24:17 回复(0)

容易记乱,a++和++a 的区别,前者后加一,后者先加一

发表于 2018-06-25 17:00:30 回复(0)
将宏定义在语句中展开则为cout<<(a++)*++b;所以,结果为15。在完成cout后,a才会变成4。
发表于 2018-03-02 10:07:24 回复(0)
a++先执行后自加
发表于 2017-09-24 07:51:33 回复(0)
a++在语句执行之后才会改变a的值,在这里还是使用的3;
另外需要注意的宏定义里面,题目中的Y没有括号,其实应该带上括号。
cout << SUB(a++, b+1);   若是这样,则会对结果造成影响。
发表于 2016-07-28 19:58:10 回复(0)
A
编辑于 2015-11-27 13:27:21 回复(0)
将define原样替换
发表于 2015-10-16 22:00:48 回复(0)