如下c程序 while(*p)是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如下c程序 while(*p)是啥意思?相关的知识,希望对你有一定的参考价值。

p=a说明,p指向的是数组a的首地址。就是指a[0]的地址。你看到while后面有个p++,就是指将p往后移动一个,就是指的a[1],同理这个while循环可以遍历数组a的所有元素,当a完了 就退出while循环了。。 参考技术A p指向的是数组a的首地址。后面的p++就是遍历字符串a,因为字符串最后为‘\0’,所以while循环退出。来自:求助得到的回答 参考技术A 当指针P恒成立

while (i --> 0) 是啥意思?

【中文标题】while (i --> 0) 是啥意思?【英文标题】:What does while (i --> 0) mean?while (i --> 0) 是什么意思? 【发布时间】:2014-01-12 07:46:16 【问题描述】:

如果这是一个愚蠢的问题,我深表歉意,但我无法在任何地方找到答案。

以下代码如何工作? (我意识到它会遍历els 的元素)

var i = els.length;
while (i --> 0) 
    var el = els[i];
    // ...do stuff...

我不知道--> 是什么意思。没有它的文档。有人能启发我吗?

【问题讨论】:

它是 i-- 大于 0 一个空格错字真的有 4 个赞吗? @RUJordan - 这不是间距错字。这(可能)是故意尝试用--> 形成一个箭头作为一种伪“倒计时”运算符。整个语句被读作“我归零”...... @nnnnnn 现在我知道它的作用,我同意它可能只是为了幽默/烦人。 @nderscore:这有点不同。如果您不能保证 i>= 0 开始,则循环可以继续。 【参考方案1】:

应该读作

i-- > 0

所以,真正发生的是,

    检查i的值是否大于0,如果为真则控制进入while块,如果为假则跳过while块。

    无论哪种方式,i 的值都会在检查条件后立即递减。

使用for 循环总是更好,当我们使用计数器运行循环时,像这样

for (var i = els.length - 1; i >= 0; i -= 1) 
    ...

Please read more about whether ++, -- is okay or not.

【讨论】:

对减量前的值进行校验。如果写成--i > 0,则在减量后检查该值。 @Cuberto 这就是我提到帖子减少的原因。 :) 您确实提到了“post decremented”,但您说“然后会检查值”混淆了它,这听起来像是在递减之后发生的...... 所以就像i - 1 > 0? @ManofSnow i - 1 实际上不会改变i 的值,i-- 会改变i 的值。【参考方案2】:

这只是奇怪的间距,应该是

while((i--) > 0)

它只是在递减和检查条件后。 C++的问题有这个幽默的回答,但我认为它被删除了

while (x --\
            \
             \
              \
               > 0) //i goes down to zero!

或者类似的东西,无论如何

如果你有类似的东西

var i=3;
while(i-->0)
     console.log(i);

它会返回

2
1
0

【讨论】:

是这样 ;-) 但无论如何,你的回答分享了一段有趣的 C++ 代码,值得点赞) 大声笑...我刚刚阅读了原始答案,并且 cmets 遵循了它。 是的,我想我至少读过一次所有的答案和 cmets【参考方案3】:

代码实际上应该是:

while (i-- > 0) 

如果变量i 递减后的值大于零,则循环将运行的位置。

【讨论】:

比较后减量,--i是预减量。【参考方案4】:

这只是奇怪的间距。是一样的

while (i--  >  0) 

【讨论】:

以上是关于如下c程序 while(*p)是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

while(p) 是啥意思? (p 是指向 C 样式字符串的第一个元素的指针)

C语言二维数组指针变量是啥,int (*p)[2]啥意思

C语言 while(!x);是啥意思?

C语言 counter=counter+1 是啥意思,为啥后面要加1,去掉行吗?与while 有什关系?

c语言*p++是啥意思?

下面代码的C语言中while(x--)是啥意思