当没有设置优化标志时,此代码可以正常工作:
#include <cstdio>
int main(){
float *ptr = ({float var[10] = {1,2,3,4,5,6,7,8,9,10}; var;});
float *ptr1 = ({float var[10]; for(int i_=0;i_<10;i_++)var[i_]=i_+1; var;});
float *ptr2 = ({float var[10]; var[4]=5; var;});
printf("\n value = %f %f %f",ptr[4],ptr1[4],ptr2[4]);
}
它5 5 5
按预期返回。但是当设置了优化标志时,它会返回5 0 5
.
ptr1
有问题与循环有关。为什么?也许它是一个错误?
我正在使用最新的 4.8.0,经过测试的 x64、x86 以及其他版本。所有相同的行为。