空の領域

又一个坑爹的神站 大人說:要清爽 要低調

0%

[C]一道题搞懂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。

PHP中,只有以下值被认为FALSE,其他都是TRUE(摘自细说PHP):

  • 布尔值FALSE
  • 整型值0(零)为假,-1和其他非零值(不论正负)一样,被认为是TRUE
  • 浮点型值0.0(零)
  • 空白字符串和字符串”0”
  • 没有成员变量的数组
  • 没有单元的对象(仅适用于PHP4)
  • 特殊类型NULL(包括尚未设定的变量)

想了半天,某个-1是FALSE,0是TRUE的貌似是VB啊……

至于假设说等价的两者!empty()和empty()  == FALSE,大家貌似都会写前者(应该是这样吧?)的理由,果然还是因为懒吧=_=……

欢迎关注我的其它发布渠道