请考虑以下代码:
float d = 3.14f;
int i = 1;
auto sum = d + i;
Run Code Online (Sandbox Code Playgroud)
根据cppreference.com,i应该在float添加时转换为d.但是,当我实际运行代码时,我发现它sum是4.为什么会发生这种情况?
有趣的是,当我明确地将我的编译器放入C11模式时,我发现它sum是4.14.C11标准有哪些规则会影响结果?
如果我使用C++编译器编译相同的代码会发生什么?
我写了这样的代码
int a = 0;
int b = 0;
int *m = (int *)malloc(2* sizeof(int));
printf("%x, %x\n", &a, &b);
printf("%x, %x", &m[0], &m[1]);
Run Code Online (Sandbox Code Playgroud)
得到结果:
46372e18, 46372e1c
d062ec20, d062ec24
Run Code Online (Sandbox Code Playgroud)
这不是堆栈增长和堆积?
我想从clojure中的vector中删除连续重复的值
input?[1 1 1 2 2 1 1 3 3]
output?[1 2 1 3]
Run Code Online (Sandbox Code Playgroud)
怎么实现呢?