为什么a和b在以下代码中共享相同的地址?

时间:2013-09-10 18:55:07

标签: c++ c char

为什么静态断言在这种情况下会发生火灾?由于64位地址线和char是单字节,它们是否在同一地址?

  #include <type_traits>

    int main()
    {
      char a='a';
      char b='b';

      static_assert ( &a == &b, " ERROR: Same addr"  ) ;
    }
    main.cpp: In function ‘int main()’:
    main.cpp:9:3: error: static assertion failed:  ERROR: Same addr

2 个答案:

答案 0 :(得分:6)

你有倒退的逻辑。条件为static_assert时触发false,即两个对象的地址不同。

答案 1 :(得分:3)

ab位于不同的地址。你有断言的错误方法。您的断言失败,因为两个地址它们相同。尝试

static_assert ( &a != &b, " ERROR: Same addr"  ) ;