为什么当我添加赋值语句时会得到不同的结果?

mol*_*han -2 c

下面是我的代码。
\n在 Debian/testing 上工作,使用 gcc 版本 11.2.0 (Debian 11.2.0-10)。

\n
#include <stdio.h>\n\nint main(void)\n{\n    int i, n, m;\n\n    printf("Input a number\xef\xbc\x9a");\n    scanf("%d", &n);\n\n    for (m = 1; m <= n; m++)\n        i = m%10;\n        printf("%d", i);\n        //printf("%d", m%10);\n\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我输入25到n。

\n
\n

如果我使用

\n
for (m = 1; m <= n; m++)\n        i = m%10;\n        printf("%d", i);\n
Run Code Online (Sandbox Code Playgroud)\n

结果是5。

\n
\n

如果我使用

\n
for (m = 1; m <= n; m++)\n        printf("%d", m%10);\n
Run Code Online (Sandbox Code Playgroud)\n

结果是 1234567890123456789012345。

\n
\n

如果我使用

\n
for (m = 1; m <= n; m++)\n    i = m%10;\n    printf("%d", m%10);\n
Run Code Online (Sandbox Code Playgroud)\n

结果是 6。

\n
\n

它们有什么区别\xef\xbc\x9f

\n

Dav*_*eri 5

C != Python,您需要将所有语句放入一个{}块中。

for (m = 1; m <= n; m++)
        i = m%10;
        printf("%d", i);
Run Code Online (Sandbox Code Playgroud)

相当于

for (m = 1; m <= n; m++)
{
    i = m%10;
}
printf("%d", i); // 25 % 10 = 5
Run Code Online (Sandbox Code Playgroud)

你想要

for (m = 1; m <= n; m++)
{
    i = m%10;
    printf("%d", i);
}
Run Code Online (Sandbox Code Playgroud)