C语言到底是如何进行加减运算的

问题遇到的现象和发生背景

int main(){
double x=1;
double y=x+3/2;

printf("%lf\n",y);
return 0;

}

int main(){
double x=3;
double y=x+3/2;

printf("%lf\n",y);
return 0;

}

用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容

2.0
4.0

我的解答思路和尝试过的方法

C语言中的加减乘除到底是怎么运算的呀,要是先加减后乘除,我第二个测试的为什么是4?

/的优先级是要高于+-的 我觉得你的疑惑应该是在这里,在c语言中对于除法运算符,当被除数和除数都是整数时,并不会得到一个浮点型的数,而是直接舍去小数部分(即向下取整),所以3/2直接就等于1了,哪怕你已经使用了double,你如果想要小数的话在除数或者被除数任意一个后面1.0就可以得到小数啦 所以(1)3/2=1,1+1=2(2)3/2=1,1+3=4,对您有帮助的话记得采纳哈

3/2是两个整数相除,执行的是整除操作,所以3/2=1,不是1.5

int除以int结果还是默认int只会有整数,不会包含小数,浮点型计算才有小数

x+3/2;
因为/优先级高于+,所以
这个是先执行3/2,再+x的
如果想先执行+,写成(x+3)/2;