关于c语言的深入剖析——一些小细节

n=偶数 n+1=n/2 n=奇数 n+1=3*n+1
当n为1时程序宣告终止,按这种方式产生的叫冰雹数,无论n取多少,都是有限的,这个命题是否为真有待争论.不知能否有人用数学推出来呢?

for循环中++i比i++理论上来讲效率更高,因为可以少用一个临时变量,可以通过重载运算符理解,当然作用是一样的

一般要采用register int i这种方式,存储类型限定符应先出现,但现在int register int i这种方式也被大多编译器所接受

rand()%2 这个2可替换为其他数字,代表0 ~n-1的随机数范围

#include<stdio.h>
int main(void)
{
extern int a,b,c;
printf("%d %d %d",a,b,c);
}
static int a=1,b=2,c=3;
这个程序编译器会报错,因为static将变量隐藏了,但是部分编译器还是会输出正确结果,比如gcc

C Programing Language很不错。建议大家都去看

书上(C Programing Language)说指针访问的效率要高一些,原理是:
char test[1024];
指针访问:
char * lpcSource = test;
for( int i = 0; i < sizeof( test ); i++ ) {
*lpcSource++ = 0;
}
每一次访问是
*lpcSource++ = *(lpcSource+1) = *( (char * )lpcSource + 1)
数组下标访问:
for( int i = 0; i < sizeof( test ); i++) {
test[ i ] = 0;
}
每一次访问是
test[ i ] = *(test + i ) = *( (char * )lpcSource + i * 1)
数组下标访问有乘法运算,而指针访问是没有的,大家知道:加减运算天生第一,乘除法运算比加减慢很多。

你可能感兴趣的:(c,存储,语言,编译器)