小编Bob*_*ski的帖子

为什么C版本的逻辑AND不显示短路行为?

是的,这是一个家庭作业问题,但我已经完成了我的研究并对这个主题进行了相当深入的思考,并且无法弄清楚这一点.问题是这段代码没有表现出短路行为,并询问原因.但它在我看来它确实表现出短路行为,所以有人可以解释为什么它没有?

在C:

int sc_and(int a, int b) {
    return a ? b : 0;
}
Run Code Online (Sandbox Code Playgroud)

在我看来,如果这a是假的,程序根本不会尝试评估b,但我一定是错的.为什么程序b在这种情况下甚至不需要触摸?

c short-circuiting

79
推荐指数
4
解决办法
6086
查看次数

Prolog:获取列表中的第一个"N"元素

我需要编写一个Prolog谓词take(L, N, L1),如果list L1包含list 的第一个N元素,则以L相同的顺序成功.例如:

?- take([5,1,2,7], 3, L1).
L1 = [5,1,2]
?- take([5,1,2,7], 10, L1).
L1 = [5,1,2,7] 
Run Code Online (Sandbox Code Playgroud)

Prolog到目前为止对我来说没什么意义,而且我很难将其分解.这是我到目前为止:

take([H|T], 0, []).
take([H|T], N, L1) :-
   take(T, X, L2),
   X is N-1.
Run Code Online (Sandbox Code Playgroud)

你能解释一下我在这里做错了吗?

list prolog

7
推荐指数
2
解决办法
7020
查看次数

编写一个使用指针和位运算符来改变内存中一位的C函数?

首先,这是我需要解决的问题的确切措辞:


BIOS(基本输入输出服务)控制计算机上的低级I/O. 当计算机首次启动时,系统BIOS会创建一个从内存地址0x400开始供自己使用的数据区.地址0x0417是键盘移位标志寄存器,该字节的位具有以下含义:

Bit Value Meaning
7    0/1  Insert off/on
6    0/1  CapsLock off/on
5    0/1  NumLock off/on
4    0/1  ScrollLock off/on
3    0/1  Alt key up/down
2    0/1  Control key up/down
1    0/1  Left shift key up/down
0    0/1  Right shift key up/down
Run Code Online (Sandbox Code Playgroud)

该字节既可以写入也可以读取.因此,我们可以通过设置或清除相关位来更改键盘上CapsLock,NumLock和ScrollLock LED的状态.使用指针和位运算符编写C函数以打开大写锁定而不更改其他位.


我们的老师根本没有对此进行过调查,我参考了教科书并进行了许多Google搜索以寻求帮助.

我理解按位运算符是如何工作的,并且理解解决方案是将此字节与二进制值'00000010'进行或运算.但是,在实现这个问题时我很困惑.我如何用C代码写这个?我不知道如何声明一个指向1字节内存的指针.除此之外,我假设答案看起来如下(用byte适当的东西代替):

byte* b_ptr = 0x417;
(*b_ptr) |= 00000010;
Run Code Online (Sandbox Code Playgroud)

以上解决方案是否正确?

c byte pointers bit-manipulation

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

C++ 错误:“取临时数组的地址”

我试图在 if 语句中声明一个数组。我以这种方式编写代码,以便在 if 块退出时对象保持在范围内,但现在我有一个新问题:“获取临时数组的地址”。如何以另一种方式重写它,以便为 maskArray 分配正确的值?

int* maskArray;
if(conditional==true)
   maskArray = (int[9]) {0,1,0,1,-4,1,0,1,0};
Run Code Online (Sandbox Code Playgroud)

c++ arrays

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

无法将'int(*)[size]'转换为'int **'

我有一个256x256的二维浮点数组,我试图将其传递给函数,而g ++给了我错误消息:Cannot convert 'int (*)[256]' to 'int**'。我该如何解决?

void haar2D(int** imgArr);

int imageArray[256][256];
haar2D(imageArray);
Run Code Online (Sandbox Code Playgroud)

我试图将功能参数更改为类型int[256][256]int*[256]但没有成功。

c++ compiler-errors multidimensional-array

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

