首页 > C/C++语言, 编程语言 > C 语言整型谜题

C 语言整型谜题

2009年11月29日 发表评论 阅读评论 2,110 人阅读    

如题,此篇文章是描述C语言中的整数谜题。

假定机器字长是32位的,用2的补码表示整数。对以下C表达式,请问它们在所有情况下都正确吗?如果不是,请给出反例。

初始化:

int x = foo();
int y = bar();
unsigned ux = x;
unsigned uy = y;

1. 若x < 0, 则x * 2 < 0

2. ux >= 0

3. 若x & 7 == 7, 则(x << 30) < 0

4. ux > -1

5. 若x > y, 则-x < -y

6. x * x >= 0

7. 若x > 0 && y > 0, 则x + y > 0

8. 若x >= 0, 则-x <= 0

9. 若x <= 0, 则-x >= 0

答案如下:

1. 错。当x = INT_MIN

2. 正确。

3. 正确。

4. 错。-1被转换成UINT_MAX

5. 错。当x = -1, y = INT_MIN

6. 错。当x = 65535

7. 错。INT_MAX 和 INT_MAX

8. 正确。

9. 错。INT_MIN





分类: C/C++语言, 编程语言 标签: ,
好烂啊有点差凑合看看还不错很精彩 (7 人打了分,平均分: 4.86 )
Loading ... Loading ...
  1. neuron
    2009年11月29日10:23 | #1

    6
    #include

    int main()
    {
    int x = 0xFFFF;
    std::cout << x * x << std::endl;
    std::cout <= 0) << std::endl;
    return 0;
    }

  2. neuron
    2009年11月29日10:24 | #2

    @neuron
    囧…
    #include <iostream>

  3. joe
    2009年11月29日15:59 | #3

    @neuron
    不好意思,第6题错了。谢谢指正!

  4. 2011年10月31日19:19 | #4

    《深入理解计算机系统》中有类似或者相同的题目,这本书是以程序员的角度来讲解计算机组成,系统设计的东西!

  1. 2009年12月2日21:26 | #1

无觅相关文章插件,快速提升流量