for循环中有什么可能

马克西姆·格什科维奇(Maxim Gershkovich):

因此,今天我去了一次采访,其中一个问题是以下内容(C#上下文)。

//Print the output for the following code:
for (int i = 10, j = 0; j <= 10; j++, i--)
{
    if (i > j)
        Console.WriteLine(j.ToString());
}

我以前从未见过这样的结构,并问过我的同事,我工作场所中的5人中有4人也不知道(也许更多地反映了我们,但我离题了)使用一些基本的逻辑,我能够正确回答问题,但是这种知识从根本上改变了我对如何构造循环的理解。

所以我想我的问题可以归结为这一点。

  1. 所有基于C语法的语言都实现此功能吗?IE:C,C ++,Java,javascript等。
  2. 此语法从何而来?
  3. for循环还可以采用其他“不为人所知”的结构吗?
  4. 鉴于很难阅读,编写上述代码是否被视为不良做法?
  5. 现实世界中是否有需要这种结构的良好示例
phoxis:
for (statement1; statement2; statement3)
{
     /* body */
}

(1)首先statement1执行。

(2)接下来statement2执行。

(3)如果的评估statement2为真,则执行主体

(4)然后statement3执行。

(5)从步骤(2)重复

          |                  +<-----------------+
          |                  |                  ^
          V                  V                  |
 for (  (s1); -------->(s2 true? | false?);    (s3) )
 {                           |       |          ^
                             |       |          |
                             |       |          |
                             V       |          |
                          (body)-----|--------->+
 }                                   |
                                     |
                                     V
                                 (come out)

您显示的结构与上述相同。statement n可以是任何声明。在您的示例中,您中用逗号分隔您可以使用逗号运算符分隔任意数量的语句。statement1statement3

通常,for循环与statement1with初始化一起使用,因为它仅执行一次。statement2用于循环终止条件检查,因为这句话的评估值来决定是否进入中断了的身体。和,statement3用于在主体之后执行循环更新终止变量。但是通常它们可以以任何方式使用。

首先statement1i=10, j=0;这将初始化变量。接下来statement2j <= 10如果为true,则执行主体。执行体内后,statement3i--,j++被执行。循环将迭代11时间010但是,将打印5时间,因为在一个点上i,并j成为同和if (i > j)将评估假。

编辑这是一个示例,在其中可以使用它来检查回文字符串,但不是很实际,而是一个示例。

  int i, j, n, flag;
  char str[128];

  printf ("\nEnter string: ");
  scanf ("%s", &str);
  n = strlen (str);


for (flag=1, i=n-1, j=0; j<n/2; j++, i--)
{
  if (str[i] != str[j])
  {
    flag = 0;
    break;
  }
}

if (flag)
 printf ("\n\"%s\" is a palindrome");
else
 printf ("\n\"%s\" is not a palindrome");

我们应该始终尝试编写易于阅读且不会造成混淆的代码。这有助于代码编写者以及其他阅读代码的人。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在Java中有两种不同的for循环?

Go中的for循环中有多个变量

有什么更好的?notifyDataSetChanged或notifyItemChanged在循环中?

Python,在for循环中有一个条件

R中的for循环中有2个变量

一个VBA For循环中有多个范围?

每个v-for循环中有多个<td>元素

为什么在空的“ while”循环中没有关于空语句可能错误的警告?

同一循环中有两次线性插值,但是一次插值需要更长的时间,为什么?(Unity 3D)

我可以控制ES6 forEach循环中有多少个循环

为什么变量大于循环中所有可能的值?

使用逗号和中断在for循环中有错误

魔术8球的循环中有错误

每个循环中有多个猫鼬调用

循环之间并行,循环中有多个异步操作,如何实现?

for循环中有多个输入

是否有可能卡在compare_exchange的循环中?

for循环中的“ await仅在异步函数中有效”

反应-循环中有多个API请求

无法弄清楚我的for循环中有什么语法错误

我的for循环中有更好更好的方法吗?

for循环中有多个不同的事件侦听器

为什么在for循环中使用此命令复制文件的命令在bash中有效,而在zsh中却无效?

Javascript:循环中有多个Switch语句

为什么我在4个循环中有相同的内容?可湿性粉剂

for循环中有多个ajax请求

如何在循环中添加具有相同变量的while循环中的变量(如果可能)

线程是否有可能在 wait() 循环中饿死?

在 for 循环中有条件地更新值