gpt4 book ai didi

c# - 为什么在最内层的 for 循环中添加大括号会产生如此奇怪的结果?

转载 作者:行者123 更新时间:2023-11-30 13:37:08 25 4
gpt4 key购买 nike

这是我对我在这里提出的上一个问题的稍微修改过的答案。当发生奇怪的事情时,我正在更改它以更好地理解它。

C# 中的 For 循环应该以这种方式工作:

for (initial increment value, end increment value, increment rate)
{
// for loop body
}

我得到的答案代码似乎有效,但最内层的 for 循环没有大括号。这是代码:

using System;

class Prime_Screening
{
static void Main()
{
Console.WriteLine("Prime numbers x, where: 0 < x < 100");
bool prime;

for (int num = 2; num <= 100; num++)
{
prime = true; /


for (int div = 2; div <= Math.Sqrt(num); div++)
// Why isn't the contents of this for loop in braces? Attempting it produces a weird output
if(num % div == 0)
prime = false;
if (prime)
Console.Write(num.ToString() + ", ");
}
}
}

我在那个 for 循环中添加了大括号,这样我就可以保持代码清晰,但是我得到了一些奇怪的重复输出:

5, 7, 9. 11, 11, 13, 13, 15, 17, 17, 17, 19, 19, 19, 21, 23, 23, 23, 25, 25, 25, 27, 29, 29 , 29, 29, 31... 93, 95, 95, 95, 97, 97, 97, 97, 97, 97, 97, 97, 99,

为什么?当我们讨论这个主题时,if 语句也应该放在大括号中吗?

编辑:拼写/语法

最佳答案

您不需要使用大括号,但只有第一个语句属于循环。

因为这里不是 if-else 而是两个 if 只有第一个属于循环:

for (int div = 2; div <= Math.Sqrt(num); div++)
if (num % div == 0)
prime = false;
if (prime)
Console.Write(num.ToString() + ", ");

这等同于:

for (int div = 2; div <= Math.Sqrt(num); div++)
{
if (num % div == 0)
prime = false;
}
if (prime)
Console.Write(num.ToString() + ", ");

与此代码相反,两者都属于循环:

for (int div = 2; div <= Math.Sqrt(num); div++)
{
if (num % div == 0)
prime = false;
if (prime)
Console.Write(num.ToString() + ", ");
}

来自 msdn:for-loop

The body of the loop consists of a statement, an empty statement, or a block of statements, which you create by enclosing zero or more statements in braces.

关于c# - 为什么在最内层的 for 循环中添加大括号会产生如此奇怪的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25575861/

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