这段代码中〜0的含义是什么?
有人可以为我分析这段代码吗?
unsigned int Order(unsigned int maxPeriod = ~0) const
{
Point r = *this;
unsigned int n = 0;
while( r.x_ != 0 && r.y_ != 0 )
{
++n;
r += *this;
if ( n > maxPeriod ) break;
}
return n;
}
Run Code Online (Sandbox Code Playgroud)
JSB*_*ոգչ 25
~0是按位补码0,是一个填充了所有位的数字.对于无符号的32位int,那就是0xffffffff.确切的fs 数取决于您分配~0给的值的大小.
sta*_*ker 17
它是一个补码,它反转所有位.
~ 0101 => 1010
~ 0000 => 1111
~ 1111 => 0000
Run Code Online (Sandbox Code Playgroud)
正如其他人所提到的,~运算符执行按位补码.但是,对标志值执行操作的结果不是由标准定义的.
特别是,价值~0不必是-1,这可能是预期的价值.将默认参数设置为
unsigned int maxPeriod = -1
Run Code Online (Sandbox Code Playgroud)
将maxPeriod包含最高可能值(签名为无符号转换定义为赋值模2**n,其中n是给定无符号类型的特征数(表示的位数)).
另请注意,默认参数在C中无效.
| 归档时间: |
|
| 查看次数: |
9753 次 |
| 最近记录: |