小编kan*_*wei的帖子

i ==(i = 2)的结果是什么?

运行以下代码:

// In Java, output #####
public static void main(String[] args) {
    int i = 1;

    if(i == (i = 2)) {
        System.out.println("@@@@@");
    } else {
        System.out.println("#####");
    }
}
Run Code Online (Sandbox Code Playgroud)

但:

// In C, output @@@@@?I did test on Clion(GCC 7.3) and Visual Studio 2017
int main(int argc, char *argv[]) {
    int i = 1;

    if(i == (i = 2)) {
        printf("@@@@@");
    } else {
        printf("#####");
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

提出这个问题的动机来自以下代码:

// The code is from the JDK 11 - java.util.concurrent.atomic.AtomicInteger …
Run Code Online (Sandbox Code Playgroud)

c java side-effects variable-assignment language-lawyer

44
推荐指数
3
解决办法
3068
查看次数

为什么在一个函数中声明的union类型在另一个函数中使用它无效?

当我阅读ISO/IEC 9899:1999(见:6.5.2.3)时,我看到了一个这样的例子(强调我的):

以下不是有效的片段(因为联合类型在函数中不可见f):

struct t1 { int m; };
struct t2 { int m; };
int f(struct t1 * p1, struct t2 * p2)
{
      if (p1->m < 0)
            p2->m = -p2->m;
      return p1->m;
}
int g()
{
      union {
            struct t1 s1;
            struct t2 s2;
      } u;
      /* ... */
      return f(&u.s1, &u.s2);
}
Run Code Online (Sandbox Code Playgroud)

我测试时发现没有错误和警告.

我的问题是:为什么这个片段无效?

c scope function unions

38
推荐指数
2
解决办法
2333
查看次数

Java"实现接口"?

我知道"实现接口"的意思是:一个类实现一个接口.现在我在Android Studio中遇到了一个谜题(在IntelliJ IDEA中,有类似的疑问.):请注意以下图片:当Child实现接口,并覆盖方法fun2时,左侧会有一个特定的图标.但是父不执行界面,为什么会出现相同的图标?

这里有更大的图片

java intellij-idea android-studio

5
推荐指数
1
解决办法
755
查看次数