相关疑难解决方法(0)

C和Java的逻辑差异

在C中编译并运行此代码

#include <stdio.h>

int main()
{
  int a[] = {10, 20, 30, 40, 50};
  int index = 2;
  int i;

  a[index++] = index = index + 2;
  for(i = 0; i <= 4; i++)
    printf("%d\n", a[i]);
}
Run Code Online (Sandbox Code Playgroud)

输出: 10 20 4 40 50

现在用于Java中的相同逻辑

class Check
{

  public static void main(String[] ar)
  {
    int a[] = {10, 20, 30, 40, 50};
    int index = 2;

    a[index++] = index = index + 2;
    for(int i = 0; i <= 4; i++) …
Run Code Online (Sandbox Code Playgroud)

c c++ java operators

35
推荐指数
1
解决办法
2382
查看次数

语言如何处理复合运算符的副作用?

假设这样的情况:

int a = (--t)*(t-2);
int b = (t/=a)+t;
Run Code Online (Sandbox Code Playgroud)

在C和C++中,这是未定义的行为,如下所述:未定义的行为和序列点

但是,这种情况如何:

  • JavaScript中,
  • Java中,
  • PHP ...
  • C#
  • 那么,还有其他任何有复合算子的语言吗?

我正在修复一个Javascript - > C++端口,现在很多地方都没有注意到它.我想知道其他语言通常如何处理这个问题...保留命令undefined以某种方式特定于C和C++,不是吗?

javascript c c++ programming-languages undefined-behavior

8
推荐指数
1
解决办法
483
查看次数

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

"C - C++"关于后缀/前缀操作排序的笑话

我的朋友给我发了个笑话:

问:C和C++有什么区别?

A.没什么,因为:(C - C++ == 0)

我试图改变秩序并陷入困境.

看看这段代码:

public class Test {
    public static void main(String args[]) {
        int c = 10;         
        System.out.println(c++ - c);
        System.out.println(++c - c);        
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么会回归:

-1
0
Run Code Online (Sandbox Code Playgroud)

我理解postfix和前缀增量.为什么不是这个结果?

0
1
Run Code Online (Sandbox Code Playgroud)

java syntax operator-precedence

-2
推荐指数
1
解决办法
406
查看次数