main() { int a=5,b=4; float c,d; c=a++⼀--b; printf("%f,%d尀n",c,a%4); 为什么 c=1??? 谢谢

2025-02-26 16:04:38
推荐回答(3个)
回答1:

c=a++/--b 看一下你的这句话编译器是如何执行的:
1. 编译器现执行=右边的 a++/--b 把这个式子的返回值赋给c
2 执行a++/--b 类似于执行 int operator/( const int lhs, const rhs ) 的一个过程,首先压栈两个参数
a是后++也就是先压栈后++,所以进入operator/的lhs 是5不是6,压第二个参数--b是前--所以压入的rhs是3,然后执行5/3 又因为int/int是返回int而且是只舍不入的int,所以opertaor/返回1 注意这个1还是int型的,然后 float c = 1; 即把int的1转为float然后赋值给c 所以最后c为1.0000

回答2:

你要直到在C语言中,当除数和被除数都是int型是,/ 运算符在运算时会直接取整 列如:3/2 在C语言中的值是1,并不是1.5
如果要得到正确值,应该除数和被除数是浮点型才可以。即c=(double)a++/--b;就可以了。

回答3:

因为a和b都是整型,所以c的值也是整数