#include <stdio.h>
void main()
{
int a=1,b=2,m=0,n=0,k;
k= ((n=b>a)||(m=a<b));
printf("%d,%d,%d\n",k,n,m);
}
用C语言的规则来推测这个程序的输出,我是这样推测的:
1.n = b>a 中,">"运算符优先 "="运算符,所以先计算 b>a 结果为真,然后将 1 赋予 n ;
2.m = a<b 按照同样的思路,会得到 m = 1;
3.然后 n||m 得到 1;
所以最终应该是 k = 1,n = 1,m = 1.
在不上机编译的情况下,我想问问,我这个思路有没有问题??