答案 0 :(得分:5)
以正确的方式使用它:
int a = 10;
a++;
cout << a;
++a;
cout << a;
答案 1 :(得分:1)
#include<iostream.h>
int main()
{
int a=10;
a=a++;
cout<<a;
cout<<"\n";
a=++a;
cout<<a;
cout<<"\n";
a=(a++);
cout<<a;
cout<<"\n";
}
编译时打印
cc1plus: warnings being treated as errors
In function 'int main()':
Line 5: warning: operation on 'a' may be undefined
Line 8: warning: operation on 'a' may be undefined
Line 11: warning: operation on 'a' may be undefined
这是一个警告,指出所使用的操作未定义,如果可能,不应使用。这是因为在C ++中,++
相对于其他表达式的评估顺序没有定义,并且在所有编译器中都不相同。 (一般来说,这并不重要,除了像这样的边缘情况外不是问题)
网站更进一步,将警告视为错误,不会运行代码。
如果您翻译为Java,则打印
10
11
11
正如所料。你的意思是“不起作用”?
行为在Java中定义,但是LucTouraille指出它没有在C ++中定义,所以你不能指望所有编译器都有相同的特定行为。
另一个例子。
int a = 3;
a = a++ * a++;
System.out.println(a); // will always be 12 in Java.
与
相同{
int t1 = a;
a = a + 1;
int t2 = a;
a = a + 1;
a = t1 * t2;
}
答案 2 :(得分:1)
算法的序列:
int a=10;
a=a++;
System.out.println(a);
a=++a;
System.out.println(a);
a=(a++);
System.out.println(a);
如下:
a=++a;
表示在将表达式分配给a之前,a
先递增。因此a = 11
。
a=(a++);
表示可以理解为
b = a;
a++;
a = b;
因此,您收到的值为11
。
答案 3 :(得分:0)
他们都应该工作。 我不确定你的语言是什么。但是,如果你的C / C ++它应该工作。