先看下运算符的优先级()/ 除 表达式/表达式 左到右 双目运算符 * 乘 表达式*表达式 双目运算符 左到右% 余数(取模) 整型表达式/整型表达式 双目运算符 左到右+ 加 表达式+表达式 左到右 先算(),x+a%3*(int)(x+y)%2/4 = x+a%3*7%2/4先算除,x+a%3*7%2/4 = x+a%3*7%(2/4)再算 * ,x+a%3*7%(2/4) = x+7%21%(2/4)所以个人觉得,7%21%(2/4)= 0,最终就是x的值,但是在vc中结果是这样的#include<stdio.h>void main(){int a=7;float x=2.5,y=5.3;float b;b = x+a%3*(int)(x+y)%2/4;printf("b=%d",b);}b=0 Press any key to continue
结果是:2.5算法先算a%3结果是1你该会算吧在算(int)(x+y)x+y本来是7.8你前面加了一个int类型强制转换结果去int型结果为7接着是算a%3*(int)(x+y)的质1*7=77%2=1应该没问题吧1/4因为你的基本类型是(int)结果取整为0x+0=2.5好了就是这么算的 加QQ可以一起学习我也是新手呵呵1394481913