小编dev*_*l05的帖子

“if”和“else”之间的执行速度是否不同?

我试图查看 == 和 != 之间的速度差异,我突然想到 if-else 中的顺序可能并不重要。纯粹从逻辑上讲,如果您需要测试一个条件,并且只有两个选项,那么跳到“if”部分或“else”部分应该没有任何区别。

至少这是我的思考过程,对它的实际运作方式一无所知。这就是你进来的地方。

这是一些代码来显示我想要选择的内容:

if (x == 10)
    // do stuff. this will be true 20% of the time
else
    // do frequent stuff
Run Code Online (Sandbox Code Playgroud)
if (x != 10)
    // do frequent stuff 80% of time
else
    // do other stuff 20% of the time
Run Code Online (Sandbox Code Playgroud)

请帮忙

c

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

为什么 EXIT_SUCCESS 和 EXIT_FAILURE 是“实现定义的”?

如果您应该从 main 返回 0 ,并且 EXIT_SUCCESS 是“实现定义的”,并且它字面上说它不需要为 0,那么如果您不能依赖它是正确的值,那么它的意义何在?我错过了什么吗?

c

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

如果可以选择 fwrite() 100 1 个字节或 1 100 个字节,应该首选哪种方法?

我感兴趣的是两者之间是否存在理论速度差异

fwrite(str , 1 , 100 , fp );
Run Code Online (Sandbox Code Playgroud)

fwrite(str , 100 , 1 , fp );
Run Code Online (Sandbox Code Playgroud)

基于 glibc 中函数的编写方式、它进行的写入调用次数以及缓冲方式(忽略 gcc 上的硬件差异)。

c

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

求减法结果平方的最快方法?

我需要对减法结果进行平方,并且需要速度快。

我已经确定了一些可能的方法,但我想听听优点和缺点

unsigned int a = 5;
unsigned int b = 7;


/* Approach 1a */
unsigned int c  = (a - b) * (a - b);

/* Approach 1b */
int d = (a - b);
unsigned int e = d * d;


/* Approach 2a */
unsigned int f = abs(a - b) * abs(a - b);

/* Approach 2b */
unsigned int g = abs((a - b) * (a - b));

/* Approach 2c */
unsigned int …
Run Code Online (Sandbox Code Playgroud)

c

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

解释为什么“负”无符号数相乘会产生正确的结果

我根本无法理解 4294967294 与 4294967292 相乘如何得出 8。

代码示例:

#include <stdio.h>

unsigned int a = -2;
unsigned int b = -4;

int main()
{
    printf( "a     = %u\n"
            "b     = %u\n"
            "a * b = %u\n", 
            a, b, a*b
    );

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

请提供有关这些位发生的情况及其原因的逐步解释。如果可能,请提供证据证明这在 C99 或 C11 标准下是合法的。评论这是否会通过“代码审查”。

c

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

标签 统计

c ×5