小编ldo*_*dog的帖子

优化浮点除法和转换操​​作

我有以下公式

float mean = (r+b+g)/3/255.0f;
Run Code Online (Sandbox Code Playgroud)

我想加快速度.有以下先决条件

0<= mean <= 1  and 0 <= r,g,b <= 255 and r, g, b are unsigned chars
Run Code Online (Sandbox Code Playgroud)

因此,如果我尝试使用>> 8就像除以256的事实,我会使用类似的东西

float mean = (float)(((r+b+g)/3) >> 8);
Run Code Online (Sandbox Code Playgroud)

这将始终返回0.有没有办法跳过昂贵的浮动分区,最终仍然是0到1之间的平均值?

c c++ algorithm floating-point

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

通过 JNI C 代码将 PNG 图像作为 BufferedImage 加载到 Java 中

我有以下问题。我有 C 代码,它获取 PNG 图像作为基本原始数据并将其保存在内存中。我希望通过使用 JNI 将这些原始数据转换为 Java 中的 BufferedImage。有谁知道这样做的任何方法或以前做过吗?

java java-native-interface bufferedimage

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

将一个数组的内容复制到另一个数组会导致内存泄漏

此代码是否会导致内存泄漏:

int main(){

   int * a = new int[10];
   int * b  = new int[10];
   for(int i = 0 ; i < 10; i++)
   {
       a[i] = 1;
       b[i] = 1;
   }

   for(int i = 0 ; i < 10; i++)
   {
       a[i] = b[i]; //each a[i] is allocated 4 bytes on heap
                    //when we copy b[i] into a[i] do we loose 
                    //the reference to a[i] (hence a leak), 
                    //and replace that reference
                    //with a reference to a new value? …
Run Code Online (Sandbox Code Playgroud)

c++ memory memory-leaks

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

是否有任何数据支持腕管与使用键盘繁重的编辑器(如 Emacs 或 Vim)之间的相关性?

我有一些诱发腕管的诱发因素,并希望尽可能避免它。然而,我确实想使用 Vim 或 Emacs,我想从其他人的经验中学习。

是否有任何研究表明使用 Vim 或 Emacs 等键盘繁重的编辑器与发展腕管综合症之间存在相关性或缺乏相关性?

vim emacs ergonomics

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

C可变范围特定问题

这是一个特定的场景,我很长一段时间都不清楚(在范围方面).

考虑代码

#include <stdio.h>


typedef struct _t_t{
    int x;
    int y;
} t_t;

typedef struct _s_t{
    int a;
    int b;
    t_t t;
}s_t;

void test(s_t & s){
    t_t x = {502, 100};
    s.t = x;
}


int main(){
    s_t s; 
    test(s);

    printf("value is %d, %d\n", s.t.x, s.t.y);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是

value is 502, 100
Run Code Online (Sandbox Code Playgroud)

对我来说有点混乱的是以下几点.声明

t_t x
Run Code Online (Sandbox Code Playgroud)

在函数测试的范围内声明.所以从我读到的关于C编程的内容来看,它应该是垃圾范围之外的.然而它返回了正确的结果.是因为行上的"="st = x; 将x的值复制到st?

编辑 - -

经过一些实验

#include <stdio.h>


typedef struct _t_t{
    int x;
    int y;
} t_t;

typedef struct _s_t{ …
Run Code Online (Sandbox Code Playgroud)

c++ scope parameter-passing pass-by-reference argument-passing

0
推荐指数
2
解决办法
398
查看次数

如何准确地划分两个双打

我有两个

double a, b;
Run Code Online (Sandbox Code Playgroud)

我知道以下是真的

-1 <= a/b <= 1
Run Code Online (Sandbox Code Playgroud)

但是b可以任意小.当我天真地这样做,只是计算价值

 a/b
Run Code Online (Sandbox Code Playgroud)

上面指定的条件在某些情况下不成立,并且我得到的值绝对值大于1(如13或14)

我怎样才能确保当我除以b时,得到一个值,以便可以强制执行上述条件.在我不能保证这一点的情况下,我很乐意将计算值a/b设置为0.

c++ math floating-point double

0
推荐指数
2
解决办法
4019
查看次数