#include <stdio.h>
int main(void)
{
int i = 0;
i = i++ + ++i;
printf("%d\n", i); // 3
i = 1;
i = (i++);
printf("%d\n", i); // 2 Should be 1, no ?
volatile int u = 0;
u = u++ + ++u;
printf("%d\n", u); // 1
u = 1;
u = (u++);
printf("%d\n", u); // 2 Should also be one, no ?
register int v = 0;
v = v++ + ++v;
printf("%d\n", v); // 3 (Should be the …Run Code Online (Sandbox Code Playgroud) c increment operator-precedence undefined-behavior sequence-points
我是Java新手,有CI的背景正在通过Khalid Moughal的书.在页126上他举了一个例子
int i = 10;
int k = ++i + --i; // ((++i) + (--i)).
Run Code Online (Sandbox Code Playgroud)
这显然违反了C语言中的序列点概念,它表示在相同的序列点中不能多次更改变量的值.我的问题是,相同的序列点规则是否适用于java?他可能只是为了解释前缀一元运算符的概念及其副作用而采用这个例子,但这样一个明显违反语言非常基本规则的例子并不像Khalid Moughal那样出名.
所以请确认一下.
希望你们人们把它带入正确的精神.
谢谢,
Mawia