1不等于0但代码在c中表示相等

hav*_*ada -4 c undefined-behavior

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

为什么会发生这种情况1 != 0呢?

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

printf("%d  %d", 2/2, 2/2.0);
Run Code Online (Sandbox Code Playgroud)

P.P*_*.P. 5

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