CodeSky 代码之空

随手记录自己的学习过程

一道题搞懂i++和++i

2014-01-23 23:13分类: C评论: 2

题目是酱紫滴(╮(╯-╰)╭某个小弟弟问的):

以下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)

Anton2017年6月24日 14:19

还是没搞懂这个题....仍然觉得应该选D呀....

wynn2017年12月19日 22:13

while(--k) 和 wile(k--)区别 --k是先把k-1过后的值给while 而k--是先把k的值给while,然后K再减一。 所以判断while里是0还是1要看k在前面还是后面 更好的方法是输出K的值更加直观。