INT_MIN%-1是否产生未定义的行为?

gcc生成浮动代码,为以下代码引发SIGFPE:

#include <limits.h>
int x = -1;
int main()
{
    return INT_MIN % x;
}

然而,我可以在标准中找不到该代码调用未定义或实现定义的行为的语句。据我所知,需要返回0.这是gcc中的一个错误还是我缺少一些特殊的异常标准?

你可能是对的,这可以被认为是实际标准中的错误。 current draft解决了这个问题:

If the quotient a/b is representable,
the expression (a/b)*b + a%b shall
equal a; otherwise, the behavior of
both a/b and a%b is undefined.

翻译自:https://stackoverflow.com/questions/5925045/does-int-min-1-produce-undefined-behavior

转载注明原文:INT_MIN%-1是否产生未定义的行为?