我想做以下事情
char a[] = { 'A', 'B', 'C', 'D'};
Run Code Online (Sandbox Code Playgroud)
但我不想单独写这些字符.我想要类似的东西
#define S "ABCD"
char a[] = { S[0], S[1], S[2], S[3] };
Run Code Online (Sandbox Code Playgroud)
但这不会编译(gcc说'初始化元素不是常数').
我尝试用#define替换
const char S[] = "ABCD";
Run Code Online (Sandbox Code Playgroud)
但这似乎没有帮助.
我怎么能这样(或类似的东西)让我把"ABCD"写成普通的'字符串',而不是四个单独的字符?
PS似乎人们没有正确地阅读这个问题......
我无法编译以下代码:
const char S[] = "ABCD";
char t[] = { S[0], S[1], S[2], S[3] };
char u[] = { S[3], S[2], S[1], S[0] };
Run Code Online (Sandbox Code Playgroud) 我在C中寻找一种有效的算法来按位转换8字节的数据.我的意思是,如果我有8个这样的字节:
00011100
00111000
00000001
00000000
11000000
00000000
11111111
01010101
Run Code Online (Sandbox Code Playgroud)
我想获得以下8个字节:
00001010
00001011
01000010
11000011
11000010
10000011
00000010
00100011
Run Code Online (Sandbox Code Playgroud)
由于我想在嵌入式平台上使用它,它应该尽可能快:-)
所有的想法都非常感谢!
我想在CDT中使用Eclipse中的"大纲视图"(因此对于C项目)只显示函数名称.所以没有枚举,包含文件,宏等...
"过滤器..."菜单中有一些选项,但没有一个选项可以仅显示功能.
有谁能够帮我?
我只是尝试了(对我来说)一种新的编程语言:clojure.我写了一个非常天真的"筛子"实现,然后我尝试优化一下.
奇怪的是,虽然(至少对我来说),新的实施并不快,但多慢......
任何人都可以提供一些有关为什么这么慢的见解?
我也对如何改进这个算法的其他技巧感兴趣...
最好的祝福,
Arnaud Gouder
; naive sieve.
(defn sieve
([max] (sieve max (range 2 max) 2))
([max candidates n]
(if (> (* n n) max)
candidates
(recur max (filter #(or (= % n) (not (= (mod % n) 0))) candidates) (inc n)))))
; Instead of just passing the 'candidates' list, from which I sieve-out the non-primes,
; I also pass a 'primes' list, with the already found primes
; I hoped that this would increase …Run Code Online (Sandbox Code Playgroud) 我想将转换float为unsigned long,同时保持的二进制表示float(所以我不希望投5.0给5!).
这很容易通过以下方式完成:
float f = 2.0;
unsigned long x = *((unsigned long*)&f)
Run Code Online (Sandbox Code Playgroud)
但是,现在我需要在a中做同样的事情#define,因为我想稍后在一些数组初始化中使用它(所以[inline]函数不是一个选项).
这不编译:
#define f2u(f) *((unsigned long*)&f)
Run Code Online (Sandbox Code Playgroud)
如果我这样称呼它:
unsigned long x[] = { f2u(1.0), f2u(2.0), f2u(3.0), ... }
Run Code Online (Sandbox Code Playgroud)
我得到的错误是(逻辑上):
lvalue required as unary ‘&’ operand
Run Code Online (Sandbox Code Playgroud)
注意:下面建议的一个解决方案是union为我的数组使用一个类型.但是,这是没有选择的.我实际上在做以下事情:
#define Calc(x) (((x & 0x7F800000) >> 23) - 127)
unsigned long x[] = { Calc(f2u(1.0)), Calc(f2u(2.0)), Calc(f2u(3.0)), ... }
Run Code Online (Sandbox Code Playgroud)
所以数组真的/必须是类型long[].