c++ %运算符
前言
运算符%俗称“取余”或“取模”运算符,负责计算两个整数相除所得的余数。
在除法运算中,如果两个运算对象的符号相同则商为正(如果不为0的话),否则商为负。C++语言的早期版本允许结果为负值的商向上或向下取整,C++11新标准则规定商一律向0取整(即直接切除小数部分)。
根据取余运算的定义,如果m和n是整数且n非0,则表达式(m/n)*n+m%n
的求值结果与m相等。隐含的意思是,如果m%n
不等于0,则它的符号和m相同。C++语言的早期版本允许m%n
的符号匹配n的符号,而且商向负无穷一侧取整,这一方式在新标准中已经被禁止使用了。除了-m导致溢出的特殊情况,其他时候(-m)/n和m/(-n)都等于-(m/n),m%(-n)等于m%n,(-m)%n等于-(m%n)。
综上,有两个要点,其一:商一律向0取整;其二:m%n
结果的正负和m相同。文章来源:https://www.toymoban.com/news/detail-826284.html
实践
写算法题时要求取模。即若结果为 y,输出为 k,则保证存在整数 t,满足y=k+t(10^9+7)且 0<k<10^9+7
。要求取模的结果为正。文章来源地址https://www.toymoban.com/news/detail-826284.html
res%=MOD; // 仅有这一条语句不行,如res=-21,MOD=5,结果为-1
res=(res+MOD)%MOD; // 仅有这一条语句也不行,如res=-21,MOD=5,结果为-1
// 同时要有以上两条语句,且顺序不可颠倒,如此就有 res=-21 -> res=-1 -> res=4,方可满足-21=4+(-5)*5
到了这里,关于c++ %运算符的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!