gpt4 book ai didi

c - switch 与 while 增量和评估之间的区别

转载 作者:行者123 更新时间:2023-11-30 20:45:42 24 4
gpt4 key购买 nike

如果i等于1,则在此语句之后,

while (i++ <= 10){} 

i 被视为 2,即在 block 中求值之前递增。

但是如果用在switch中,

switch(i++){} 

i 在 block 中递增之前先进行评估。

为什么这些情况 i++ 的行为不同?

示例:

对于 While 情况:

#include <stdio.h>

int main()
{
int age = 20;

while (age++ <= 65)
{
if ((age % 20) == 0)
{
printf("You are %d years old\n", age);
}
}

return 0;
}

我希望打印:

You are 20 years old
You are 40 years old
You are 60 years old

对于开关盒:

#include <stdio.h>

int main()
{
int i = 0;

while (i < 3)
{
switch (i++)
{
case 0:printf("print 0");
case 1:printf("print 1");
case 2:printf("print 2");
default:printf("Oh no!");
}
putchar('\n');
}

return 0;
}

最佳答案

有了这个

while (i++ <= 10){} 

发生以下情况:

  • i 从 1 开始
  • i(1)与 10 进行比较
  • i 增加到 2
  • block 被执行,i 为 2

有趣的是,如果 i 开始为 10,则 while 循环会再次执行,i 为 11。

这样:

switch(i++){}
  • i 从 1 开始
  • 根据“1”选择要执行的case
  • i 增加到 2
  • 执行“1”的情况,其中 i 为“2”

关于c - switch 与 while 增量和评估之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50637872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com