为什么printf("%d",1/0.0)的输出为0?

0 c floating-point printf divide-by-zero undefined-behavior

我使用的是代码块.

当代码是:

printf("%d",1/0);
Run Code Online (Sandbox Code Playgroud)

程序无法运行,出现错误.但是当我写这个:

printf("%d",1/0.0);
Run Code Online (Sandbox Code Playgroud)

程序可以运行,输出是0.我想知道为什么.

Yu *_*Hao 5

1/0或者1/0.0都是未定义的行为:

C11§6.5.5乘法运算符

/运算符的结果是第一个操作数除以第二个操作数的商; %运算符的结果是余数.在这两个操作中,如果第二个操作数的值为零,则行为未定义.

  • 实际上,由于我认为浮点1/0总是给出无穷大,所以我将在这个问题上使用其中一个答案.但你绝对正确,它是_BB.一旦出现这种情况,您使用的格式说明符并不重要,损坏已完成:-) +1.我受过教育. (2认同)