C++ 中 'x % y != 0' 的机制
Mechanics of 'x % y != 0' in C++
有人可以用 C++ 解释 x % y !=0
的底层机制吗?如果整数除法中没有余数,它的计算结果为 0,如果有任何数量的余数,它的计算结果为 1。我发现这非常有用,但我想了解发生了什么,因为语法对我来说并不直观。
我在一个单独的线程中发现了这个,我没有权限在其中发表评论:
Fast ceiling of an integer division in C / C++
谢谢。
(请原谅任何格式失误;这是我第一次来这里)
表达式的结果是布尔值(通过 "not-equal-to" 二元运算符)。因此,如果模数的结果不为零,则完整表达式结果为 1(真)。如果模数的结果为零,则完整表达式结果为 0(假)
%
是整数余数运算符。
例如:
21 % 7 == 0
22 % 7 == 1
25 % 7 == 4
27 % 7 == 6
28 % 7 == 0
如果整数除法产生非零余数,x % y != 0
为真,否则为假。 x % y
就是余数; x % y != 0
测试余数是否非零。
(注意x % y != 0
也可以写成(x % y) != 0
。)
当你考虑负操作数时,它会稍微复杂一些。
看来你的问题是模运算符 (%)。所以这个运算符所做的是在我们除以两个数字后给你余数。
EX。 5 % 2 = 1
因为当我们在整数除法中取 5/2 时,我们得到 2,但是我们显然有 1 作为余数。另一个例子是 22 % 4 = 2 因为 22/4 = 5 有 2 个余数。
现在我们理解了这一点,我们可以清楚地看到,如果我们得到一个非零数,表达式 x % y != 0
将 return 为真,所以我们有两个互不相除的整数。如果我们认为这是错误的,那么我们会得到两个相互相除的数字。所以你实际上把它倒过来了,因为如果整数除法成功且没有余数 x % y == 0
那么 0 != 0
将为假。
有人可以用 C++ 解释 x % y !=0
的底层机制吗?如果整数除法中没有余数,它的计算结果为 0,如果有任何数量的余数,它的计算结果为 1。我发现这非常有用,但我想了解发生了什么,因为语法对我来说并不直观。
我在一个单独的线程中发现了这个,我没有权限在其中发表评论:
Fast ceiling of an integer division in C / C++
谢谢。
(请原谅任何格式失误;这是我第一次来这里)
表达式的结果是布尔值(通过 "not-equal-to" 二元运算符)。因此,如果模数的结果不为零,则完整表达式结果为 1(真)。如果模数的结果为零,则完整表达式结果为 0(假)
%
是整数余数运算符。
例如:
21 % 7 == 0
22 % 7 == 1
25 % 7 == 4
27 % 7 == 6
28 % 7 == 0
x % y != 0
为真,否则为假。 x % y
就是余数; x % y != 0
测试余数是否非零。
(注意x % y != 0
也可以写成(x % y) != 0
。)
当你考虑负操作数时,它会稍微复杂一些。
看来你的问题是模运算符 (%)。所以这个运算符所做的是在我们除以两个数字后给你余数。
EX。 5 % 2 = 1
因为当我们在整数除法中取 5/2 时,我们得到 2,但是我们显然有 1 作为余数。另一个例子是 22 % 4 = 2 因为 22/4 = 5 有 2 个余数。
现在我们理解了这一点,我们可以清楚地看到,如果我们得到一个非零数,表达式 x % y != 0
将 return 为真,所以我们有两个互不相除的整数。如果我们认为这是错误的,那么我们会得到两个相互相除的数字。所以你实际上把它倒过来了,因为如果整数除法成功且没有余数 x % y == 0
那么 0 != 0
将为假。