我有一个8x8矩阵,像这样:
char matrix[8][8];
Run Code Online (Sandbox Code Playgroud)
另外,我有一个包含64个元素的数组,如下所示:
char array[64];
Run Code Online (Sandbox Code Playgroud)
然后我将矩阵绘制成一个表格,并用数字填充单元格,每个数字从左到右,从上到下递增.
如果我将索引3(列)和4(行)索引到矩阵中,我知道它对应于数组中位置35处的元素,因为它可以在我绘制的表格中看到.我相信有一些公式可以将矩阵的2个索引转换为数组的单个索引,但我无法弄清楚它是什么.
有任何想法吗?
我正在研究汇编编程,所以我决定尝试用软件实现一个"虚拟微处理器",它有寄存器,标志和RAM来处理,用变量和数组实现.但是,由于我只想模拟任何微处理器的最基本行为,我想创建一个只有基本指令的汇编语言,只有那些没有它就没用的指令.我的意思是,有汇编语言可以执行乘法和交换寄存器值等,但这些操作不是基本的,因为您可以使用更简单的指令来实现它们.我不想实现那些指令.
我可以想象一些指令(我相信)必须始终以任何汇编语言存在,例如MOV移动字节和JP将指令指针发送到另一个地址.
你能否提出一套最基本和最基本的装配说明?谢谢!
我编写了下面这段代码,我相信如果我试图访问我甚至没有分配内存的结构的成员,它会崩溃.但我很惊讶C++自动为结构分配了内存.这是正常的行为吗?为了进行比较,如果您声明一个指向对象的指针然后尝试访问任何成员而不实际使用运算符"new"创建该对象,则程序将崩溃.当我相信它不应该时,我只是好奇它为什么会起作用.
这是我的计划:
#include <stdio.h>
struct Produto
{
int codigo;
float preco;
};
int main()
{
struct Produto* sabonete;
sabonete->codigo = 654321;
sabonete->preco = 0.85;
printf( "Codigo = %i\n", sabonete->codigo );
printf( "Preco = R$ %.2f\n", sabonete->preco );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
操作系统:Windows 7
编译器:MinGW GCC 4.6.1
我试图从16位字中提取两个字节,并从两个字节中产生一个16位字.这是我尝试过的(byte = unsigned char,word = unsigned short):
将grpix字拆分为2个字节:
word grpix; // Assume that the value has been initialized
byte grpixl = grpix & 0x00FF;
byte grpixh = grpix & 0xFF00;
Run Code Online (Sandbox Code Playgroud)
从2个字节制作grpix字
byte grpixh; // Assume that the value has been initialized
byte grpixl; // Assume that the value has been initialized
word grpix = grpixh;
grpix <<= 8;
grpix += grpixl;
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我的代码没有按预期工作,现在我不确定这个单词的"分裂"是否错误,如果单词的"制作"是错误的,或者两者都有...你能否给出我有些建议?
我一直在尝试实现一个BASIC语言解释器(在C/C++中),但我还没有找到任何解释语言结构解析过程的书或(全文)文章.有些命令相当复杂且难以解析,尤其是条件和循环,例如IF-THEN-ELSE和FOR-STEP-NEXT,因为它们可以将变量与常量,整个表达式和代码以及其他所有内容混合,例如:
10 IF X = Y + Z THEN GOTO 20 ELSE GOSUB P
20 FOR A = 10 TO B STEP -C : PRINT C$ : PRINT WHATEVER
30 NEXT A
Run Code Online (Sandbox Code Playgroud)
能够解析类似的东西并让它发挥作用似乎是一场噩梦.更糟糕的是,用BASIC编写的程序很容易变得混乱.这就是为什么我需要一些建议,阅读一些书或其他什么来让我明白这个主题.你能提出什么建议?
操作系统:Windows 7,编译器:GCC 3.2.3(MinGW)
我用C创建了这三个数据结构:
#define MAP_NAME_LEN 30
#define MAP_W 25
#define MAP_H 19
#define WORLD_W 32
#define WORLD_H 32
typedef unsigned char byte;
typedef struct Tile
{
byte type;
byte character;
byte fgColor;
byte bgColor;
};
typedef struct Map
{
char name[MAP_NAME_LEN];
Tile overlay[MAP_H][MAP_W];
Tile underlay[MAP_H][MAP_W];
};
typedef struct World
{
Map area[WORLD_H][WORLD_W];
};
Run Code Online (Sandbox Code Playgroud)
当我尝试创建Tile和/或Map的单个实例时,没关系,完全没问题,一切正常.但是如果我尝试创造一个世界,就像......
int main()
{
World world;
}
Run Code Online (Sandbox Code Playgroud)
...程序只是崩溃(Windows 7说该程序崩溃了,正在寻找解决方案等).你们有谁知道为什么会这样?
谢谢!
我正在Microsoft Visual C++ 10中编译我的程序,它使用PDCurses库.我已将其配置为与pdcurses.lib链接,但当我尝试运行该应用程序时,系统会抱怨它无法找到"pdcurses.dll".它不应该抱怨它.我曾经使用MinGW(GCC)编译程序,当我尝试运行应用程序时它并没有问我任何DLL.我能做些什么让MSVC静态链接PDCurses?