小编Pra*_*ina的帖子

64 位整数的绝对值问题

此 C 代码试图找到负数的绝对值,但输出也是负数。谁能告诉我如何克服这个问题?

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <inttypes.h>

int main() {
    int64_t a = 0x8000000000000000;
    a = llabs(a);
    printf("%" PRId64 "\n", a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出

-9223372036854775808
Run Code Online (Sandbox Code Playgroud)

更新:

感谢您的所有回答。我知道这是一个非标准值,这就是我无法对其执行绝对操作的原因。但是,我确实在遗传编程模拟的实际代码库中遇到过这种情况。这里的“有机体”不了解 C 标准并坚持生成此值:) 谁能告诉我解决此问题的有效方法?再次感谢。

c gcc

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

是否有可能杀死正在运行的CUDA内核?

让我们说我有很多CUDA内核,我可以要求GPU执行。无论如何,我都不想修改内核代码(包括一个陷阱)。

有没有办法杀死这样一个正在运行的内核?

我打算自动生成内核(遗传编程)。这些内核可能具有需要很长时间才能完成的行为。如果我可以在内核运行时杀死它,那么我可以维护一个计时器并根据需要杀死它。

cuda gpgpu nvidia

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

跨包使用 go/parser

我使用go/parser来解析 golang 文件并检查它的 AST。我有一个特定的问题,我想使用 go/parser 但我遇到了障碍。

考虑以下文件存在于 GOPATH/src 中

$GOPATH/src/
    example.go
    example_package/
        example_package.go
Run Code Online (Sandbox Code Playgroud)

以下是上述文件的内容

例子.go

package main

import (
    "example_package"
)

type MyObject struct {
    base *example_package.BaseObject
}

func DoMyThing(arg *example_package.FirstArg) {
    arg.Write(10)
}

func DoMyAnotherThing() {
}

func main() {
    example_package.GetItStarted(&MyObject{})
}
Run Code Online (Sandbox Code Playgroud)

example_package.go

package example_package

func GetItStarted(obj interface{}) {
}

type FirstArg interface {
    Read() int
    Write(x int)
}

type BaseObject struct {
}

func (p *BaseObject) DoSomething(arg *FirstArg, a int) {
    arg.Write(arg.Read() + a)
}
Run Code Online (Sandbox Code Playgroud)

我的意图是编写一个名为 …

parsing code-generation abstract-syntax-tree go

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

标签 统计

abstract-syntax-tree ×1

c ×1

code-generation ×1

cuda ×1

gcc ×1

go ×1

gpgpu ×1

nvidia ×1

parsing ×1