一道题搞懂i++和++i
题目是酱紫滴(╮(╯-╰)╭某个小弟弟问的):
以下while循环中,循环体执行的次数是()
1k = 1;
2while(--k)
3k = 10;
4
A、10次 B、无限次 C、1次 D、一次都不
怎么想觉得是D嘛,答案却是C(我坚信答案错了!)
不过我选D有点想当然= =、 我很少接触数字在判断内的……所以总觉得是很好的例子。
1while(--k)
2//可以拆成
3k = k - 1;
4while(k)
5
6/* 然而 */
7while(k--)
8//可以拆成
9while(k)
10k = k - 1
11
换句话说,–k先运算,再判断(使用),而k–使用完了再参与运算,- -貌似以前有纠结过这个,完全不记得……依旧搞不清@-@
另外在C中,0表示FALSE而1表示TRUE,只有在C99中才有_Bool(TRUE和FALSE),而且好像还没人用啊(T T),从数值上来说,除了0,其他的都是TRUE。
附1:PHP中False的有:
- 布尔值FALSE
- 整型值0(零)为假,-1和其他非零值(不论正负)一样,被认为是TRUE
- 浮点型值0.0(零)
- 空白字符串和字符串”0″
- 没有成员变量的数组
- 没有单元的对象(仅适用于PHP4)
- 特殊类型NULL(包括尚未设定的变量)
附2:VB中的True 和 False
在将数值数据类型转换为 Boolean 值时,0 转换为 False,其他所有值转换为 True。 在将 Boolean 值转换为数值类型时,False 将转换为 0,True 将转换为 -1。
评论 (1)
还是没搞懂这个题....仍然觉得应该选D呀....
while(--k) 和 wile(k--)区别 --k是先把k-1过后的值给while 而k--是先把k的值给while,然后K再减一。 所以判断while里是0还是1要看k在前面还是后面 更好的方法是输出K的值更加直观。