请选择 进入手机版 | 继续访问电脑版
楼主: 小鳄鱼a
1869 16

请高手指点下这段代码哪里错了 [推广有奖]

  • 6关注
  • 10粉丝

学科带头人

3%

还不是VIP/贵宾

-

威望
0
论坛币
125 个
通用积分
0.0040
学术水平
40 点
热心指数
45 点
信用等级
43 点
经验
32801 点
帖子
1185
精华
0
在线时间
1539 小时
注册时间
2009-7-16
最后登录
2018-10-5

小鳄鱼a 发表于 2014-12-10 17:03:35 |显示全部楼层 |坛友微信交流群
30论坛币

知道会形成一个死循环,不过语法不对


%macro a;

%local x y;


%xxx;


%macro b;

%let x=1 ;

%mend;




%macro c;

%let y=2 ;

%mend;


%b
%c

%put &x &y;

%if   &x=1 and  &y=2 %then  %goto xxx;




%mend;

%a

最佳答案

sniperhgy 查看完整内容

我不是高手,但是觉得那个label要写成 %xxx:; 一旦改成这样,就真的死循环了。
关键词:高手指点 Macro Local Then MEN local
sniperhgy 发表于 2014-12-10 17:03:36 |显示全部楼层 |坛友微信交流群
我不是高手,但是觉得那个label要写成
  %xxx:;

一旦改成这样,就真的死循环了。

使用道具

小鳄鱼a 发表于 2014-12-10 19:23:58 |显示全部楼层 |坛友微信交流群
sniperhgy 发表于 2014-12-10 17:22
我不是高手,但是觉得那个label要写成
  %xxx:;
我只是想知道通过这种方式能否循环下去,这个循环稍微改改就不是死循环了

使用道具

yuerqieqie 发表于 2014-12-10 21:42:51 |显示全部楼层 |坛友微信交流群
小鳄鱼a 发表于 2014-12-10 19:23
我只是想知道通过这种方式能否循环下去,这个循环稍微改改就不是死循环了
照sniperhgy 说的改了,就会死循环下去啊
已有 1 人评分论坛币 热心指数 收起 理由
小鳄鱼a + 5 + 2 精彩帖子

总评分: 论坛币 + 5  热心指数 + 2   查看全部评分

使用道具

小鳄鱼a 发表于 2014-12-10 22:49:10 |显示全部楼层 |坛友微信交流群
sniperhgy 发表于 2014-12-10 17:03
我不是高手,但是觉得那个label要写成
  %xxx:;
帮忙再看看这个好吧    按照我的理解应该输出5次  1  2   怎么只输出1次呢




%macro a;

%local x y i;




%let x=1 ;
%let y=2 ;
%let i=1 ;

%xxx: ;

%let i=%eval(&i+1);

%put &x &y;

%if   &x=1 and  &y=2  and &i=5 %then  %goto xxx;






%mend;

%a

使用道具

jl60152 发表于 2014-12-10 23:10:24 |显示全部楼层 |坛友微信交流群
小鳄鱼a 发表于 2014-12-10 22:49
帮忙再看看这个好吧    按照我的理解应该输出5次  1  2   怎么只输出1次呢
%if   &x=1 and  &y=2  and  &i le 5 and &i gt 1 %then  %goto xxx;
已有 2 人评分论坛币 热心指数 收起 理由
admin_kefu + 30 根据规定进行奖励
小鳄鱼a + 5 + 2 精彩帖子

总评分: 论坛币 + 35  热心指数 + 2   查看全部评分

使用道具

sniperhgy 发表于 2014-12-11 10:23:35 |显示全部楼层 |坛友微信交流群
小鳄鱼a 发表于 2014-12-10 22:49
帮忙再看看这个好吧    按照我的理解应该输出5次  1  2   怎么只输出1次呢
今早刚看到新的问题,不好意思。

楼主用i作为Looper,每次自增一,所以第一次到达%if那里&x. = 1, &y. = 2 并且 &i. = 1,因此不满足%if的条件,所以不会进行%goto xxx的操作,因此看到只有一次。

使用道具

小鳄鱼a 发表于 2014-12-11 11:23:52 |显示全部楼层 |坛友微信交流群
sniperhgy 发表于 2014-12-11 10:23
今早刚看到新的问题,不好意思。

楼主用i作为Looper,每次自增一,所以第一次到达%if那里&x. = 1, &y. ...
应该可以设置多个 goto的地方吧  比如

%aaa: ;
%bbb:;

有些时候比循环有用啊   感觉

使用道具

小鳄鱼a 发表于 2014-12-11 11:26:31 |显示全部楼层 |坛友微信交流群
sniperhgy 发表于 2014-12-11 10:23
今早刚看到新的问题,不好意思。

楼主用i作为Looper,每次自增一,所以第一次到达%if那里&x. = 1, &y. ...
如果存在嵌套的情况   

%xxx:;位置在外面的宏 ,而条件语句写在里面的宏,那么当里面的条件成立的时候,应该也能跳到外面的宏吧

使用道具

sniperhgy 发表于 2014-12-11 11:38:12 |显示全部楼层 |坛友微信交流群
小鳄鱼a 发表于 2014-12-11 11:26
如果存在嵌套的情况   

%xxx:;位置在外面的宏 ,而条件语句写在里面的宏,那么当里面的条件成立的时候 ...
作为一名程序员,我强烈不建议这么用,因为goto是毁坏程序“单进单出原则”的罪魁祸首,曾经一度在外国的程序大会上,有人提议要废除goto,它会让程序的逻辑结构受到损坏,很多人不以为然,但是一旦发生bug的时候,想追查,就会比较麻烦了。

使用道具

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

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

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

GMT+8, 2024-3-29 14:04