小编And*_*snk的帖子

某个程序的堆栈内存有多大,是否有可以设置它的编译器标志?

正如标题所述:关于堆栈的大小是否有任何一般的"经验法则".我猜测大小会因操作系统,体系结构,缓存大小,可用RAM数量等而有所不同.

但是一般可以说什么,或者有没有办法找出,有多少堆栈,这个程序是允许使用的?作为一个额外的问题是有任何方式(使用编译器标志等(在这里主要考虑C/C++,但也更通用))堆栈的大小可以由用户设置为固定大小?

顺便说一句,我严格要求出于好奇,我没有堆栈溢出.:)

c c++ memory size stack

10
推荐指数
2
解决办法
5230
查看次数

使用自动热键减慢滚动速度

我今天早些时候下载了 AutoHotKey,以便恢复我的华硕笔记本电脑上的滚动。我找到了一个进行恢复的脚本,我很容易理解它。

这是原始脚本 - 它正在运行。

WheelUp::
Send {WheelDown}
Return

WheelDown::
Send {WheelUp}
Return
Run Code Online (Sandbox Code Playgroud)

然而滚动速度太快了,我决定制作自己的脚本来减慢滚动速度。我目前正在攻读计算机科学硕士学位,所以我已经编程了几年,所以我认为任务很简单 - 这确实是一个简单的脚本。

所以我尝试了一下,并想出了一些代码 - 唯一的问题是:它不起作用!没有编译错误,我不明白为什么。问题是:为什么下面的代码不起作用?它根本不滚动,但滚动已注册,因为启用了输入过多的警告。

global UpSpeed := 0
global DownSpeed := 0

WheelUp::
global UpSpeed := global UpSpeed++
  if (global UpSpeed > 2)
  { 
    Send {WheelDown}
    global UpSpeed := 0
  }
  Return



WheelDown::
global DownSpeed := global DownSpeed++
  if (global UpSpeed > 2)
  { 
    Send {WheelUp}
    global DownSpeed := 0
  }
  Return
Run Code Online (Sandbox Code Playgroud)

scroll autohotkey

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

随机选取一个范围内的两个数字,使它们的平方和保持不变

我目前正在从零开始开发一款2人乒乓球比赛(二维 - 真正的简单),而且一切顺利.然而Theres是一个我似乎无法解决的问题 - 我不确定这应该位于此处还是位于MathExchange上 - 无论如何这里都有.

最初球应该位于画布的中心.当按下按钮时,球应该以完全随机的方向发射 - 但总是以相同的速度发射.

Ball对象具有(简化的)4个区域 - X和Y中的位置,以及X和Y中的速度.这使得在击中时将球从墙壁上反弹变得简单,通过反转速度可以很简单.

    public void Move()
    {
        if (X - Radius < 0 || X + Radius > GameWidth)
        {
            XVelocity = -XVelocity;
        }
        if (Y - Radius < 0 || Y + Radius > GameHeight)
        {
            YVelocity = -YVelocity;
        }
        X+= XVelocity;
        Y+= YVelocity;
    }
Run Code Online (Sandbox Code Playgroud)

我认为每场比赛的速度应该是相同的,所以我想我会使用毕达哥拉斯 - 两个速度的平方应该总是相同的.

对于这个问题:

有没有办法随机选择两个数字(双打),使得它们的平方和总是一个特定的数字 - 更正式:

double x = RandomDouble();
double y = RandomDouble();
if (x^2 + y^2 = 16) {/* should always …
Run Code Online (Sandbox Code Playgroud)

c# random math pythagorean

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

嵌套的foreach循环到lambda表达式

我正在重构一个我正在大学就读的项目.这种重构的一部分是使项目的一部分更简洁,并使用更少的代码.有时我会运行几个foreach循环并将内容添加到List中.

我有以下代码块,它按预期工作

private List<Literal> GetClashingLiterals(ClauseNode other)
{
    List<Literal> clashes = new List<Literal>();
    foreach (Literal literal in literals)
    {
        foreach (Literal otherlit in other.literals)
        {
            if (literal.Name.Equals(otherlit.Name) 
                && !(literal.Sign.Equals(otherlit.Sign)))
            {
                clashes.Add(literal);
            }
        }
    }
    return clashes;
}
Run Code Online (Sandbox Code Playgroud)

我想将这段代码转换为lambda表达式.我在stackoverflow C#上找到了这个老问题- 使用lambda表达式或LINQ填充列表.

我认为这正是我所需要的,所以我做了这个lambda-expresison并测试了它:

List<Literal> clashes = (List<Literal>)literals
    .Where(lit => other.literals
        .Any(lit2 => lit.Name.Equals(lit2.Name) 
            && !lit.Sign.Equals(lit2.Sign)));
Run Code Online (Sandbox Code Playgroud)

但它不起作用.每当我尝试运行它时,我都会收到InvalidCastException.没有演员阵容,它不会编译!那我错过了什么?

这是例外:

无法转换'WhereEnumerableIterator 1[Heureka.Model.Literal]' to type 'System.Collections.Generic.List1 [Heureka.Model.Literal]' 类型的对象.

c# foreach lambda exception

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

标签 统计

c# ×2

autohotkey ×1

c ×1

c++ ×1

exception ×1

foreach ×1

lambda ×1

math ×1

memory ×1

pythagorean ×1

random ×1

scroll ×1

size ×1

stack ×1