答案是 1
c语言表达式有一个从左原则,即一个表达式中取最左边的值为表达式的值例如:
a=b=c 这个表达式取a的值(但因为c的值赋给了b,b的值赋给了a,所以a的值也是c的值)
a,b,c 这个表达式取的也是a的值(无论b,c为何值)
另外a++和++a的区别:
a++即当前代码执行完后a自加1,++a即当前代码执行前a自加1
如果是单独的写a++;和++a;这2个语句是没区别的
而b=a++;和b=++a;就有区别了
b=a++;实际上是b=a;a=a+1;
b=++a;实际上是a=a+1;b=a;
因此(m=n=a++)/(n=b-2)可以这样看待:
把a=5这个值传给n后再传给m 那么前面个括号里的值就为5
n=b-2值为3,于是整个表达式的值就为5/3=1(整形的除法没有小数)
最后a自加1,但表达式的值不变,仍为1
B