1不等于0但代码在c

时间:2016-07-22 07:44:21

标签: c undefined-behavior

此代码打印"等于"和" 1 0"。

为什么即使1 != 0发生了这种情况?

if(2/2 == 2/2.0) 
    printf("equal \n");

printf("%d  %d", 2/2, 2/2.0);

1 个答案:

答案 0 :(得分:5)

2/2.0的结果是 double 类型。但是您使用%d来打印它,这是未定义的行为。请改用%lf来打印 double 。这就是为什么你得到0这可能是调用未定义行为的结果。