可以使用 <,>,= 比较双域吗?
Can bifields be compared, using <,>,=?
我正在尝试使用位域来存储一系列用于制作图形三角形的计数器,因为我只需要其中一些值 0、1、2 并且不想浪费内存.代码应该做的是从 bf.vertIndex = 0 开始,然后循环直到 bf.vertindex = 6,它将在 运行 处停止。但是,程序会导致无限循环,当我将 bf.vertIndex 的值打印为 int 时,它始终 = 1。我可以对这些操作数使用位域吗?我能否将一个整数(例如 2)添加到给定位域的值?
float vertexData[12];
triInfo bf;
count = 0;
bf.trinum = 0;
bf.addedx = 0;//tracks if the x cord needs to be offset = 1 or 0
bf.addedy = 0;//same as for the x cord
bf.vertIndex = 0;
//this loop should make a triangle
while (bf.vertIndex < 6){
//sets cordinates for a vertex
vertexData[bf.vertIndex] = 500 + width*(bf.addedx);
vertexData[bf.vertIndex] = 500 + height*(bf.addedy);
//keeps track of the number of vertices created and checks where if an
bf.vertIndex += 2;
if (bf.vertIndex = 2 && bf.trinum == 0){
bf.addedy = !bf.addedy;
}
if (bf.vertIndex = 4 && bf.trinum == 0){
bf.addedx = !bf.addedx;
}
cout << ((int)bf.vertIndex);
}
这是我使用的位域的布局方式
struct triInfo
{
unsigned char trinum:1, addedx :1,addedy:1, vertIndex:5;
};
我在这里 Youtube 看到了一个教程,其中制作视频的先生将两个值相加,这些值在视频中的点 10:15 处以字符形式存储。
您可以将位字段与 <
、>
和 ==
进行比较,就像任何其他整数一样。但是 =
是一项赋值,而不是比较,您无意中覆盖了您要比较的值。
如果您使用 clang 或 GCC,您应该养成使用 -Wall
编译以启用编译器警告的习惯,然后仔细阅读警告以便能够修复根本原因。 (其他编译器也有类似的机制;请查阅手册。)
我正在尝试使用位域来存储一系列用于制作图形三角形的计数器,因为我只需要其中一些值 0、1、2 并且不想浪费内存.代码应该做的是从 bf.vertIndex = 0 开始,然后循环直到 bf.vertindex = 6,它将在 运行 处停止。但是,程序会导致无限循环,当我将 bf.vertIndex 的值打印为 int 时,它始终 = 1。我可以对这些操作数使用位域吗?我能否将一个整数(例如 2)添加到给定位域的值?
float vertexData[12];
triInfo bf;
count = 0;
bf.trinum = 0;
bf.addedx = 0;//tracks if the x cord needs to be offset = 1 or 0
bf.addedy = 0;//same as for the x cord
bf.vertIndex = 0;
//this loop should make a triangle
while (bf.vertIndex < 6){
//sets cordinates for a vertex
vertexData[bf.vertIndex] = 500 + width*(bf.addedx);
vertexData[bf.vertIndex] = 500 + height*(bf.addedy);
//keeps track of the number of vertices created and checks where if an
bf.vertIndex += 2;
if (bf.vertIndex = 2 && bf.trinum == 0){
bf.addedy = !bf.addedy;
}
if (bf.vertIndex = 4 && bf.trinum == 0){
bf.addedx = !bf.addedx;
}
cout << ((int)bf.vertIndex);
}
这是我使用的位域的布局方式
struct triInfo
{
unsigned char trinum:1, addedx :1,addedy:1, vertIndex:5;
};
我在这里 Youtube 看到了一个教程,其中制作视频的先生将两个值相加,这些值在视频中的点 10:15 处以字符形式存储。
您可以将位字段与 <
、>
和 ==
进行比较,就像任何其他整数一样。但是 =
是一项赋值,而不是比较,您无意中覆盖了您要比较的值。
如果您使用 clang 或 GCC,您应该养成使用 -Wall
编译以启用编译器警告的习惯,然后仔细阅读警告以便能够修复根本原因。 (其他编译器也有类似的机制;请查阅手册。)