为什么表达式 (a++) += (a++); 错误,而 (++a) += (a++); 正确
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/28 15:34:37
为什么表达式 (a++) += (a++); 错误,而 (++a) += (a++); 正确
其实这是一个很深邃的问题.在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在网上找一些左值和右值的知识来看看,这也不是一两句话讲清的,理解这个对你有很大的帮助.
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在网上找一些左值和右值的知识来看看,这也不是一两句话讲清的,理解这个对你有很大的帮助.
为什么表达式 (a++) += (a++); 错误,而 (++a) += (a++); 正确
(b=4)*(a=3)表达式正确否?
根据声明int a[10],*p=a;,下列表达式错误的是______.
a=-1,a+=(a++)-a表达式的值?
a+b/a+b=0 为什么是错误的?
7.要使指针变量p指向1维数组A的第一个元素,正确的赋值表达式是p=A 或 p=&A[0]()(2.00分) 错误 正确
已知集合A,B军事全集U的子集,且A⊆ B,为什么(CuB)∩A=∅正确?A∪(CuB)=U错误
表达式a=*p++中,p为一指针,该表达式运算的正确顺序应该是?
已经定义int a;则执行表达式a=11,a+1,a++后a的值是?为什么?
设int a;,则表达式a=2,4,a+1的值是( ) 为什么
如有定义float a[10]; 可定义表达式a=a+1.为什么不对?
24.若已定义:char a=’A’;int b=5;下列表达式错误的是() A.a==b B.a