作者cismjmgoshr (--???--)
看板C_and_CPP
标题Re: [闲聊] 超无言的for回圈...
时间Thu Apr 23 00:47:42 2009
※ 引述《OpenSkyWin (鸡飞城市)》之铭言:
: 期中考居然碰到像这种for回圈
: int i;
: for(i=0;i=1;i++)
: {
: printf(" i is %d \n",i);
: }
: 然後问你这个回圈总共会执行几次= ="
: 判断式给我放i=1咧...我咧,这什麽东西...
: 要是放0或1或a-i什麽之类的我还能懂
: 到底这样放有什麽意思呢??
: 增加阅读的困难??
条件判断放i=1的话,会变成这样
(1)赋值 i = 1;
(2)逻辑判断: i的值如果是零,代表false;非零值则代表true
由於前一个动作让i的值变成1,所以这个for回圈会变成无穷回圈
假设这个题目没有出错
我认为这个题目是提醒写程式的人,要注意"="和"=="两者的不同
不小心写错的话就会造成无穷回圈,程式卡在哪边都不知道
--
∫work dt = success
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.176.224
1F:推 Peruheru:话说VB不能打"==",只能打"="..... 04/23 00:51
2F:推 TroyLee:+1 04/23 00:51
3F:→ Peruheru:不管赋值还是判断都是使用同一个符号... 04/23 00:51
4F:推 OpenSkyWin:「前一个动作让i的值变成1」这句话不太懂?? 04/23 00:53
5F:→ OpenSkyWin:我知道for回圈其实可以拆成while来看 04/23 00:53
6F:→ nswrthh:不是说了吗,i的值是1时就表示其逻辑值是true 04/23 00:56
7F:推 Peruheru:(i) 下面是(2) 我感觉应该是要打(1) ? 04/23 00:56
嗯...打错了
8F:→ nswrthh:回圈每次的逻辑值都是true回圈自然就不会停 04/23 00:57
9F:推 OpenSkyWin:哦,判断式去执行i=1的意思哦 04/23 00:57
10F:→ OpenSkyWin:是这样吗 04/23 00:57
11F:推 ledia:对呀, 无论 i=1 还是 i==1 都是 expression 呀 04/23 01:00
12F:→ ledia:只是 i=1 会改变 i 的值, 回传值也是 i 04/23 01:00
13F:推 OpenSkyWin:哦,thanks!! 感谢各位!! 04/23 01:01
14F:→ ledia:i==1 不会改变 i 的值, 回传值是 i 和 1 是否相等的结果 04/23 01:01
15F:推 chrisdar:养成习惯 for(i=0;1=i;i++) =>> 编译就会报错了 04/23 01:01
16F:→ chrisdar:不过 for(i=0;a=i;i++) 这就没办法了 04/23 01:02
17F:推 OpenSkyWin:看来这判断式的变化真多端啊...真是不能小看@@ 04/23 01:04
18F:推 sandr1983:可是ch大.那个报错原因是因为不能赋值给常数吧 04/23 01:07
19F:→ sandr1983:C里面只要符合格式它就不会报错了 04/23 01:09
※ 编辑: cismjmgoshr 来自: 61.230.176.224 (04/23 01:09)
20F:推 chrisdar:error C2106: '=' : 左运算元必须是左值 (l-value) 04/23 01:15
21F:→ chrisdar:的确我是用 C2106 来提醒自己不要写错 04/23 01:15
22F:推 wowtiger:for 中间没用过 == 所以不会有这问题 倒是 != 蛮常用的 04/23 01:18