问题标签 [do-while]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4890 浏览

objective-c - 目标 C “do - while”

我正在阅读的书中的一个练习示例显示了以下代码:

我的问题是,while 语句显示 (input /= 10),如果我理解正确,这基本上意味着 (input = input / 10)。现在,如果这是真的,为什么循环不连续运行?我的意思是,即使你将 0 除以 10,那仍然会提取一个数字。如果用户输入“50607”,它会先切断“7”,然后切断“0”,以此类推,但为什么去掉“5”后退出循环。“5”之后的响应会不会和程序的5和6之间的“0”一样?

0 投票
4 回答
838 浏览

vb.net - VB.NET 2008 应用程序在 Do Loop 期间崩溃

我正在编写一个应用程序来将 listbox1 上的每个项目与 listbox2 上的所有项目进行比较。如果找到该项目,则将其从两个列表中删除。目标是仅将未找到的项目保留在两个列表中。

问题是,应用程序只是挂起,我从来没有得到任何结果。我多次查看我的代码,但我无法弄清楚发生了什么(我知道编程菜鸟......)。

有人可以帮我吗?

代码片段:

0 投票
9 回答
36084 浏览

language-agnostic - 为什么要使用“do while”循环?

我从来不明白为什么需要使用do while循环。我了解他们的工作,即执行 while 循环包含的代码,而不首先检查条件是否为真。

但不是下面的代码:

完全一样:

也许我非常愚蠢并且遗漏了一些明显的东西,但我没有看到在上面的例子中使用do while的好处。

0 投票
6 回答
2066 浏览

c++ - 是 "} 而 (0);" 总是等于“break;} while (1);”?

我比较了 gcc 汇编器的输出

输出是相等的,有或没有优化,但是..

总是这样吗?

没有实验可以证明理论,它们只能证明它们是错误的

0 投票
5 回答
290 浏览

c - 使用 do while 循环的代码中的疑问

这是下面显示的一小段代码,它使用了 do while 循环。我真的不明白执行此代码时看到的意外行为。下面显示的此代码使用 do while 循环条件,据我所知, do while 循环的执行方式是 if 首先执行语句,然后检查 while部分条件是否为真。但是当我执行此代码时,它永远不会退出循环并永远持续下去。谁能告诉我为什么会这样?

现在我从来没有打印过“你好”。

在此先感谢麦迪

0 投票
0 回答
1557 浏览

c++ - 什么时候应该使用 do-while 而不是 while 循环?

可能的重复:
是否需要“do {...} while ( )”循环?
您的循环是在顶部还是底部进行测试?
While vs. Do While
什么时候做合适?

我一直在与一位同事就是否作为一般规则在 C/C++ 中我们应该使用 while 循环而不是 do-wile 循环进行哲学辩论。

我的感觉是,你应该使用 do-while 的唯一时间是如果你需要重复测试同一件事,并且你总是希望至少这样做一次。一般来说,我总是觉得while循环更具可读性。

我意识到这可能被认为是一种主观/个人风格的事情,但我很想听听任何人关于我是对的还是在这里遗漏了什么的想法。具体的例子将特别受欢迎。

0 投票
2 回答
17750 浏览

php - PHP 文本区域 foreach line

我正在尝试编写一个 php 脚本,该脚本将为 Textarea 帖子中的每一行循环一个进程。我想知道是否有人可以发布一个例子。

0 投票
31 回答
130331 浏览

c# - 'do...while' vs. 'while'

可能的重复:
While vs. Do While
什么时候应该使用 do-while 而不是 while 循环?

我已经编程了一段时间(2 年工作 + 4.5 年学位 + 1 年大学预科),而且我从未在编程入门课程中被迫使用 do-while 循环。如果我从来没有遇到过如此基本的事情,我越来越觉得我在做错误的编程。

难道是我没有遇到正确的情况?

有哪些示例需要使用 do-while 而不是 while?

