K******g 发帖数: 1870 | 1 int test( int x )
{
return ((x - 1) & x) == 0;
}
问题是:以上code会有portability的问题吗?如果有,请解释。 |
e*****3 发帖数: 610 | 2 如果有的话,就是LEFT TO RIGHT或者RIGHT TO LEFT EVALUATION的问题,
DEPENDS ON COMPILER。这两种EVALUATION的结果会很不一样。
我不做C++,请大牛指教。
【在 K******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : int test( int x ) : { : return ((x - 1) & x) == 0; : } : 问题是:以上code会有portability的问题吗?如果有,请解释。
|
K******g 发帖数: 1870 | 3 怎么会不同了?反正都要将两个数相与
【在 e*****3 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 如果有的话,就是LEFT TO RIGHT或者RIGHT TO LEFT EVALUATION的问题, : DEPENDS ON COMPILER。这两种EVALUATION的结果会很不一样。 : 我不做C++,请大牛指教。
|
K******g 发帖数: 1870 | 4 这道题是不是负数不work?
【在 K******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : int test( int x ) : { : return ((x - 1) & x) == 0; : } : 问题是:以上code会有portability的问题吗?如果有,请解释。
|
e*****3 发帖数: 610 | 5 Assume x = 5, with left to right evaluation, it's 5 & 4, with right to left
evaluation, it is 5 & 5. I guess.
【在 K******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 怎么会不同了?反正都要将两个数相与
|
B******5 发帖数: 4676 | 6 为什么?这个又不是x--
left
【在 e*****3 的大作中提到】![](/moin_static193/solenoid/img/up.png) : Assume x = 5, with left to right evaluation, it's 5 & 4, with right to left : evaluation, it is 5 & 5. I guess.
|
e*****3 发帖数: 610 | 7 SORRY,看错题了。
那有可能是数字在不同系统中的表达方式吗?
比如 假设X为零,减去一之后在大部分系统中表示为0XFFFF,但是会不会有系统有其
它表达方式?C SPEC里限制吗?
【在 B******5 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 为什么?这个又不是x-- : : left
|
t****t 发帖数: 6806 | 8 C/C++ does not limit number representation of integral types to 2's
complement.
【在 e*****3 的大作中提到】![](/moin_static193/solenoid/img/up.png) : SORRY,看错题了。 : 那有可能是数字在不同系统中的表达方式吗? : 比如 假设X为零,减去一之后在大部分系统中表示为0XFFFF,但是会不会有系统有其 : 它表达方式?C SPEC里限制吗?
|