【发布时间】:2014-01-14 10:04:53
【问题描述】:
#include<stdio.h>
int main()
{
int const SIZE=5;
int expr;
double value[SIZE]={2.0,4.0,6.0,8.0,10.0};
expr=1|2|3|4;
printf("%f",value[expr]);
return 0;
}
如何评估上述代码?特别是声明:
expr=1|2|3|4;
【问题讨论】:
-
你知道
|是什么吗? -
value[expr]---> 未定义的行为 -
@StefanoSanfilippo 你是什么意思?超出索引的数组是在 C99 中定义的行为吗?否.. 在 OP 问题
value[expr]中导致超出索引 -
@GrijeshChauhan 哎呀,我以为你在哪里提到
double value[SIZE]部分并使用expr作为一般占位符。是的,我想在 C 语言中有这样一个“特性”会很有趣;)
标签: c bitwise-operators bitwise-or