楼主: ttongttengtt
2226 2

Advance 63题求助!! [推广有奖]

  • 0关注
  • 0粉丝

大专生

13%

还不是VIP/贵宾

-

威望
0
论坛币
1994 个
通用积分
0.9000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
383 点
帖子
12
精华
0
在线时间
78 小时
注册时间
2012-4-29
最后登录
2023-10-21

10论坛币
问题1:
%put &value;
%let Mv=shoes;
%macro PRODUCT(Mv=bicycles);
%let Mv=clothes;
%put &Mv;
%mend;
%PRODUCT(Mv=tents)
%put Mv is &Mv;

这题输出的是shoes,说是因为macro里面的let建立的是局部宏变量,只在这个宏内有效。但为什么下面的code去掉了两个括号就输出的是clothes呢?这两个括号难道不是初始值和定义的值么?和局部/全局变量有关系?

%let Mv=shoes;
%macro PRODUCT;
%let Mv=clothes;
%put &Mv;
%mend;
%PRODUCT
%put Mv is &Mv;

问题2:
%macro CHECK(Num=4);
%let Result=%eval(&Num gt 5);
%put Result is &result;
%mend;
%check(Num=10)
这个code输出的是1,因为10大于5。但为什么变成5.1 后就输出的是0呢?而如果num=11,gt10.1,又输出的是1呢?这个code是怎么进行比大小的?



谢谢!!奋战advance中!

关键词:ADVANCE VANCE advan ance NCE clothes result shoes
沙发
mingfeng07 学生认证  发表于 2015-2-7 19:13:10 |只看作者 |坛友微信交流群
问题1:两段程序都在宏外Mv已经定义了全局变量,区别在于第二个宏里面的赋值得到的Mv依然是全局变量,只是改变了值,第一个宏由于多了个宏参数Mv,宏参数Mv为局部变量,所以宏里的Mv就变成了局部变量,在宏结束之后,第一个宏里面的局部变量Mv消失,只剩下了全局变量Mv,第二个宏里赋值的Mv由于是全局变量,没有消失。
问题2:%eval函数定义为在进行逻辑计算之前要求里面所有的变量值都是整数,所以在计算之前已经将所有的变量值转化为了整数。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
condor_gz + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

藤椅
jeremyyang 发表于 2017-9-19 00:02:27 |只看作者 |坛友微信交流群
同问,这是为什么呢?

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 13:09