为什么表达式 (a++) += (a++); 错误,而 (++a) += (a++); 正确
人气:108 ℃ 时间:2020-02-06 08:18:42
解答
其实这是一个很深邃的问题.在c/c++中规定:左操作数必须是一个左值.
a++在c/c++中的实现是:
{
int tmp=a;
a=a+1;
return tmp;
}
这里的tmp为一个临时变量,是一个右值,对它赋值毫无意义.
++a在c/c++中的实现是:
{
a=a+1;
return a;
}
a为一个左值,可以赋值.
就效率而言++a应比a++的效率要高,因为a++要产生临时变量.
建议lz在网上找一些左值和右值的知识来看看,这也不是一两句话讲清的,理解这个对你有很大的帮助.
推荐
- 1.能正确表示a和b同时为正或同时为负的逻辑表达式是?A:(a>=0&&b>=0)&&(a
- 下面表达式中错误的是 ( ).A.b=a++B.a/=2C.a+b=5D.a=5,b=6,c=7 下列选项中正确的语句是( )
- C语言表达式的正确性问题.如何判断?
- 题目:A是奇数为真,偶为假.则表达式A%2==1为什么是错的
- please,read,roses,book,I,that,can,about怎样连词成句
- 一个长方体通风管,每根8米,横截面是边长为50厘米的正方形.做一根这样的通风管需要多少平方米的铁皮?
- 如图,已知菱形ABCD的周长为16厘米,∠ABC等于120°,求对角线BD和AC的长
- 在温柔舒适的花园中,兰草恪守本分,娴静恬淡,默默奉献,丰富人间香与美,从不张扬;在荒中僻谷,兰草仍然生机勃勃,奋发向上,散发出缕缕清香,不为沦落深山而自弃;在沧海横流,洪水滔天的绝境中,兰草(
猜你喜欢