C语言a---b

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);
}

C语言a---b_第1张图片

最初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;

你可能感兴趣的:(VC++,c语言,开发语言,贪心)