DISCLAIMER: This is not a real-world example. It is just a theoretical question of how these languages work.

C/C++、C#和Java在post&增量前操作符?

这就是我从VC++10、Java 1.6和C#4中得到的

int a = 2;
int b = a++ + a++;
int c = ++a + a++ + a++;

      +-----+------+------+----+
      |  C  | C++  | Java | C# |
+-----+-----+------+------+----+
| a   |  7  |  7   |   7  |  7 |
+-----+-----+------+------+----+
| b   |  4  |  4   |   5  | 5  |
+-----+-----+------+------+----+
| c   | 15  |  15  |  16  | 16 |
+-----+-----+------+------+----+

推荐答案

Java和C#从左到右对表达式求值,其副作用是显而易见的.

在C++中,未指定子表达式的判断顺序,并且在没有中间序列点的情况下修改相同的对象两次是未定义的行为.

C++相关问答推荐

生成C代码时自动复制/生成' tmwtypes.h '依赖项

修改pGM使用指针填充2-D数组但不起作用

C指针地址和转换

与unions 的未定义行为

如何在C中通过套接字自定义数据类型读取原始变量?

拥有3x3二维数组并访问数组[1][3]等同于数组[2][0]?

为什么cudaFree不需要数据 struct 的地址?

CSAPP微型shell 实验室:卡在sigprocmask

将数据移动到寄存器时出现分段故障

VS代码';S C/C++扩展称C23真关键字和假关键字未定义

进程在写入管道时挂起

关于";*(++p)->;t";、&++p->;t";和&q;++*p->;t";的问题

#定义SSL_CONNECTION_NO_CONST

为什么用非常数指针变量改变常量静态变量时会出现分段错误?

C语言中神秘的(我认为)缓冲区溢出

Printf()在C中打印终止字符之后的字符,我该如何解决这个问题?

pthread_create的用法

被调用方函数内部的C-Struct变量,它是指针还是无关紧要

在Ubuntu上使用库部署C程序的最佳实践

Ubuntu编译:C中的文件格式无法识别错误