繁体   English   中英

语法范围

[英]Range for syntax

当我写这样的东西:

int data[] = {10,44,56,78,8};      
int i = 0;
for(int element : data)
   ...

for由编译器在常规再翻译for for只是一个语法糖?

该标准将基于范围的for语句定义for等效于:

{
  auto && __range = range-init;
  for ( auto __begin = begin-expr,
             __end = end-expr;
        __begin != __end;
        ++__begin ) {
    for-range-declaration = *__begin;
    statement
  }
}

在您的情况下, range-init(data)begin-expr__rangeend-expr__range + 5for-range-declarationint elementstatement... 也就是说,如果我们替换所有这些,则您的for循环等效于:

{
  auto && __range = (data);
  for ( auto __begin = __range,
             __end = __range + 5;
        __begin != __end;
        ++__begin ) {
    int element = *__begin;
    ...
  }
}

此转换是否实际上由编译器完成是实现细节。 您唯一可以保证的是您的代码将等同于上述代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM