Saturday, February 11, 2012

計算機概論-C Program左值(l-value)與右值(r-value)

#include
main()
{
int x=1,y=2,z=3;
x+=y+++--z;
printf("%d %d %d\n",x,y,z);
}

想法:
x+=y+++--z;
--z會先算,因為--在z前面,此時z=3-1=2;左值(l-value)與右值(r-value)都是2;
y++這邊是很傳統的左值(l-value)與右值(r-value)問題,
右值是2,左值是3,
所x+=2(右值)+2(右值), x是1+4=5左值也是5;
所以答案是5,3(左值),2(左值)



答案x=5,y=3,z=2

No comments:

熱門必看