假设n和p是C程序中的无符号整数变量。我们希望把p设为 N C 3. .如果n较大,以下哪项陈述最有可能正确设置p?
null
(A) p=n*(n-1)*(n-2)/6; (B) p=n*(n-1)/2*(n-2)/3; (C) p=n*(n-1)/3*(n-2)/2; (D) p=n*(n-1)*(n-2)/6.0; 答复: (B) 说明: 由于n较大,乘积n*(n-1)*(n-2)将超出范围(溢出),并返回与预期不同的值。因此,选择 (A) 和 (D) 被淘汰了。 因此,我们考虑一个较短的产品n*(n-1)。 n*(n-1)总是一个偶数。所以选项B中的子表达式“n*(n-1)/2”总是会产生一个整数,这意味着在这个子表达式中没有精度损失。当我们考虑“n*(n-1)/2*(n-2)”时,它总是给出一个3的倍数,因此用3除以它不会有任何损失。 这个问题的小测验
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END