|
|
1
11
因为在第一个例子中,
在第二个例子中,
|
|
|
2
2
因为
|
|
|
3
1
不同之处在于使用的运算符是++c和c++ c++将在将该值用于计算之前将其递增 ++c将在计算中使用该值后递增 而且,cdhowie的回答解释得更清楚 |
|
|
4
1
第一个println输出0或-1,第二个输出0或1都未定义。编译器可以先计算左侧或右侧,因此增量在计算右侧时是否生效将取决于编译器(实际上,编译器可以一次又一次地做一件事) 只保证下一次增加 sequence point . 减法不是序列点。 编辑:BAH,当问题被标记为C/C++时,写下答案。 Sequence points don't apply to Java . 我已经留下了答案,以防其他人在考虑C/C++表达式时发现它是有用的。 |
|
|
5
0
因为在一种情况下,增量是在操作之前执行的,而在另一种情况下,增量是在操作之后执行的。
|
|
|
6
0
这就是后缀和前缀增量的区别。 这里有一条很好的消息: http://www.java-samples.com/showtutorial.php?tutorialid=249 “递增运算符(++)和递减运算符(--)有两种类型:前缀和后缀。前缀variety写在变量名(++myAge)之前;后缀variety写在(myAge++)之后。 在一个简单的语句中,使用哪个并不重要,但是在一个复杂的语句中,当您递增(或递减)一个变量,然后将结果赋给另一个变量时,它非常重要。前缀运算符在赋值之前求值,后缀在赋值之后求值。 前缀的语义是这样的:增加值,然后获取它。postfix的语义是不同的:获取值,然后增加原始值。 一开始可能会混淆,但是如果x是一个值为5的整数 整数a=+x; 你已经告诉编译器增加x(使其为6),然后获取该值并将其分配给a。因此,a现在是6,x现在是6。 如果你这样做之后 积分b=x++; 现在您已经告诉编译器获取x(6)中的值并将其分配给b,然后返回并递增x。因此,b现在是6,而x现在是7。下面的清单显示了这两种类型的用法和含义。” |
|
|
7
0
我用这个C++代码 原因很简单。++运算符复制变量,增加值,然后返回复制的值。假设从左到右对运算符求值,它将传递10-10(然后inc C),因此始终为0。但是,在大多数情况下,依赖于顺序是“未定义的行为”,一些编译器(如gcc)会报告一个警告(例如 http://codepad.org/UPBqO38B )
|