相关疑难解决方法(0)

C++中的逻辑XOR运算符?

有这样的事吗?这是我第一次遇到它的实际需要,但我没有看到Stroustrup中列出的一个.我打算写:

// Detect when exactly one of A,B is equal to five.
return (A==5) ^^ (B==5);
Run Code Online (Sandbox Code Playgroud)

但是没有^^运营商.我可以在^这里使用bitwise 并得到正确的答案(无论机器表示真和假)?我从来没有拌&&&,或|||,所以我毫不犹豫地做到这一点与^^^.

我会更自在地编写自己的bool XOR(bool,bool)函数.

c++ operators logical-operators

274
推荐指数
9
解决办法
27万
查看次数

C中的MIN和MAX

在C中的位置MINMAX定义,如果有的话?

实现这些的最佳方式是什么,尽可能通用和安全?(首选编译器扩展/内置主流编译器.)

c max min c-preprocessor

265
推荐指数
11
解决办法
67万
查看次数

整数除法的行为是什么?

例如,

int result;

result = 125/100;
Run Code Online (Sandbox Code Playgroud)

要么

result = 43/100;
Run Code Online (Sandbox Code Playgroud)

结果总会成为师的底线吗?什么是定义的行为?

c math c99 integer-division c89

197
推荐指数
6
解决办法
34万
查看次数

C编程中的不动点算法

我正在尝试创建一个高精度存储股票价格的应用程序.目前我正在使用双倍这样做.为了节省内存,我可以使用任何其他数据类型吗?我知道这与定点运算有关,但我无法弄明白.

c fixed-point

24
推荐指数
3
解决办法
5万
查看次数

为什么我能够在Linux内核模块中执行浮点运算?

我正在使用x86 CentOS 6.3(内核v2.6.32)系统.

我将以下函数编译成一个简单的字符驱动程序模块作为实验,以了解Linux内核如何对浮点运算做出反应.

static unsigned floatstuff(void){
    float x = 3.14;
    x *= 2.5;
    return x;
}

...

printk(KERN_INFO "x: %u", x);
Run Code Online (Sandbox Code Playgroud)

编译的代码(这是没有预料到的)所以我插入了模块并检查了日志dmesg.日志显示:x: 7.

这看起来很奇怪; 我以为你不能在Linux内核中执行浮点运算 - 除了一些例外kernel_fpu_begin().模块是如何执行浮点运算的?

这是因为我在x86处理器上吗?

c linux x86 gcc linux-kernel

12
推荐指数
2
解决办法
6874
查看次数

划分两个整数并舍入结果,而不使用浮点

我需要将两个数字分开并将其四舍五入.有没有更好的方法来做到这一点?

int myValue = (int) ceil( (float)myIntNumber / myOtherInt );
Run Code Online (Sandbox Code Playgroud)

我发现不得不投两个不同的时间.(extern int cast只是为了关闭警告)

注意我必须内部转换才能浮动

int a = ceil(256/11); //> Should be 24, but it is 23
              ^example
Run Code Online (Sandbox Code Playgroud)

c++

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

如何将浮点数舍入到C中最接近的整数?

有没有办法在C中舍入数字?

我不想使用ceil和地板.还有其他选择吗?

当我用Google搜索答案时,我遇到了这段代码:

(int)(num < 0 ? (num - 0.5) : (num + 0.5))
Run Code Online (Sandbox Code Playgroud)

即使float num = 4.9,上面的行总是将值打印为4.

c rounding

7
推荐指数
3
解决办法
6万
查看次数

C动态printf double,不损失精度,没有尾随零

我是C的新手,从书本上学习/在互联网上学习.我正在尝试编写一个我可以传递给任何函数的函数,double并返回一个intprintf("%.*lf" ...语句中使用的函数,这样返回的函数int既不会降低精度也不会产生尾随零.

我有一个工作函数,但它很大,因为它是为了可读性而编写的,所有注释都是如此.

为了总结这个函数,我计算得到该double范围所需的除以10的除法10 > d >= 0,只取小数部分并将其放入string带有n个小数位的位置n = 15 - number_of_digits_left_of_decimal(我读取该类型double只能跟踪15位数),检查string从右到左的尾随零并保持计数,最后返回一个int代表小数点右边非零数字的数字.

有没有更简单的方法?谢谢.

int get_number_of_digits_after_decimal(double d)
{
  int i = 0;      /* sometimes you need an int */
  int pl = 0;     /* precision left = 15 - sigfigs */
  int sigfigs = 1; /* the number of digits in d */
  char line[20];  /* used to find …
Run Code Online (Sandbox Code Playgroud)

c floating-point printf

6
推荐指数
2
解决办法
7895
查看次数

google mock - 我可以在同一个模拟对象上多次调用EXPECT_CALL吗?

如果我EXPECT_CALL在同一个模拟对象上调用两次TEST_F...怎么了?

期望是附加到模拟对象还是第二次调用会消除第一次调用的效果?

我发现After After Clause似乎暗示允许多次调用同一个mock + EXPECT_CALL.

unit-testing googletest googlemock

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

C中四舍五入的有符号整数除法

我想计算 x/y,其中 x 和 y 都是有符号整数,并将结果四舍五入到最接近的整数。具体来说,我想要一个rquotient(x, y)仅使用整数算术的函数,以便:

ASSERT(rquotient(59, 4) == 15);
ASSERT(rquotient(59, -4) == -15);
ASSERT(rquotient(-59, 4) == -15);
ASSERT(rquotient(-59, -4) == 15);

ASSERT(rquotient(57, 4) == 14);
ASSERT(rquotient(57, -4) == -14);
ASSERT(rquotient(-57, 4) == -14);
ASSERT(rquotient(-57, -4) == 14);
Run Code Online (Sandbox Code Playgroud)

我已经向 SO 寻求解决方案,并发现以下内容(每个都有自己的缺点):

c signed integer-division

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