作者yauhh (哟)
看板C_and_CPP
标题Re: [闲聊] 超无言的for回圈...
时间Thu Apr 23 02:35:36 2009
※ 引述《OpenSkyWin (鸡飞城市)》之铭言:
: 期中考居然碰到像这种for回圈
: int i;
: for(i=0;i=1;i++)
: {
: printf(" i is %d \n",i);
: }
: 然後问你这个回圈总共会执行几次= ="
: 判断式给我放i=1咧...我咧,这什麽东西...
: 要是放0或1或a-i什麽之类的我还能懂
: 到底这样放有什麽意思呢??
: 增加阅读的困难??
我想这是写程式的人自己的盲点,可能因为写久了都看到比较普通的for回圈写法,
以及认为for必须写成有效完成一段程式的样式.
但是,for语法的三个位置,第一个规定进入回圈的初值,第二个规定持续回圈的条件,
第三个规定回圈前後的差异. 所以 for(i=0;i=1;i++) 不正是规定了:
- 进入回圈时,i为0.
- 若「i能指定为1」则持续回圈.
结果会发现,无论什麽情况,i都能指定为1,所以是无穷回圈嘛!
没有人规定程式都要写对,也没有人规定考卷上出现的程式都要「正确」或「有意义」.
当有些人在抱怨考题「没有意义」的时候,却忘了他应考只有「在考题正确
的情况下不要答错」的权力,而没有修正考题的权力.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.112.225.34
※ 编辑: yauhh 来自: 59.112.225.34 (04/23 02:39)
1F:推 kvykn:解释完美 04/23 08:18
2F:推 OpenSkyWin:感恩!! 04/23 09:55
3F:→ VictorTom:推这位大大的说法, 除非题目是错的, 否则不应该改题目:) 04/23 09:55
4F:推 stonehomelaa:很明显这是陷阱题吧 04/23 09:57
5F:推 OpenSkyWin:其实在解的过程我还把i=1搬过来变成i-1=0想说i值是1那 04/23 10:00
6F:→ OpenSkyWin:结果就是false ...XD 04/23 10:01
7F:→ VictorTom:基本上那跟 if(i=1) 是一样的意思, 可以说是陷阱题, 04/23 10:01
8F:→ VictorTom:但是满有教育意义的; 也是检视对statement expression 04/23 10:02
9F:→ VictorTom:了解程度的好方法XDDD 04/23 10:02
10F:→ ksmrt0123:若「i能指定为1」... 这说法是错的 04/23 13:28
11F:推 fjm31714:恩恩 应该是(i=1)的值为1吧 04/23 13:53
12F:推 stonehomelaa:科科 原po写个if (i = 0)就知道罗 ^.< 04/23 14:20
13F:→ yauhh:喔,讲错了,应该说「i指定为1的意义被认为真」,虽然难懂一点 04/23 16:57
14F:推 ledia:不是吧, 就是 i 的值吧, 不然 for(;i=0;) 呢? @@ 04/23 18:53
15F:→ ledia:跟指定什麽的意义为不为真没有关系 04/23 18:53
16F:→ ledia:不然 j=i=0; j=i=1; 不就没差了 04/23 18:54
17F:推 stonehomelaa:对呀 跟指定不指定没啥关 就是看i的值 04/23 19:24
18F:→ sunneo:我想`指定` 应该是英文 assign 的翻译吧 ~_~ 04/23 23:34
19F:→ sunneo: 或者说应该叫做指派 04/23 23:34
20F:→ yauhh:当一个条件式用到一个指定,就可以说指定啊,程式码明写了指定 04/24 00:40
21F:→ yauhh:却「跟指定无关」,啥意思? 指定本来就是assignment 04/24 00:40
22F:→ yauhh:指定,指派,都一样,只是一个译词;不要把译词再拿去用中文思考 04/24 00:41
23F:→ yauhh:for(;i=0;)内是i指定为0的意义不成立,因为全值0认定为false 04/24 00:43
24F:→ yauhh:今天我说「意义被认为真」只是指解释成true而已,何必想太多 04/24 00:43
25F:→ yauhh:分析那麽多是要吵到什麽时候,大家都是口语逻辑达人吗? 04/24 00:44
26F:→ yauhh:大家有好好正式修过「口语逻辑」这堂课吗?真要那麽严肃!? 04/24 00:45
27F:→ yauhh:再争下去,是不是要顺便帮以上的语意写编译器了? 04/24 00:48
28F:→ sunneo:息怒吧 我想事情并没这麽严重 04/24 01:01
29F:推 ledia:我是说跟指派的意义无关, 却变成了「跟指定无关」 04/24 01:37
30F:推 ledia:指定指派都好, 本身没有什麽意义, 只有传回值, 如果你真的要 04/24 01:41
31F:→ ledia:扯逻辑的话。 04/24 01:41
32F:推 wupojung:如果是这样呢 const y=0; 04/24 07:49
33F:→ wupojung:for(int i=0;j=1;i++) 如果是这样会如何阿? 04/24 07:50
34F:推 wupojung:打太快...应该是 const int y=0; 感谢原PO的解释 04/24 07:53
35F:→ wupojung:还是打错.....const int j=0; (我还没睡醒 XD...) 04/24 07:54
36F:推 VictorTom:楼上, j是const的话, j=1 compiler就会把你挡掉了.... 04/24 09:45
37F:推 wupojung:恩...我的意思就在这里啊..还感谢原PO让我明白 04/25 01:48
38F:→ wupojung:其实 i=1 这样会return true.....(应该可以这样说吧) 04/25 01:48