首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阵列现在感觉像一个混合的袋子?这里到底发生了什么

阵列现在感觉像一个混合的袋子?这里到底发生了什么
EN

Stack Overflow用户
提问于 2020-04-16 07:21:55
回答 2查看 266关注 0票数 2
代码语言:javascript
复制
#include<stdio.h>

int main(){
    int array[10] = {3,0,8,1,12,8,9,2,13,10};
    int x,y,z;
    x =++array[2];
    y =array[2]++;
    z =array[x++];
    printf("%d\t%d\t%d\n",x,y,z);
    return(0);
}

我猜这个输出将是9,9,1或something(Actually不确定)

但这件事在被强暴时爆发了

10,9,10

PS:原谅我,我是个菜鸟。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-16 09:13:25

制作表格是有用的:

代码语言:javascript
复制
statement        x   y   z   array[2]
-------------------------------------
                 ?   ?   ?    8
x = ++array[2]   9   ?   ?    9
y = array[2]++   9   9   ?   10
z = array[x++]  10   9  10   10

顺便说一句,在我自己的代码中,我从不使用增量前后操作的值。这使得逻辑更难理解。下面是一个在表达式中没有副作用的重写版本:

代码语言:javascript
复制
#include <stdio.h>

int main(void)
{
    int array[] = {3, 0, 8, 1, 12, 8, 9, 2, 13, 10};
    int x, y, z;

    array[2]++;
    x = array[2];
    y = array[2];
    array[2]++;
    z = array[x];
    x++;
    printf("%d\t%d\t%d\n", x, y, z);
    return 0;
}
票数 1
EN

Stack Overflow用户

发布于 2020-04-16 07:35:59

以下是一步一步的值:

代码语言:javascript
复制
int array[10] = {3,0,8,1,12,8,9,2,13,10};
int x,y,z;

x = ++array[2]; // array[2] becomes 9 before assignment to x
    // x:9  array[2]:9

y = array[2]++; // array[2] becomes 10 after assignment to y
    // x:9 y:9  array[2]:10

z = array[x++]; // z becomes array[x] (last element)
    // x:10 y:9 z:10
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61244734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档