为什么C在double的计算中假设整数类型?

Ben*_*enB 1 c

我试图在GNU情节中绘制一个函数,我的情节与文章中的情节不同.在阅读GNU将函数解释为C时,我尝试用C编写函数.同样的问题.

最终我发现这个问题可能会出现这个问题:

#include <stdio.h>
#include <stdlib.h>

int main()
{
double p = 1.0;
double pMinusOneHalf1 = p - (1.0/2.0);
double pMinusOneHalf2 = p - (1/2);

printf("\nFirst = %lf \n Second = %lf\n\n", pMinusOneHalf1, pMinusOneHalf2);

return 0;
}
Run Code Online (Sandbox Code Playgroud)

它给出了输出

First = 0.500000 
Second = 1.000000
Run Code Online (Sandbox Code Playgroud)

只是想知道是否有人解释为什么C将假设"1"和"2"作为DOUBLE表达式中的INT.

对于人们来说似乎很容易被抓住.gcc的-Wall选项甚至没有评论它.

Meh*_*dad 9

/并不特别在意它的结果是从a中减去的double.

它只知道它给了两个整数,所以它给你一个整数.

  • 我还没有把`/`作为一个独立的函数. (2认同)