75得票3回答
为什么在D语言中0.1 + 0.2 == 0.3?

assert(0.1 + 0.2 != 0.3); // shall be true 这是我最喜欢的一种语言,因为它使用本地浮点数算术。 C++#include <cstdio> int main() { printf("%d\n", (0.1 + 0.2 != 0.3)...

57得票7回答
为什么在C语言for循环的条件中使用表达式而不是常量?

在许多编程竞赛中,我看到人们写这种类型的for循环。for(i = 0; i < (1 << 7); i++) 除非我漏掉了什么,否则这就相当于for(i = 0; i < 128; i++) 为什么要使用版本(1 << 7)? 每次计算条件不是多余的开销吗?

47得票1回答
为什么GCC在C++<cmath>中比在C<math.h>中更有效地实现isnan()函数?

这是我的代码:int f(double x) { return isnan(x); } 如果我添加#include &lt;cmath&gt;,我会得到这个汇编代码:xorl %eax, %eax ucomisd %xmm0, %xmm0 setp %al 这是相当巧妙的:uc...

45得票2回答
log(10.0)可以编译,但log(0.0)无法编译且出现未定义的引用错误?

以下是C语言源代码: #include &lt;math.h&gt; int main(void) { double x; x = log(0.0); return 0; } 当我使用gcc -lm编译时,出现以下错误: /tmp/ccx...

15得票2回答
变长数组折叠成常量数组

const int buf_length = 255; char buf[ buf_length + 1 ]; snprintf(buf, buf_length, "%d Next on [%s] %s:", channel, station_channel(channel), statio...

10得票1回答
为什么要避免在Java中进行常量折叠?何时需要避免?

我看到 slf4j 中有一些代码如下所示。我不知道为什么要在这里避免常量折叠。这是必需的吗?还是最佳实践?这样做的好处是什么? 谢谢。/** * Declare the version of the SLF4J API this implementation is compiled ag...

10得票1回答
C++循环中的常量折叠用于素数

看过之前的问题 1, 2 后,我想知道是否可以强制编译器对打印质数的以下代码执行常量折叠。#include &lt;iostream&gt; using namespace std; inline bool is_prime(int n) { if(n&lt;2) ...

9得票2回答
Java编译器中的常量折叠是什么?

可能重复: Java中是否存在“常量折叠”概念? 您好,我遇到了一行代码,Java编译器使用了称为“常量折叠”的东西。这是什么?它会产生什么影响?

9得票4回答
GCC复合常量折叠

看起来gcc在复杂常量折叠方面有一些限制。这里是一个例子: static inline unsigned int DJBHash(const char *str) { int i; unsigned int hash = 5381; for(i = 0; i &lt; s...

8得票2回答
减去无符号整数和有符号整数以及常量折叠

基于这个有趣的问题:Addition of int and uint,并按照Nicholas Carey的答案中提到的对于常量折叠进行试验,我发现编译器似乎表现不一致: 考虑下面的代码片段: int i = 1; uint j = 2; var k = i - j; 在这里,编译器正确...