我正在寫一些Win32程序。我遇到了一個問題。 我定義點的陣列,就像這樣:如何初始化點陣列?
POINT points[3];
,現在我想初始化它,我知道這是非法的
POINT points[3] = { (295,295),(200,200),(400,500) };
,所以我需要的正確方法。
我正在寫一些Win32程序。我遇到了一個問題。 我定義點的陣列,就像這樣:如何初始化點陣列?
POINT points[3];
,現在我想初始化它,我知道這是非法的
POINT points[3] = { (295,295),(200,200),(400,500) };
,所以我需要的正確方法。
你可以這樣做只是爲
POINT points[3] = { 295, 295, 200, 200, 400, 500 };
,但一個更安全的事情會是這樣
POINT points[3] = { { 295, 295 }, { 200, 200 }, { 400, 500 } };
的有趣的是,你最初寫的東西不是非法的(你從哪裏得到這個想法?)。您在初始化程序中使用的()
將導致內部,
被解釋爲逗號運算符。例如,表達式(400, 500)
評估爲500
。這意味着,原來的初始值設定爲
POINT points[3] = { 295, 200, 500 };
這又相當於
POINT points[3] = { { 295, 200 }, { 500, 0 }, { 0, 0 } };
它不會做你想要它做的事情其實治療,但它肯定是不違法的。
很好的答案。我很抱歉我的表情不嚴謹。 – user3116182
你能告訴我更多關於內部逗號運算符的信息嗎,比如它的源代碼。 @AndreyT – user3116182
@ user3116182:原始代碼案例中的逗號運算符是內置運算符,是核心C++語言的一部分。它沒有「源代碼」。網上有很多關於它的信息(http://en.wikipedia.org/wiki/Comma_operator)。 – AnT
按照評論:
POINT points[] = {{295,295}, {200,200}, {400,500}};
嘗試POINT點[3] = {{295,295},{200,200},{400,500}}; – Matt
你並不真的需要這3個。只要讓計算機爲你做點數。 – cup
謝謝你,你的方式是正確的。 @Matt – user3116182