小编Leo*_*rdo的帖子

如果Python中的约定是大写类,那么为什么list()不是大写的呢?这不是一个班级吗?

通常当我看到类定义时class Foo:,我总是看到它们以大写字母开头.

但是,不是列表[]或字典{}或其他内置类型,类也是?就此而言,所有输入Python IDLE的内容都是一个类,对吧,它是一个自动用紫色进行颜色编码的关键字(使用Window的二进制分配).

spam = list()

spam 现在是一个例子 list()

所以我的问题是,为什么Python允许我们首先做一些事情,比如list = list()当没有人这样做时.但是,为什么不呢list = List()

该语言的开发人员是否决定不使用任何类型的约定,而大多数Python程序员都是这样命名他们的类?

python coding-style naming-conventions

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

为什么Windows上的CodeBlocks 12.11用红色曲折线强调我的注释,如何关闭此功能?

如何关闭Windows上CodeBlocks中的"拼写检查功能"功能?

我现在才意识到,如果我在评论的末尾添加一个"\"(反斜杠),那么如果代码也被注释,则下一行.这一直是c ++的标准吗?

在此输入图像描述

c++ codeblocks windows-7

12
推荐指数
2
解决办法
1万
查看次数

在按住窗口拖动或菜单按钮期间,如何阻止Windows阻止程序?

我是Win32的新手,我一直在追求一个问题(如果它可以被称为问题),当用户抓住窗口标题栏并在屏幕上移动时,Windows会阻止程序的流程.

我没有合理的理由解决这个问题,除非它困扰我.一些可能性包括完全删除框架,但它似乎是一个不方便的黑客.有些游戏(单人游戏)根本没有发现这个问题.然而,我已经阅读过,当程序冻结时,多人游戏可能会遇到问题,因为它期望信息不断流动,并且在这样的延迟之后可能会被淹没.

我试过把它添加到我的 WindowProc

