【发布时间】:2015-11-30 12:33:09
【问题描述】:
我有密码
#include <stdio.h>
int main(){
int y [10]; int i = 1;
y[i] = i++;
printf("y0: %d\n", y[0] );
printf("y1: %d\n", y[1] );
printf("y2: %d\n", y[2] );
}
我认为那行
y[i] = i++;
应该作为 y[1] = 1;然后将 i 设置为 2;
但是 y[1] 有一些随机值,并且 y[2] 设置为 1。为什么?
【问题讨论】:
-
++i首先增加i的值,然后返回一个lvalue,所以如果使用i的值,那么它将是新的增加值.i++首先返回一个rvalue,其值为i,即旧值,然后在下一个完整表达式之前的未指定时间递增i。 -
如果它看起来很狡猾,(并且 y[i] = i++; 确实如此),而你只是认为它会起作用,你为什么要使用它?为什么你不把它分开以便你知道它是如何工作的?我不明白你为什么要在这里发布这样的 rubbi.. 代码,而不是采取明显且简单的步骤来修复它。
标签: c arrays variables increment