我是C的新手。抱歉这个基本问题。
int ArrayIndex = 0;
int intArray[ArrayIndex++] = somevalue;
我读过一本书,说明当执行完全后缀增量/减量时不是一个简单的问题要回答。这本书还模糊地谈到了一个名为sequence points
的概念来回答这个问题。它表示更新值[递增/递减]将发生在前一个和下一个序列点之间。这种序列点的示例是表达式语句的结束。
我的问题是,上述代码片段是否总是将some value
分配给数组索引零并在所有编译器/平台中增加ArrayIndex?是否有可能首先递增ArrayIndex,然后将某个值赋给intArry [1];?
任何人都能解释一下吗?
答案 0 :(得分:2)
我的问题是,上面的代码段是否总是分配一些值 数组索引为零并递增ArrayIndex 编译器/平台?
答案:是的
是否有可能首先递增ArrayIndex somevalue分配给intArry [1];?
答案:如果你使用
int intArray[++ArrayIndex] = somevalue;
这将增加ArrayIndex
,然后将值赋给数组索引1
答案 1 :(得分:2)
++ArrayIndex
增加 ArrayIndex
并评估为ArrayIndex
的新值。
ArrayIndex++
评估ArrayIndex
的旧值,并递增ArrayIndex
。
这应该回答你的问题。 (提示:答案是肯定的)。