除零错误?

dra*_*war 0 c logical-operators

我试过运行这段代码:

int x = 0;
double y = 1/2;
if (y <= x || y/x < 1)
y++;
printf("%.2f", y);
Run Code Online (Sandbox Code Playgroud)

输出是1.00,这对我来说有点令人惊讶.我认为第一个表达式(y <= x)是假的,因为这是||运算符,C也必须计算第二个表达式(y/x < 1),它涉及除零.但为什么没有出现任何错误?

Nik*_* C. 5

y 实际上是0:

double y = 1/2;
Run Code Online (Sandbox Code Playgroud)

以上是整数除法,因此结果是0.你想要的是:

double y = 1.0/2.0;
Run Code Online (Sandbox Code Playgroud)

  • 或者可能是`y = 0.5;`:-) (2认同)