Powershell 哈希表存储“System.Collections.DictionaryEntry”的值

当我执行命令时:

$var = @{a=1;b=2}
Run Code Online (Sandbox Code Playgroud)

在 Powershell(版本 3)中,$var最终的值为{System.Collections.DictionaryEntry, System.Collections.DictionaryEntry}. 为什么会这样?如何存储我想要存储的值?

powershell powergui powershell-3.0

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

如何指定 Powershell 列表属性的顺序

这是一个简短的脚本,给出了相关行为的示例:

$foo = New-Object -TypeName PSCustomObject -Property @{
    Username = "BSmith"
    OU = "Finance"
    Department = "Finance"
    Description = "Accounts"
    Office = "345 2nd St"
    ServerName = "WFINANCE"
    ShareName = "BSmith$"
    LocalPath = "E:\Users\BSmith"
    }

Write-Host $foo
Run Code Online (Sandbox Code Playgroud)

输出是:@{ServerName=WFINANCE; Office=345 2nd St; Username=BSmith; LocalPath=E:\Users\BSmith; OU=Finance; Description=Accounts; ShareName=BSmith$; Department=Finance}

正如您所看到的,输出变量的顺序与指定变量时给出的顺序不同。为什么会这样,如何使顺序一致?

我只有机会在一台计算机上对此进行测试,但输出的顺序在脚本的执行之间是一致的。我在声明属性时如何排序属性也没有什么区别。我无法测试并查看不同的机器是否会返回不同的订单。

arrays powershell

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

C++重启main而不会丢失变量

我程序的主要功能显示一个开关菜单.当输入选项1时,调用一个"洗牌"一系列"卡片"的函数.在混洗完成后,该函数通过调用main()将程序返回到开头,以便再次显示菜单.

我遇到的问题是菜单的选项4将混洗数组写入文件.但是当洗牌然后重新启动程序时,阵列数据会丢失,因此输出的文件都是垃圾.有没有办法重新启动main()而不丢失数据?

我在一个班级,我可以使用的工具受到限制,因此只有最基本的代码才可以接受.基本上,我正在寻找像goto但更安全的东西(顺便说一句,goto,在这个课程中也被禁止).

c++ program-entry-point

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

从列表和子列表中删除成员的方案函数

首先,如果有人可以找到已经回答过的问题,请告诉我。我能找到的只是删除重复项的函数。

无论如何,我正在尝试编写一个方案函数(delete V L),该函数接受一个值和一个列表作为参数,并从列表及其所有子列表中删除该值。例如,给定以下输入:

> (deep-delete 3 '(1 2 3 (4 3) 5 (6 (3 7)) 8)) 
Run Code Online (Sandbox Code Playgroud)

它将产生:

(1 2 (4) 5 (6 (7)) 8) 
Run Code Online (Sandbox Code Playgroud)

到目前为止,这就是我所写的,但我知道 if 语句(用于检查该元素是否是子列表,这意味着它也必须被操作)必须放置错误。另外,我无法思考应该在哪里使用cons和不应该在哪里使用,因为我仍然对跟踪递归的返回值感到困惑。有人可以看一下并解释我做错了什么吗?

(define (delete V L)
   (if (list? (car L)) (cons (delete V (car L) (cdr L)))     
   (cond
      ((null? L) L)
      ((equal? V (car L)) (delete V (cdr L)))
      (else (cons (car L) (delete V (cdr L))))))))
Run Code Online (Sandbox Code Playgroud)

recursion scheme list member

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

struct作为C++中的参数

我是初学者所以请保持简单.

无论如何,我有一个像这样定义的结构:

struct card      
  {
  char rank[10];
  char suit[10];
  char color;
  bool dealt;
  char location[10];
  };
Run Code Online (Sandbox Code Playgroud)

我有一个传递这种结构的函数:

  void importCard(card deck[52]);
Run Code Online (Sandbox Code Playgroud)

问题是,如果我在main()中定义结构,那么编译器不知道函数声明时的"卡"(主页上面).如何在不将结构定义为全局的情况下解决这个问题?

c++ parameters struct

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