小编klv*_*oek的帖子

为什么i ^ = j ^ = i ^ = j不等于*i ^ =*j ^ =*i ^ =*j

在C中,当有变量(假设两者都小于int)时,我们可以使用等式 ij

i^=j^=i^=j
Run Code Online (Sandbox Code Playgroud)

交换两个变量的值.例如,让int i = 3,j = 5; 经过计算i^=j^=i^=j,我有i = 5,j = 3.

但是,如果我使用两个int指针重新执行此操作*i^=*j^=*i^=*j,使用上面的示例,我将拥有i = 0j = 3.


在C.

1

    int i=3, j=5;
    i^=j^=i^=j; // after this i = 5, j=3
Run Code Online (Sandbox Code Playgroud)

2

    int i = 3, j= 5;
    int *pi = &i, *pj = &j;
    *pi^=*pj^=*pi^=*pj; // after this, $pi = 0, *pj = 5
Run Code Online (Sandbox Code Playgroud)

在JavaScript中

    var i=3, j=5;
    i^=j^=i^=j; …
Run Code Online (Sandbox Code Playgroud)

javascript c pointers logical-operators

4
推荐指数
1
解决办法
331
查看次数

标签 统计

c ×1

javascript ×1

logical-operators ×1

pointers ×1