fer*_*kin 1 c boolean-expression
找到了这段代码,负责打印出一个二维数组
for (int i = 0; i < n; i++)
for (int j = 0; j < n || !putchar('\n'); j++)
printf_s("%4d", A[i][j]);
Run Code Online (Sandbox Code Playgroud)
导致在每行末尾打印转义序列的布尔表达式如何工作?
这里有两件事在起作用:
虽然j < n为真,则||由于短路语义,将不会评估的右侧。当j < n为假时!putchar('\n')将被评估,它将打印一个换行符并返回一个“真”值('\n'或EOF错误),这是由于!变为假,因此整个条件变为假,循环结束。
这是一个混淆的变体
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf_s("%4d", A[i][j]);
}
putchar('\n');
}
Run Code Online (Sandbox Code Playgroud)
我真的建议您不要使用(或更糟的是,编写)代码作为问题中显示的代码。混淆不是一件值得骄傲的事情(除非你进入IOCCC)。