小编Tja*_*ess的帖子

如何将转换应用于条件运算符中的位字段类型?

int使用 Clang 和unsigned intGCC为 x86_64 编译时会打印以下代码。

我不确定哪个(如果有的话)是正确的。

#include <stdio.h>
struct s {
    unsigned int x : 1;
};

template<typename T>
void f(T) {}

template<> void f<int>(int) {
    printf("int\n");
}

template<> void f<unsigned int>(unsigned int) {
    printf("unsigned int\n");
}

struct s r;
int main()
{
    f(0 ? r.x : 0);
}
Run Code Online (Sandbox Code Playgroud)

如果我们用(r.x + 0)两个编译器替换条件,就说类型是有符号的。

C++ 标准部分 expr.cond 有许多转换规则,但似乎没有一个案例涵盖不同类型的泛左值和纯右值之间的转换问题。

是否将无符号位域提升为有符号整数是否由实现定义?

c++ types bit-fields

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

为什么这个 CLP(FD) 约束求解缓慢以及如何调试它?

我正在通过“代码来临”挑战来学习 Prolog。

以下是《代码降临 2021》第 7 天的剧透

目标是:给定一个自然数列表n_1,..., n_k,找到

min_(x\in \N) \sum_i=0^k |x - n_i|
Run Code Online (Sandbox Code Playgroud)

在下面的代码中norm1计算被加数,cost计算给定 处的总和x,并lowest_cost计算所有 s 的最小值x

norm1(X, Y, N) :- N #= abs(X - Y).

cost(Nums, X, Cost) :-
    max_list(Nums, MaxX),
    min_list(Nums, MinX),
    X in MinX..MaxX,
    maplist(norm1(X), Nums, Costs),
    sum(Costs, #=, Cost).


lowest_cost(Nums, Cost) :-
    cost(Nums, X, Cost)
    once(labeling([min(Cost)], [X, Cost])).
Run Code Online (Sandbox Code Playgroud)

一些示例查询:

?- lowest_cost([10,11,12], Cost).
Cost = 2.

?- cost([2,4,6,8], 4, Cost).
Cost = 8. …
Run Code Online (Sandbox Code Playgroud)

prolog swi-prolog clpfd

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

标签 统计

bit-fields ×1

c++ ×1

clpfd ×1

prolog ×1

swi-prolog ×1

types ×1