我正在写一些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