小编Vor*_*rac的帖子

为什么MSVS没有优化+0?

这个问题展示了一个非常有趣的现象:非规范化浮点数使代码减慢了一个数量级以上.

接受的答案中很好地解释了这种行为.但是,有一条评论,目前有48条评论,我找不到满意的答案:

为什么编译器在这种情况下不会降低+/- 0?- 迈克尔多根

旁注:我的印象是0f是/必须是完全可表示的(此外 - 它的二进制表示必须全为零),但在c11标准中找不到这样的声明.证明这一点的引用,或反驳这一主张的论点,将是最受欢迎的.无论如何,迈克尔的问题是这里的主要问题.


§5.2.4.2.2

实现可以给零和不是浮点数(例如无穷大和NaN)的值作为符号或者可以使它们保持未签名.

c floating-point

50
推荐指数
2
解决办法
2293
查看次数

对数据进行排序的算法,以使相邻元素尽可能相同

我有一个(可能很大的)data小非负整数的三元组列表,例如

\n
data = [\n    (1, 0, 5),\n    (2, 4, 2),\n    (3, 2, 1),\n    (4, 3, 4),\n    (3, 3, 1),\n    (1, 2, 2),\n    (4, 0, 3),\n    (0, 3, 5),\n    (1, 5, 1),\n    (1, 5, 2),\n]\n
Run Code Online (Sandbox Code Playgroud)\n

我想对其中的元组进行排序data,以便相邻元组(data[i]data[i+1])“尽可能相似”。

\n

将两个三元组的不相似度定义为它们之间不相等的元素数量。例如

\n
    \n
  • (0, 1, 2)对比(0, 1, 2):差异0
  • \n
  • (0, 1, 2)对比(0, 1, 3):差异1
  • \n
  • (0, 1, 2)对比(0, 2, …

python algorithm optimization minimization time-complexity

47
推荐指数
5
解决办法
3071
查看次数

为什么Python中没有'const'?

我来自C背景,正在学习Python.缺乏明确的类型安全性是令人不安的,但我已经习惯了.面对动态语言的所有优点,缺乏内置的基于合同的编程(纯抽象类,接口)是习惯的东西.

然而,无法请求const-cortectness让我发疯!为什么Python中没有常量?为什么不鼓励类级常量

python const const-correctness

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

在编译时通过算法初始化std :: array

考虑:

static constexpr unsigned num_points{ 7810 };
std::array< double, num_points > axis;

for (int i = 0; i < num_points; ++i)
{
    axis[i] = 180 + 0.1 * i;
}
Run Code Online (Sandbox Code Playgroud)

axis是全类常量。我想避免像其他任何全局变量一样初始化它。可以在编译时完成吗?


这是完整的最后一堂课:

// https://www.nist.gov/pml/atomic-spectroscopy-compendium-basic-ideas-notation-data-and-formulas/atomic-spectroscopy
// https://www.nist.gov/pml/atomic-spectra-database
struct Spectrum
{
    static constexpr unsigned _num_points{ 7810 };
    using Axis = std::array< double, _num_points >;

    static constexpr Axis _x{ [] ()            // wavelength, nm
        {
            Axis a {};
            for( unsigned i = 0; i < _num_points; ++i )
            {
                a[ i ] …
Run Code Online (Sandbox Code Playgroud)

c++ initialization compile-time stdarray c++17

36
推荐指数
3
解决办法
2420
查看次数

如何将printf()包装到函数或宏中?

这听起来有点像面试问题,但实际上是一个实际问题.

我正在使用嵌入式平台,并且仅提供这​​些功能的等价物:

  • 的printf()
  • 的snprintf()

此外,printf()实现(和签名)很可能在不久的将来发生变化,因此对它的调用必须驻留在一个单独的模块中,以便以后易于迁移.

鉴于这些,我可以在一些函数或宏中包装日志记录调用吗?目标是我的源代码THAT_MACRO("Number of bunnies: %d", numBunnies);在一千个地方调用,但是只能在一个地方看到对上述函数的调用.

编译器:arm-gcc -std = c99

c logging c99 word-wrap

28
推荐指数
4
解决办法
6万
查看次数

Python中的长导入

我很少写点东西

from blqblq.lqlqlqlq.bla import fobarbazbarbarbazar as foo
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
Run Code Online (Sandbox Code Playgroud)

这需要超过80个字符.官方Python编码风格指南中未涉及此情况.如何写python这样的导入?

python coding-style

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

在C++ 14中,const迭代器是否仍然是邪恶的

Scott Mayers的"Effective STL"第26项被标记为"Prefer iteratorto const_iterator,reverse_iteratorand const reverse iterator".

原因在于某些形式的insert()并且erase()要求完全iterator和从其他类型转换是乏味且容易出错的.此外,根据STL实施,比较iterator并且const_iterator可能存在问题.

这本书是在2001年发布的.第26项中的建议是否仍然适用于当前的gcc状态?

c++ iterator c++14

19
推荐指数
2
解决办法
784
查看次数

关于声明的螺旋规则 - 何时出错?

我最近学习用于去复制复杂声明的螺旋规则,它必须用一系列typedef编写.但是,以下评论警告我:

经常引用的简化,仅适用于少数简单案例.

我找不到void (*signal(int, void (*fp)(int)))(int);"简单的案例".顺便说一句,哪个更令人担忧.

所以,我的问题是,在哪种情况下,我应用规则是正确的,哪些是错误的?

c declaration

14
推荐指数
4
解决办法
4038
查看次数

什么是.w和.n后缀添加到手臂装配说明?

我们在里面write_four_registers_and_readback()和下一个指令是打电话delay(10):

004002a4:   b.n 0x4002f4 <write_four_registers_and_readback+172>
 78               delay(10);
Run Code Online (Sandbox Code Playgroud)

ARM指令集中我们了解到它b是分支,然后是两个字母的助记符

例:

CMP R1,#0 ; Compare R1 with zero and branch to fred
          ; if R1 was zero, otherwise continue
BEQ fred  ; to next instruction.
Run Code Online (Sandbox Code Playgroud)

但这.n似乎没有包含在两个字母的助记符表中......坦率地说,它也不是两个字母的助记符.这是什么意思.

这个数字是什么意思0x4002f4?它只是地址的绝对表示<>吗?或者别的什么 - 点4.4.3 Assembler syntax似乎没有解释.

设备是SAM4S和工具链是arm-none-eabi-gcc.

assembly arm

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

什么是C中的复合类型?

§6.2.7.5(第66页):

示例给定以下两个文件范围声明:

int f(int (*)(), double (*)[3]);  
int f(int (*)(char *), double (*)[]);  
Run Code Online (Sandbox Code Playgroud)

由此产生的函数的复合类型是:

int f(int (*)(char *), double (*)[3]);
Run Code Online (Sandbox Code Playgroud)

在示例上方,他们解释了复合类型是一种类型,与两种不同类型兼容.我会直观地将"复合类型"这个短语理解为"结构和联合",这似乎是偏离目标的.

什么是C中的复合类型,它用于什么?有人可以详细解释上面的例子吗?

c language-lawyer c11

11
推荐指数
2
解决办法
1455
查看次数