我试图查看 == 和 != 之间的速度差异,我突然想到 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)
请帮忙
如果您应该从 main 返回 0 ,并且 EXIT_SUCCESS 是“实现定义的”,并且它字面上说它不需要为 0,那么如果您不能依赖它是正确的值,那么它的意义何在?我错过了什么吗?
我感兴趣的是两者之间是否存在理论速度差异
fwrite(str , 1 , 100 , fp );
Run Code Online (Sandbox Code Playgroud)
和
fwrite(str , 100 , 1 , fp );
Run Code Online (Sandbox Code Playgroud)
基于 glibc 中函数的编写方式、它进行的写入调用次数以及缓冲方式(忽略 gcc 上的硬件差异)。
我需要对减法结果进行平方,并且需要速度快。
我已经确定了一些可能的方法,但我想听听优点和缺点
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) 我根本无法理解 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 ×5