关于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)
数组下标访问有乘法运算,而指针访问是没有的,大家知道:加减运算天生第一,乘除法运算比加减慢很多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值