回 帖 发 新 帖 刷新版面

主题:新手求助   运算优先级问题!

m=x+a%3*(int)(x+y)%2/4  
x=2.5,a=7,  y=4.7  
这个我输入vc2008 运算的结果是  2.5  
但是我自己算的结果却是1.25
我是这样算的
7%3=1  1*int(x+y)=7   7%2=1  1%4=0.25  0.25+1=1.25!
我不知道我错在上面地方  高手指点!
对了 我写的程序是
#include<stdio.h>
void main()
{
    float x,y,m;
    int a;
    x=2.5;
    y=4.7;
    a=7;
    m=x+a%3*(int)(x+y)%2/4;
    printf("%.1f\n",m);
}

回复列表 (共3个回复)

沙发

你上面写的是(int)(x+y)%2/4
所以结果是1/4当然是0
所以是2.5

板凳

另外1和4求余是1

3 楼

lz恕我冒昧,我实在不知道您2.5+一个正数是怎么出来比2.5小的结果的
后面的算式里所有参与运算的数都被转化成了整形,因此所有的小数都被舍弃了,而且计算里有一步的算符你写错了,不是1%4,是1/4,整形除法得0

我来回复

您尚未登录,请登录后再回复。点此登录或注册