(我的学习几乎都是 C/C++,而我的工作是 C#,所以如果有另一种语言绝对有意义,因为 do-while 的工作方式不同,那么这些问题并不适用。)

while澄清一下......我知道 a和 a之间的区别do-while。While 检查退出条件,然后执行任务。do-while执行任务,然后检查退出条件。

0 投票
9 回答
2662 浏览

c# - 在 C# 中处理“循环初始化”的其他方法

首先,我同意 goto 语句在很大程度上与现代编程语言中的高级构造无关,并且在有合适的替代品可用时不应使用。

我最近在重读 Steve McConnell 的 Code Complete 的原始版本,忘记了他对常见编码问题的建议。几年前我刚开始的时候就读过它,但我认为我没有意识到这个食谱有多么有用。编码问题如下:在执行循环时,您经常需要执行循环的一部分来初始化状态,然后用其他一些逻辑执行循环,并用相同的初始化逻辑结束每个循环。一个具体的例子是实现 String.Join(delimiter, array) 方法。

我想每个人对这个问题的第一反应就是这个。假设 append 方法被定义为将参数添加到您的返回值。

注意:对此的轻微优化是删除 else 并将其放在循环的末尾。赋值通常是单条指令,等效于 else,将基本块的数量减少 1,并增加主要部分的基本块大小。结果是在每个循环中执行一个条件来确定是否应该添加分隔符。

我还看到并使用了其他方法来处理这个常见的循环问题。您可以先在循环外执行初始元素代码,然后从第二个元素执行循环到结束。您还可以更改逻辑以始终附加元素,然后附加分隔符,一旦循环完成,您可以简单地删除您添加的最后一个分隔符。

后一种解决方案往往是我更喜欢的解决方案,只是因为它不会复制任何代码。如果初始化序列的逻辑发生变化,您不必记住在两个地方修复它。然而,它确实需要额外的“工作”来做某事然后撤消它,这至少会导致额外的 cpu 周期,并且在许多情况下,例如我们的 String.Join 示例也需要额外的内存。

当时我很兴奋读到这个结构

这样做的好处是您不会得到重复的代码,也不会得到额外的工作。您开始循环到执行第一个循环的一半,这就是您的初始化。您仅限于使用 do while 构造来模拟其他循环,但翻译很容易,阅读起来并不困难。

所以,现在的问题。我很高兴地尝试将它添加到我正在处理的一些代码中,但发现它不起作用。在 C、C++、Basic 中效果很好,但在 C# 中,您不能跳转到不是父作用域的不同词法作用域内的标签。我非常失望。所以我想知道,在 C# 中处理这个非常常见的编码问题(我主要在字符串生成中看到它)的最佳方法是什么?

也许更具体的要求:

  • 不要重复代码
  • 不要做不必要的工作
  • 不要比其他代码慢 2 到 3 倍
  • 可读

我认为可读性是我所说的食谱唯一可能会受到影响的事情。但是它在 C# 中不起作用,那么下一个最好的事情是什么?

* 编辑 * 因为一些讨论,我改变了我的表现标准。性能通常不是这里的限制因素,所以更正确的目标应该是不要不合理,不要成为有史以来最快的。

我不喜欢我建议的替代实现的原因是因为它们要么重复代码,这为更改一个部分而不是另一部分留出了空间,或者对于我通常选择的那个,它需要“撤消”操作,这需要额外的思考和时间来撤消事情你刚刚做的。特别是对于字符串操作,这通常会使您因一个错误或未能考虑空数组并试图撤消未发生的事情而打开关闭状态。

0 投票
3 回答
2183 浏览

c - {} while(0) 如何在宏中工作?

虽然这个话题已经在这个论坛和所有其他论坛上讨论过很多次,但我仍然有疑问。请帮忙。

do{} while(0)in 宏在 Linux 内核中是如何工作的?例如,

它如何禁用抢占?

它如何重新安排?

同样,我也看到了互斥锁和其他宏。这有什么帮助?我了解以下问题,但不了解上面的示例。

编辑:

下面的代码rt_mutex_lock呢?

我很困惑,因为rt_mutex_deadlock_account_lock在内核的两个地方定义:

kernel/rtmutex-debug.c

kernel/rtmutex.h

在新内核 2.6.35.4 中的 i2c 驱动程序rt_mutex_lock(&adap->bus_lock);已替换mutex_lock(). 那这个怎么锁?