为什么为什么为什么在C语言中....

为什么在C语言中 当除号的左右两边都是整数时候,商也只有整数部分呢?
5/3 = 1 2/3 =0

应为C语言就是这样规定的,int类型的数相除只能得到int类型的数,只要其中一个是double的话那结果就是double。不过在js中因为默认都是double,所以2/3的话结果是小数。

C语言中,整数相除是整除。
你要这么写
double r = 2/(double)3;
或者
double r = 2/3.0;

/ 是除运算,你是知道的。但C语言中根据运行的变量或常量确认运行结果的类型。两个 int 计算的结果还是 int,所以将计算后的小数位舍去了,就得到你提供的结果。

double d=2.0/3就行了

补充一点,C++11 规定,取整运算向0方向舍入,即正结果往小了取,负数结果往大了取。

因为这是C的语法啊,int型和int型相除,还是得到int型,如果是与double型相除的话,就是得到double型,建议多看看C的基础哈

我觉的可以强制转换成double来算比较好,int除法除完了就还是int 啊

因为在C语言中两个int型的运算,只能得到int型,除非你进行格式转化