在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) 假设这样的情况:
int a = (--t)*(t-2);
int b = (t/=a)+t;
Run Code Online (Sandbox Code Playgroud)
在C和C++中,这是未定义的行为,如下所述:未定义的行为和序列点
但是,这种情况如何:
我正在修复一个Javascript - > C++端口,现在很多地方都没有注意到它.我想知道其他语言通常如何处理这个问题...保留命令undefined以某种方式特定于C和C++,不是吗?
考虑:
int m = 2, n;
n = m++ + (++m);
Run Code Online (Sandbox Code Playgroud)
在C输出是:
m = 4, n = 4;
Run Code Online (Sandbox Code Playgroud)
在Java中输出是:
m = 4, n = 5;
Run Code Online (Sandbox Code Playgroud)
这是怎么发生的?
我的朋友给我发了个笑话:
问: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)