当y为0时,模运算符x%y的语义是什么?

ein*_*ica 1 c operators modulus modular-arithmetic semantics

假设我尝试执行以下操作:

y = 0;
z = x % y;
Run Code Online (Sandbox Code Playgroud)

是这个明确定义,平台相关或未定义的语义?我主要是关于C/C++的问题,但我对各种编程/脚本语言(Java,perl,sh等)的答案感兴趣

我问的部分是因为有不同的 可能方法来定义模运算:作为除法运算的剩余部分 ; 作为商群大小

sim*_*onc 6

C的行为未定义.

C11 6.5.5乘法运算符,p5

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

  • +1,或许应该补充说它只在C11中明确说明,在C99中这只是隐含的. (2认同)