C语言的编译遵循贪心读法,也就是说,对于有歧义的符号,编译器会一直读取,直到它的意思完结;
a---b,是a-- -b还是a- --b,根据贪心法则,读到第二个减号,意思完结,所以是a-- -b;
void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CString str1;
int a = 9;
int b = 2;
int c = a --- b;
str1.Format("%d", c);
pDC->TextOut(50, 50, str1);
str1.Format("%d", a);
pDC->TextOut(50, 80, str1);
}
最初a等于9,b等于2;
c = a --- b,执行的是 c = (a--) - b;
C语言中 a-- 是a自身减1,是先完成表达式运算,再把a减1;
那么就是 c = 9 -2 = 7;
输出c的值为7;再输出a的值,a已经减1,输出8;