定义int m=5,n=3;则表达式m+=m-=(m=1)*(n=2)的值?求详解

供稿:hz-xin.com     日期:2024-05-22
int m=1,n=2 表达式m,n++的结果是

表达式m,n++的结果是1 2 最后n的值是3

float强转是把(m/n)整个表达式的结果进行转换,因为m,n都是int类型,所以m/n=1,1转换为float类型为1.000000.你把(float)(m/n)改为(float)m/n就可以得到1.5

答案是-2,定义时的初值没用,后面的表达式重新赋值。
(m=1)*(n=2)返回2
m的值为1,m-=2返回-1,
m的值被赋值为-1,m+=-1,返回-2

T=(m=1)*(n=2) ..............T=2,m=1
m=m+(m=m-T)............m=-1 m=2m=-2
so 表达式=-2
IT交流群 278697954

#include <stdio.h>
main(){
int m=5,n=3;
m+=m-=(m=1)*(n=2);
printf("%d",m);
}
最后输出结果为8