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

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

以下while循环中,循环体执行的次数是()

k = 1;
while(--k)
k = 10;

A、10次 B、无限次 C、1次 D、一次都不

怎么想觉得是D嘛,答案却是C(我坚信答案错了!)

不过我选D有点想当然= =、
我很少接触数字在判断内的……所以总觉得是很好的例子。

while(--k)
//可以拆成
k = k - 1;
while(k)

/* 然而    */
while(k--)
//可以拆成
while(k)
k = k - 1

换句话说,–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。

植入部分

如果您觉得文章不错,可以通过赞助支持我。

如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。

标签: 知识, 语法, 题目

已有 2 条评论

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

    1. wynn

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

添加新评论