Python 3.1 (r31:73574, Jun 26 2009, 20:21:35) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 2/2
1.0
Run Code Online (Sandbox Code Playgroud)
这是有意的吗?我强烈记得早期版本的回归int/int=int?我应该怎么做,是否有新的分区运算符或者我必须总是演员?
在下面的C++代码中,我保证在//更多代码执行后调用~obj()析构函数?或者如果编译器检测到它没有被使用,是否允许编译器更早地销毁它?
{
SomeObject obj;
... // More code
}
Run Code Online (Sandbox Code Playgroud)
我想使用这种技术来节省我必须记住在块的末尾重置一个标志,但我需要为整个块保持设置的标志.
假设我有一个对象列表,我想按项目DateModified属性对其进行排序.为什么我不能像这样使用委托?如果不是如下所示,我应该如何按DateModified对它们进行排序:
public string SortByDateModified(List<CartItem> items)
{
items.Sort(new Func<CartItem, CartItem, bool>((itemA, itemB) =>
{
return itemA.DateModified < itemB.DateModified;
}));
}
Run Code Online (Sandbox Code Playgroud) 我有一些低级代码我写,我需要使用对象为挥发性的问题,但它不一定是这样,我想声明的类型为挥发性(可重用的原因).但是,我可以定义指向结构的限定变体的指针,如以下段中所述.
struct x {
int bar;
};
struct x foobar;
...
volatile struct x *foo = &foobar;
Run Code Online (Sandbox Code Playgroud)
现在foo实际上是指向该类型对象的指针:
volatile struct x {
volatile int x;
};
Run Code Online (Sandbox Code Playgroud)
因为volatile适用于所有struct成员.现在我的问题是当一个对象包含指向另一个对象的指针时,如何应用波动性?
struct x {
struct y *bar;
};
Run Code Online (Sandbox Code Playgroud)
指向x的volatile实例的指针然后将其视为:
volatile struct x {
struct y * volatile bar;
};
Run Code Online (Sandbox Code Playgroud)
或作为:
volatile struct x {
volatile struct y * volatile bar;
};
Run Code Online (Sandbox Code Playgroud)
我已经阅读了C标准,对此并不是很清楚,我可以通过多种方式轻松解释这些措辞.
我在C++中遇到了一个真正的大脑scorcher,它从来没有发生在我身上.
问题的关键在于,在调用my(模板)函数时,我定义的参数默认为其值加扰.只有在我使用默认值调用该函数时才会发生这种情况.
我的模板函数声明如下:
template <typename T>
vector2<T> transform(vector2<T> const &vec, matrix4<T> const &m, T z = T(0), T w = T(1));
Run Code Online (Sandbox Code Playgroud)
稍后,在相同的标题中,定义如下:
template <typename T>
inline vector2<T> transform(vector2<T> const &vec, matrix4<T> const &m, T z, T w)
{
vector4<T> res = m * vector4<T>(vec.x, vec.y, z, w);
return vector2<T>(res.x, res.y);
}
Run Code Online (Sandbox Code Playgroud)
现在当我用defaults(transform(vector2<double>(0, 1), view_transform))调用它时,我没有得到我期望的值.进入transformVC++的调试器我看到z并w有"有趣"的值(根据我的经验意味着某些东西没有正确初始化).
示例有趣的值将是:0.0078125000000000000和2.104431116947e-317 #DEN
现在我尝试在C++ FAQ Lite上找到答案,谷歌搜索它; 甚至试图用舒伯特来平息自己,但我不能为我的生活弄清楚.我猜它真的很简单,我怀疑它是某种模板tomfoolery在工作.
有没有办法获得我期望和想要的默认值,为什么它对我这样做?
编辑1:
如果我改变调用所以它使用浮点数代替(transform(vector2<float>(0, 1), view_transform))问题消失了.看起来只有在T=时才会出现double.
编辑2: …
我正在为一个小型游戏引擎开发内存池.
主要用途是作为隔离存储; 池包含特定类型和大小的对象.目前,池可用于存储任何内容,但分配将在特定大小的块中完成.大多数内存需求将立即分配,但如果需要协助调整(几乎固定大小),可以启用"过度增长".
问题是,在考虑内存对齐时,我开始有些偏执.我只习惯8位处理器上的原始内存管理,其中所有内容都是字节对齐的.
我让用户(我)指定所需的块大小,在隔离存储的情况下,它将是我将要存储在其中的对象的大小.
当前的方法是分配一大块内存blocks * (desired_size + header_size)并将对象放入其中,每个块都有一个标头; 对象显然会直接位于此标题后面.
在我的场景中,关于内存对齐,我需要考虑什么?
到目前为止我得出的答案是,只要desired_size表示n字节对齐的数据; 标题由编译器正确对齐和打包以及实际数据,存储在块中的所有内容都将是n字节对齐的.
n是平台所需的任何边界.我目前的目标是x86,但我不想在我的代码中对平台做任何假设.
我使用过的一些资源:
编辑
上传小样本代码,可能有帮助的任何人的困惑,我的未来在这里.
我怎么能得到它所以它会检查字符串中的2位或更多位数?在String上调用匹配项.
s.matches("^[a-zA-Z0-9]{8,}$");
Run Code Online (Sandbox Code Playgroud) 我在理解XNA中的视图矩阵时遇到了一些麻烦.我已经完成了所有其他部分,因为我刚刚学会了所需的数学,我不想使用内置的Matrix函数,而不了解他们先做的事情.
现在我理解了旋转,投影和翻译的基础知识,但我无法理解视图矩阵在XNA中的工作原理.
从我收集的信息来看,视图矩阵应该将"世界"转变为它自己的空间.看似合理,但库中的Matrix.CreateLookAt方法非常令人费解.
我已经建立(通过检查库函数输出的内容)这两段代码产生相同的结果:
Matrix view = Matrix.CreateReflection(new Plane(Vector3.UnitX, 0)) * Matrix.CreateReflection(new Plane(Vector3.UnitZ, 0)) * Matrix.CreateTranslation(Position);
// ..equals this if (Position = (0 0 -5), since LookAt "looks at" but the above just looks straight down Z)..
Matrix blah = Matrix.CreateLookAt(Position, Vector3.Zero, Vector3.UnitY);
Run Code Online (Sandbox Code Playgroud)
为什么要翻转X和Z轴?我认为你应该根据摄像机的旋转来旋转世界,但是在相反的方向,然后在相反的方向上将世界翻转相同的量.
或者视图矩阵根本不用作转换,而只是编码摄像机在世界中的位置和旋转?