int i,j,a[10]={0}; for(i=0;i<10;i++) { a[i]=i++; } printf("%d",a[2]);
:为什么输出结果是 0 而不是 2
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
恐怖如斯恐怖如斯啊 2024-11-30 09:52关注以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
你的代码片段存在一个问题,导致了输出结果为 0 而非预期结果 2。问题在于你使用了
i++这种复合赋值运算符在数组赋值时。在这个代码中,你尝试将i的值赋给数组a的相应元素,并且同时增加i的值。然而,在 C++ 中,数组元素赋值和i++操作是分开进行的。因此,你的代码实际上并没有将i的当前值(在循环中的值)赋给数组a的元素。正确的做法是先进行赋值操作,然后再增加i的值。以下是修正后的代码片段:
#include <iostream> using namespace std; int main() { int i, j; int a[10] = {0}; // 初始化数组 a 为全零 for (i = 0; i < 10; i++) { // 使用循环来填充数组 a a[i] = i; // 先将 i 的当前值赋给数组元素 a[i],然后再增加 i 的值 } printf("%d", a[2]); // 输出数组 a 的第三个元素(下标为 2)的值 return 0; // 程序结束返回 0 }在修正后的代码中,我将
a[i]=i++更改为a[i]=i以确保将当前循环变量i的值赋给数组a的相应元素。现在循环的第三次迭代中(此时i为 2),a[2]会被赋值为 2,因此最终的输出应该是 2。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报