C ++ 11:缩小范围

时间:2014-01-25 15:55:05

标签: c++ c++11 narrowing list-initialization

我在PDF中阅读了以下段落:http://www.stroustrup.com/what-is-2009.pdf

  
    

缩小

         

也许您注意到我一直使用{}初始化。也许,你还以为我是在丑化代码并被一个新颖的功能所超越?当然,这种情况会发生,但我认为这不是这种情况。考虑:

int x1 = 64000;

int x2 { 64000 };
         

我们可以就这两个定义的美学进行友好的讨论,你甚至可以指出{}版本需要比= 1更多的击键。但是,这两种形式之间存在一个显着差异,这使我选择{}。 {}版本不允许缩小,我没有告诉您这两个定义是为具有16位整数的机器编写的。这意味着x1的值可能非常令人惊讶,而x2的定义会导致编译时错误。

  

但是当我尝试使用'Ideone.com'c ++ 11在线编译器编译以下内容时,它显示了成功

#include <iostream>

using namespace std;

int main() {
  // your code goes here
  short i {999999};
  std::cout<<"value of i = " << i;
  return 0;
}

我原本期待编译错误。任何形式的帮助将不胜感激。

0 个答案:

没有答案