我发现表达式除以0不会报错。如果有人能告诉我原因,我将不胜感激。这是代码
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
int main() {
int result = 3/10*(7/0);
printf("%d\n", result);
//printf("%" PRIu64, result);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
环境:
我发现表达式除以0不会报错。如果有人能告诉我原因,我将不胜感激。
就 C 语言规范而言,除以零会产生未定义的行为。不要求在编译时或运行时诊断情况,也不要求任何特定结果。
但事实上,您的编译器确实通过发出警告来诊断它。使用 gcc,如果您想确保不能忽略该警告,则启用-Werror将警告转换为错误,或者-Werror=div-by-zero如果您想对此更有选择性,则启用。
我已经使用 gdb 来调试程序,我发现编译器会优化表达式(我的猜测)。
有道理。
所以我怀疑这是 gcc 中的一个错误。
没有。除以零是程序中的一个错误。gcc 对此所做的可能不是您所期望的,但这并不会使 gcc 出现错误。
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |