gpt4 book ai didi

c++ - 语法范围

转载 作者:行者123 更新时间:2023-11-30 00:37:01 25 4
gpt4 key购买 nike

当我写这样的东西时:

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

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__range , end-expr__range + 5 , for-range-declarationint elementstatement... .也就是说,如果我们替换所有这些,您的 for循环相当于:

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

这个翻译是否真的由编译器完成是一个实现细节。您唯一可以保证的是您的代码将等同于上述代码。

关于c++ - 语法范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14379741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com