switch (uMsg)
{
    case WM_SYSCOMMAND:
        if (wParam == SC_CLOSE)
            PostQuitMessage(0);

        return 0;
    ...
    ...
    default:
        return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
Run Code Online (Sandbox Code Playgroud)

这似乎是一个快速的黑客,除了当我在关闭图标上徘徊时,我可以拉开鼠标并放开而不关闭程序,在此期间,当关闭图标时,程序再次被阻止.

此外,我不知道如何在用户单击标题栏并拖动鼠标时手动包含移动窗口所需的代码.对于初学者,我不知道要处理哪个uMsg和哪个wParam.

我的问题是,当用户点击退出按钮(或最小化/最大化按钮)时,如何在单击鼠标并通过按钮释放时处理案例时,如何禁止阻止,以及如何允许用户移动/拖动窗口而不阻止程序(或单击标题栏时发送的消息,而不是按钮或菜单)?

我正在创建窗口WS_SYSMENU | WS_MINIMIZEBOX.

我仍然希望程序响应最小化,最大化和退出命令.

如果多线程可以解决它,那么这很有趣,但我想知道我是否可以让它在单核处理器上工作.我已经阅读了有关钩子的内容,但MSDN页面仍然难以解释.

c c++ winapi windows-messages

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

K&R 练习 2-6 真正需要什么功能?

练习2-6。编写一个函数 setbits(x,p,n,y),返回 x,并将从位置 p 开始的 n 位设置为 y 最右边的 n 位,其他位保持不变。

我已经尝试在纸上摆弄这个函数有一两个小时了,但我一无所获。

我解释该函数的方式是,任意长度的位字段 x 是从最右边的位n开始查看它的位。p将这些n位更改为位于n任意长度的位字段 y 中最右侧位中的相同位。

示例:p = 7 n = 9x 为顶场,y 为中场,结果为底场。

在此输入图像描述


我无法确定如何使用任意大小的位字段来执行此操作。我应该使用sizeof(x) * 8还是没有必要?

如果您能提供有关如何创建这样一个功能的任何提示,我将不胜感激。

我还想知道该练习的任何其他解释,可能是一种更容易的版本,尽管我确信这个可以完成。考虑到我花了多长时间,我希望对此事有第二意见,谢谢。

kernighan-and-ritchie

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

是否可以捕获多种类型的异常,然后打印出现的确切类型?

这是最接近的答案我能找到的捕获多个异常(正确的方法),当默认的奇迹解释允许下面的代码片段:

try:
    x = "5" + 3
except NameError and TypeError as e:
    print e
Run Code Online (Sandbox Code Playgroud)

文档将提供该片段为好,但没有像前者:

... except (RuntimeError, TypeError, NameError):
...     pass
Run Code Online (Sandbox Code Playgroud)

因此,有一个第二意见是很好的,但我的问题实际上归结为:

  • 我怎样才能不仅打印消息,而且在print语句的开头插入确切的错误类型.例如,我更喜欢第一个片段通过打印来响应:TypeError: cannot concatenate 'str' and 'int' objects

我觉得这可能是不可能或不容易的,因为解释器只列出args并且message作为成员,NameError但也许只是不完整.

我自己尝试了这个,但它不再排除错误(我可能会误解isinstance):

try:
    x = "5" + 3
except (NameError, TypeError) as e:
    if isinstance(e, NameError):
        print "NameError: " + e
    elif isinstance(e, TypeError):
        print "TypeError: " + e
    else:
        print e
Run Code Online (Sandbox Code Playgroud)

python exception-handling exception python-2.7

4
推荐指数
3
解决办法
3899
查看次数

什么是本机构建环境?

我只是从Internet上读取信息,当前是关于page的信息,我需要这些信息来填补空白,这有助于查看全局。

我希望答案肯定是直截了当的。什么是本机构建环境?

上下文:我需要知道如何在计算机上构建软件(例如CodeBlocks等),为什么需要这样做,这样做的好处等。但是首先,我需要知道遇到的每一个专业术语,以及尽管可以在某种程度上推测,但我找不到关于“本地构建环境”的确切解释。

cmake

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

为什么编程语言严格依赖原始类型,而汇编更灵活?

为什么我们没有 4 位大小的数据类型?如果我们如此倾向,为什么我们不能制造它们?我见过位域,但我听说它们不可移植,也许也不常用?我认为这是机器如何解释位位置的位置值的结果。(大端,小端)

typedef struct
{
   int b1  : 1;
   int b2  : 1;
   ..
   ..
   ..
   int b32 : 1;
} bitfield32;
Run Code Online (Sandbox Code Playgroud)

我们也不能制作这样一个比任何原始类型都大的位域。那么为什么要限制呢?可以在组装中完成吗?

c primitive assembly bit-fields

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

由于EOF字符,导致此程序提前离开for循环的条件是什么?

继续看看这篇文章的底部是否有实际问题

我可能试图将这些非常简单的事情理解得太多,但在我弄清楚这一点之前我无法继续.

在阅读K&R 1.9字符阵列时,您会遇到一个示例程序,它接受输入并确定哪条线最长,然后重新打印它.

为了理解该程序的getline功能,我稍微修改了它以在其进展过程中打印一些信息.现在我找到了一些输入,一旦我理解,应该大大增强我对getchar()的理解.


另外,当我尝试从库中读取源代码时,我完全不知所措.例如,我试图追捕getchar()并最终盯着#endifstddef.h的300号线某处的18号塔楼目瞪口呆.我将通过在不久的将来停止在stdio.h中寻求功能来避免这种麻烦.图书馆很难找到一些东西,这是正常的吗?该函数不应该作为可读源存在,还是我只是希望得到它?


为了方便起见,我将继续并从K&R发布整个修改过的程序:

#include <stdio.h>
#define MAXLINE 5   /* maximum input line length */

int getline(char line[], int maxline);
void copy(char to[], char from[]);

/* print the longest input line */
main()
{
    int len;            /* current line length */
    int max;            /* maximum length seen so far */
    char line[MAXLINE];    /* current input line */
    char longest[MAXLINE]; /* longest line saved here */
    max = 0;
    while ((len = getline(line, MAXLINE)) > 0) …
Run Code Online (Sandbox Code Playgroud)

c codeblocks kernighan-and-ritchie

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

是否有任何特殊方法使用C++标准同时为两个变量分配两个值?

对不起,如果这是一个愚蠢的问题,我还不熟悉计算机科学.这是算法速度的问题.

我遇到了这样一个问题,我决定解决这个问题.我的计划是根据需要增加Fibonacci序列以获得准确的结果.

这是我如何增加;

unsigned int last(1), current(1) ;
unsigned int sum = 0 ;

looping
{
   ...
   current += last ;
   last = current - last ;
}
Run Code Online (Sandbox Code Playgroud)

我觉得这肯定和增量需要一样好,而且考虑到我有限的知识,可能和我想象的一样好.但有没有一种特殊的方法只使用这两个变量来做同样的增量?也许我的想法是错的,但这样做会更快:

temp = current ;
current += last ;
last = temp ;
Run Code Online (Sandbox Code Playgroud)

在视觉上有一个比以前更多的陈述,还有一个额外的变量.他们都做同样的事情,但我觉得一个更快,使用更少的内存.我是否正确,哪一个被认为是最有效的?

另外,我对使用指针的经验不是很熟悉,但我是否正确地假设指针不会发生很大的变化,因为对于int类型的标准,每个数据通常是4个字节?我可以理解为什么使用50字节的自定义类型可能更好地使用指针,但它会帮助我的第二个算法吗?

c++ performance

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

在C++中,在调用我的函数根据程序的需要返回不同类型时,是否可以做一些时髦的东西?

考虑一下Zaita发布在cplusplus.com上的有用代码,特别是安全获取数字的部分,在我的情况下修改为一个函数:

int get_number()
{
   /**
    * cplusplus.com/forum/articles/6046
    * gets number from input stream
    **/

   string input = "";
   int number = 0;

   while (true)
   {
      getline(cin, input);
      stringstream checks(input);
      if (checks >> number)
         return number;
      cout << "Please enter a valid number\n";
   }
}
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是这样的:我可以删除intget_number()函数定义的第一行,并在我的代码顶部用我可能想要返回的所有类型声明它,例如做一些这样的声明:

double get_number();
int get_number();
long get_number();
unsigned short get_number();
...
...
Run Code Online (Sandbox Code Playgroud)

并以某种方式让它做不同的返回取决于我想要存储函数返回的变量?目前,我只是在将名称更改为时,编写基本相同功能的多个定义get_someType

我希望我可以用这种语法声明:

int get_number(int);
double get_double(double);
...
...
Run Code Online (Sandbox Code Playgroud)

我的愿望是做一些像:

int x;
x = get_number(int);
Run Code Online (Sandbox Code Playgroud)

我相信这不会起作用!因为用参数没有名字来定义函数的源代码是不可能的......

c++ casting

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

是否可以在运行时在堆上创建一个数组,然后在需要时分配更多空间?

让我们说

char *a;
a = new char[4];
Run Code Online (Sandbox Code Playgroud)

现在,是否可以进一步扩展阵列的大小?

说我想继续我把里面的任何值a[0]a[3],但现在我想的更多的空间a[4]a[5]等.这有可能在C++?


起初我觉得我可以做:

char* a[10];
a[0] = new char[size];
Run Code Online (Sandbox Code Playgroud)

每当需要更多空间时,我可以去a[1]并分配更多空间.这是我现在能想到的唯一选择.

c++ heap memory-management dynamic-arrays

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

如果无符号类型不应该有负值,为什么当我打开所有位时它是否定的?

#include <stdio.h>
#include <math.h>
#include <limits.h>

int main(void)
{
    unsigned long x = 0;

    x = x ^ ~x;
    printf("%d\n", x);

    x = (unsigned long)pow(2, sizeof(x)*8);
    printf("%d\n", x);

    x = ULONG_MAX;
    printf("%d\n", x);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在Windows 7上使用CodeBlocks12.11和MinGW 4.7.0-1.由于某种原因,我无法使我的变量x获得最大可能的十进制值表示.为什么会发生这种情况,我相信它x = ULONG_MAX应该有效,但它也会产生-1,现在肯定是不对的!我也尝试在Code-Blocks之外编译它.

我在这里错过了什么?

c limit

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