C# 如果while循环后没有大括号,代码如何解释?

C# 如果while循环后没有大括号,代码如何解释?,c#,C#,我是编程新手,无法理解编译器如何解释以下代码。正如您在代码中所注意到的,while循环在紧跟其后的代码周围没有大括号。有人能一步一步地向我解释一下这个循环是如何工作的吗 int num = 0; while(++num < 6) Console.WriteLine(++num); Console.WriteLine(num++); Console.WriteLine(++num); 不带大括号的while循环与带大括号的while循环相同: int num =

我是编程新手,无法理解编译器如何解释以下代码。正如您在代码中所注意到的,while循环在紧跟其后的代码周围没有大括号。有人能一步一步地向我解释一下这个循环是如何工作的吗

int num = 0;
while(++num < 6) 

    Console.WriteLine(++num);
    Console.WriteLine(num++);
    Console.WriteLine(++num);

不带大括号的while循环与带大括号的while循环相同:

int num = 0;
while(++num < 6) 
{
    Console.WriteLine(++num);
}
Console.WriteLine(num++);
Console.WriteLine(++num);

因此,它会打印2、4、6、7、9,因为使用大括号会很快导致意外行为或难以阅读的代码,所以最好总是编写它们,即使不需要。考虑下面的代码,我故意删除缩进:

int i, j;
for (i=0;i<10;i++)
for (j=0;j<10;j++)
if (j > i)
continue;
foo(i, j);
没有人能够阅读,即使你添加空格,也很容易出错。此外,如果以后需要在if条件中添加另一行,则很可能忘记添加大括号。这个例子非常糟糕:fooi,j只会被调用一次,循环将什么都不做

另外,请注意您的问题中的以下稍加修改的代码:

int num = 0;
while(++num < 6); // Careful: a semicolon ends the statement
Console.WriteLine(++num);

这将在调用Console.WriteLine一次之前运行循环六次,因为分号结束语句

没有大括号,循环只是第一个控制台。WriteLine其他两个发生在循环之后。缩进在C语言中并不重要,只是为了使代码更易于阅读。调试器是理解代码如何工作的最好朋友。我投票将这个问题作为非主题来结束,因为你可以自己使用调试器来逐步完成它并找到答案。此外,重复的闭包,还有一些有用的答案。谢谢!!我知道不使用花括号是不好的,我只是在玩代码,这样我就能理解它是如何工作的,再次感谢谢谢你,我现在明白了
while(5 < 6) // num is 5
{
    Console.WriteLine(6); // num is 6
}
// num is 7
Console.WriteLine(7); // num is 8
Console.WriteLine(9); // num is 9
int i, j;
for (i=0;i<10;i++)
for (j=0;j<10;j++)
if (j > i)
continue;
foo(i, j);
int num = 0;
while(++num < 6); // Careful: a semicolon ends the statement
Console.WriteLine(++num);