楼主: 求不挂
688 4

[问答] 简单的问题求助 [推广有奖]

  • 2关注
  • 0粉丝

大专生

0%

还不是VIP/贵宾

-

威望
0
论坛币
473 个
通用积分
1.0000
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
832 点
帖子
25
精华
0
在线时间
27 小时
注册时间
2014-12-11
最后登录
2019-5-10

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
  1. /*do循环*/;
  2. data _null_;
  3.   sum = 0;
  4.   do i =1 TO 100 by 1;
  5.     sum = sum + i;
  6.   end;
  7. put sum;
  8. run;
  9. /*do while循环语句*/;
  10. DATA _null_;
  11.   sum = 0;
  12.   i = 1;*?疑问:为什么没有这句就出错;
  13.   do while (i<=100);
  14.     sum = sum + i;
  15.         i = i + 2;
  16.   END;
  17. PUT sum;
  18. RUN;
复制代码
我运行程序的时候,没有 i = 1; 这句sas就会一直运行没有结果(可能是死循环)。请问大神解答一下这是为什么,感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:while Data null 循环语句 do循环

沙发
l1i2n3i4n5g 在职认证  发表于 2017-9-10 21:53:42 |只看作者 |坛友微信交流群
因为是do while,当i符合条件时才继续,没有i=1;是不行的。
已有 1 人评分论坛币 收起 理由
admin_kefu + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

使用道具

藤椅
行路者01 发表于 2017-9-10 21:55:52 |只看作者 |坛友微信交流群
这个问题很简单。但是需要知道SAS data步运行的逻辑才能理解。对于data步,程序在编译阶段时,对于数值型变量都是置为缺失值得,除非给这个变量一个初始值。在第一个循环语句,如果将 sum = 0;这条语句去掉,运行结果也是报错的。对于第二个循环,因为循环判断的变量i如果没有置初始值,那么这个变量为缺失置,在循环模块里面,缺失值的运算结果仍然是缺失值,永远不会达到循环中断的条件,因此程序陷入死循环。
不知道是否已经理解。
已有 3 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
l1i2n3i4n5g + 5 你是对的,我想的太简单了!
admin_kefu + 20 热心帮助其他会员
求不挂 + 5 + 5 + 5 回答的太棒了

总评分: 论坛币 + 25  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

使用道具

板凳
求不挂 学生认证  发表于 2017-9-10 22:04:35 |只看作者 |坛友微信交流群
行路者01 发表于 2017-9-10 21:55
这个问题很简单。但是需要知道SAS data步运行的逻辑才能理解。对于data步,程序在编译阶段时,对于数值型变 ...
理解了,非常感谢!

使用道具

报纸
求不挂 学生认证  发表于 2017-9-10 22:05:02 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2017-9-10 21:53
因为是do while,当i符合条件时才继续,没有i=1;是不行的。
感谢您的回答!

使用道具

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

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

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

GMT+8, 2024-5-3 19:03