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),它涉及除零.但为什么没有出现任何错误?
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)