小编Joh*_*gen的帖子

按位运算期间整数提升的行为

当对小于 的算术类型执行按位运算时int,它会自动提升为int

std::uint8_t a = 42;
auto b = a | 0x0f;
// b will be of type int
Run Code Online (Sandbox Code Playgroud)

我无法确定的是这次促销期间到底发生了什么,特别是因为它正在从无符号整数转换为有符号整数。的数值会a保持一致,可能会改变二进制表示吗?或者二进制表示会保持一致,可能会导致不同的数值?

是否有理由将该值提升为int而不是unsigned int?后者不会引起任何这种混乱。

c++ bit-manipulation bitwise-operators integer-promotion

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

防止 SIGINT 在 bash 脚本中关闭子进程

我正在编写一个 bash 脚本,其中编写了一个处理程序来处理用户按下 Control+C(通过使用trap interruptHandler SIGINT)时的情况,但 SIGINT 会发送到 bash 脚本和当前正在运行的子进程,从而关闭子进程过程。我怎样才能防止这种情况发生?

编辑:这是剧本,不要过多批评我的技能..

#!/bin/bash
trap "interruptHandler" SIGINT

inInterrupt=false;
quit=false;

if [ -z ${cachedir+x} ]; then cachedir=~/.cache/zlima12.encoding; fi
cachedir=$(realpath ${cachedir});


if [ ! -e ${cachedir} ]; then mkdir ${cachedir}; fi
if [ ! -e ${cachedir}/out ]; then mkdir ${cachedir}/out; fi

cleanCache ()
{
    rm ${cachedir}/*.mkv;
    rm ${cachedir}/out/*.mkv;
}

interruptHandler ()
{
    if [ ${inInterrupt} != true ]; then
        printf "BASHPID: ${BASHPID}";
        inInterrupt=true;
        ffmpegPID=$(pgrep -P ${BASHPID});
        kill -s SIGTSTP ${ffmpegPID};
        printf "\nWould …
Run Code Online (Sandbox Code Playgroud)

bash parent-child sigint child-process

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

Node.js WriteStream 在关闭之前不会将数据写入文件

如何使数据按调用方式写入文件WriteStream.write()

编辑:事实证明,当我使用 REPL 并调用该函数时,这是有效的。但是,这在我的程序中不起作用:

import * as FS from "fs";
import { LetterGroup } from "./LetterGroup";
import { Dictionary } from "./Dictionary";
import { Word } from "./Word";
import * as OS from "os";

const groups: Array<LetterGroup> = LetterGroup.letterGroupsFromString(FS.readFileSync("./letterGroups.txt").toString());
const dictionary = Dictionary.create(FS.readFileSync("./dictionary.txt").toString());

const inputStr: string = FS.readFileSync("./input.txt").toString();
const inputWords = new Array<Word>();
const fileStream = FS.createWriteStream("./output.txt");

for (const line of inputStr.trim().split(OS.EOL))
{
    inputWords.push(new Word(line));
}

function permute(index: number)
{
    index = Math.floor(index);

    if (!(index >= 0 && …
Run Code Online (Sandbox Code Playgroud)

file fs node.js

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

为什么将对象的原型设置为“Foo”不会使其成为“Foo的实例”?

我正在尝试Object.setPrototypeOf重新设置已转换为 JSON 并返回对象的对象的原型。然而,instanceof似乎并没有按照我预期的方式工作:

class Foo {}

const obj = {};
Object.setPrototypeOf(obj, Foo);
console.log(obj instanceof Foo);
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?据我所知,instanceof工作基于将给定对象的原型与引用的类进行比较。应该有不同的方法吗?

javascript prototype instanceof ecmascript-6

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

在 git 中签署提交使用错误的子键

我的主 PGP 密钥上有多个签名子密钥,因此我的笔记本电脑有一个,台式机有一个。但是,似乎两台计算机都尝试使用我的笔记本电脑的密钥,该密钥是最近创建的,而不是我的台式机的密钥。我在笔记本电脑和台式机上都将 user.signingkey 设置为各自的子键,但 git 仍然为我的笔记本电脑使用那个。

git signing gnupg pgp

3
推荐指数
2
解决办法
2004
查看次数