此C程序的输出

Ano*_*non 1 c

这个C程序的输出应该是什么?

int main()
{
    int x=1,y=1,z;
    if (z=(y>0)) x=5;
    printf("%d %d",x,z);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

正如所料,输出X是5,Z是1.这是因为当表达y> 0时,它是真的,依此类推.现在问题在于这个程序:

int main()
{
    int x,y;
    for (y=1;(x=y)<10;y++)
    ;

    printf("%d %d",x,y);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出不应该是一个无限循环?原因是,(x = y)总是返回true(1),总是小于10?

Del*_*ani 7

不,(x=y)在将x设置为y的值后返回新值.

但是,(x==y)如果相等则返回1,否则返回0.