【Linux C 程序设计】(一)基础知识

1.goto语句

#include<stdio.h>
int  main()
{
  printf("Begin ....\n");
 // goto Go;
  printf("Continue ....\n");
  Go:
  printf("End ....\n");
}

输出结果

[root@localhost workplace]# ./goto 
Begin ....
Continue ....
End ....


注意:goto语句程序本身也要运行。

 

2.优化控制结构

a.使用替换程序中的乘除法

加减法只占一个时钟周期,位运算和移位操作的执行速度和加减法接近。乘法需要5到6个时钟周期,除法执行最慢,大约需要50个时钟周期。

乘法都可以使用移位指令代替 a*13 = a<<3 + a +a<<2。除法则只有2的幂才能使用。


b.常量折叠

将常量结果计算好,但不易于阅读

c.使用数学公式代替

d.存储问题

x=x+1;

执行过程分三步

x+=1;

执行过程只有两步

e.分支优化,改变判断顺序

将判断可能性比较大的放在前面,减少判定次数

f.循环优化,一次性计算

对于循环中一次性计算,应当将其放置到循环外面

h.调用函数很费事,最后减少调用

i.不要将循环算子等高频率使用的变量设置为全局变量或者静态变量

 

3.全局变量,局部变量

局部变量存储在函数的栈上,栈消失,变量也消失

全局变量存储在固定的存储区

对于全局变量来说,如果一个全局变量未被初始化,其初始值有编译器自动设置为0。而局部变量存储在内存的堆栈中,定义之后,不会将其初始化为0,而是使用其占用内存空间原有的值,是一个随机值。

 

4.全局变量

a.c

#include<stdio.h>

double a;
void f()
{
	a=-0.0;
}


 

b.c

#include<stdio.h>

void f(void);
int a = 123;
int b = 121;

int main()
{
 f();
 printf("a=%d,b=%d\n",a,b);
 return 0;
}


 

在VS2010上运行结果为

Linux中结果

理由:运行f后,将4字节的a变成8字节,将b的值也清空

5.可变参数

int printf(const char* format,...);


 


 


 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值