小编Ada*_*eld的帖子

这个Lisp函数有什么问题?

这个函数是一个CLisp函数,这是作业问题的一部分,但应该用这种不同的格式编写(第二个函数).

(defun range (m M) (cond
((> m M) '() )
((= m M) '() )
((< m M) (cons m (range (+ m 1) M ) ) )  
)
)


(define (range m M) (cond
    ((> m M) '() )
    ((= m M) '() )
    ((< m M) (cons m (range (+ m 1) M ) ) )
)
)
Run Code Online (Sandbox Code Playgroud)

这些应该采用最小值(m)和最大值(M)并返回从min到max的整数列表(排除最大值/ M-1)

我一遍又一遍地追踪这个,我不明白为什么它只是返回NIL它一定是一个非常愚蠢的逻辑错误.

(range 1 4)  => result (1 2 3)

m=1 | M=4 ==> return (cons 1 (2 …
Run Code Online (Sandbox Code Playgroud)

lisp recursion clisp functional-programming function

1
推荐指数
1
解决办法
402
查看次数

Unix表示怀疑 - 关于执行下面的程序

我有以下程序

#include <signal.h>
#include <stdio.h>
#include <unistd.h>

int x = 1;

void ouch(int sig) {
    printf("OUCH!  dividing by zero!\n");
    x = 0; 
}

void fpe(int sig) {
    printf("FPE!  I got a signal: %d\n",sig);
    psignal(sig, "psignal");
    x = 1; 
}

int main(void) {
    (void) signal(SIGINT, ouch);
    (void) signal(SIGFPE, fpe);

    while(1)
    {
        printf("Hello World: %d\n",1/x);
        sleep(1);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:执行此程序时 - 当我从终端向程序提供SIGINT时 - ""OUCH!除以零!"输出 - 按预期.下一条消息是"FPE!我得到一个信号:8 psignal:浮点异常".这个消息继续 - 不停止.我的疑问是在调用fpe信号处理程序后,我将x设置为1.我因此期望Hello World应该是显示在输出中.

以下是我得到的输出的记录:

Hello World: 1
Hello World: 1
^COUCH!  dividing by zero!
FPE!  I …
Run Code Online (Sandbox Code Playgroud)

unix linux signals linux-kernel

1
推荐指数
1
解决办法
1008
查看次数

Objective-C,NSThread detach与performSelectorInBackground

这两者有什么不同?

 [NSThread detachNewThreadSelector:@selector(method) toTarget:self withObject:nil];
 [self performSelectorInBackground:@selector(method) withObject:nil];
Run Code Online (Sandbox Code Playgroud)

我通常使用第二种方法来生成一个新线程.但是我想知道如果我将这两次调用如下所示,那么将会发生什么?另外如果我有一个tabmenu并且每个菜单产生一个线程,那么我应该使用哪一个?

 [self performSelectorInBackground:@selector(method1) withObject:nil];
 [self performSelectorInBackground:@selector(method2) withObject:nil];
Run Code Online (Sandbox Code Playgroud)

multithreading objective-c nsthread

1
推荐指数
1
解决办法
6228
查看次数

glCallLists比一次调用一个显示列表更有效吗?

glCallLists()是一个方便的功能,用于渲染一系列显示列表,尤其是文本渲染等.我很好奇 - 它实际上是更有效率的呼叫glCallLists(),还是仅仅是一种便利功能?例如,这两个片段中的哪一个可能更快?

const char *str = "this is a test";
// suppose the display lists numbered [displayListBase..displayListBase+255] have
// been initialized with display lists to render each ASCII character

// snippet 1:
glListBase(displayListBase);
glCallLists(strlen(str), GL_UNSIGNED_BYTE, str);

// snippet 2:
const char *s;
for(s = str; *s; s++)
    glCallList(displayListBase + (unsigned char)*s);
Run Code Online (Sandbox Code Playgroud)

我不是想过早地优化,我只是好奇是否glCallLists提供了比手动方法更重要的优势.如果没有,那为什么它存在?OpenGL往往非常简约,因为很少有便利功能,这些功能并不是绝对必要的.确实存在的便利函数通常在glu命名空间(GL实用程序)下,例如gluOrtho2D(),它提供了一个包装器glOrtho().

我还没有尝试过分析这两个片段,虽然我猜测分析可能会因CPU-GPU交互而变得复杂,特别是在如此短的时间内.运行时也可能受到所涉及的显示列表的大小以及执行的显示列表的数量的显着影响.

c opengl optimization

0
推荐指数
1
解决办法
1593
查看次数

删除另一个类的类实例时堆损坏

(c ++课程问题)

这真的让我失望,当下面的类删除其成员指针(对类播放器)的析构函数时,我得到一个'正常阻塞后的堆损坏'错误.

//Team.h
class Team
{
public:
    Team (const char* team_dir_path);
    ~Team(void);

    Team (const Team &team);

    Player* player;
    int player_cnt;
};

//Team.cpp

Team::Team( const char* team_dir_path )
{
    player = 0;
    player_cnt = 0;

    std::string* name;
    int* body;
    int* mind;
    int* speed;
    int* health;
    int* item;

    std::ifstream infile;
    infile.open( team_dir_path );
    if (infile.is_open())
    {
        infile >> player_cnt;

        if (player_cnt)
        {
            name = new std::string [player_cnt];
            body = new int [player_cnt];
            mind = new int [player_cnt];
            speed = new int …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
649
查看次数

当y是一个没有导入模块的布尔值时,是否有更短的方法来编写"x = not y"?

只是想知道在python中是否有更聪明,更短的方式来编写它.

y = False
x = not y
Run Code Online (Sandbox Code Playgroud)

在javascript中我会:

y = false,
x = !y
Run Code Online (Sandbox Code Playgroud)

谢谢!

python

0
推荐指数
2
解决办法
134
查看次数

点击几下后,WinAPI菜单会冻结

我在win32中有一个应用程序,它的主窗口有一个顶层菜单,这个菜单有2个选项,每个菜单都有子菜单.

问题是......在点击其选项后,它突然冻结了.应用程序的其余部分保持正常响应,但是当我单击菜单选项时,按钮按下按下并且子菜单没有出现,我需要重新启动应用程序,否则它将不再工作.

我认为它是与内存分配有关的东西,也许我需要释放一些分配,但是由于我是这种编程的新手,我可以说只是看着它.

一些代码..我认为它在窗口过程中我操纵WM_COMMAND,这是错误的:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{

int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;

HMENU hMenubar = CreateMenu();
HMENU hFile = CreateMenu();
HMENU hEDIT = CreateMenu();
HMENU hHelp = CreateMenu();     



switch (message)
{


case WM_COMMAND:
    wmId    = LOWORD(wParam);
    wmEvent = HIWORD(wParam);

    // Parse the menu selections:

    switch (wmId)
    {
    case ID_FILE_DIALOG2:
        DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG2), hWnd, Add);
        break;

    case ID_FILE_TESTE:

    Check();

    break;

    case ID_FILE_DIALOG1:
        DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, Conf);
        break;

    case ID_OPEN:
        Open();
        break;

    case …
Run Code Online (Sandbox Code Playgroud)

c c++ winapi

0
推荐指数
1
解决办法
158
查看次数

C - SizeOf指针

char c[] = {'a','b','c'};
int* p = &c[0];
printf("%i\n", sizeof(*p)); //Prints out 4
printf("%i\n", sizeof(*c)); //Prints out 1
Run Code Online (Sandbox Code Playgroud)

我对这部分代码非常困惑.p和c都表示第0个索引处的数组c的地址.但是为什么sizeof(*p)打印4?不应该是1吗?

c arrays pointers character sizeof

0
推荐指数
1
解决办法
2762
查看次数

预期为“;” 在声明清单的末尾

我一直在思考下面的代码有什么问题。XCODE将所有方法声明都引用为错误。它说“期望”;在声明列表的末尾。多谢您的协助。谢谢 :)

    @interface
    Budget : NSObject{

float exchangeRate;
double budget;
double exchangeTransaction;


- (void) createBudget: (double) aBudget withExchangeRate: (float) anExchangeRate;
- (void) spendDollarts: (double) dollars ;
- (void) changeForeignCurrency: (double) foreignCurrency ;
    }
    @end




    int main(int argc, const char * argv[])
    {
         NSLog(@"Run Without error");
         return 0;
    }
Run Code Online (Sandbox Code Playgroud)

syntax objective-c

-2
推荐指数
1
解决办法
1600
查看次数