C语言笔记

寄存器变量

计算机的数据运算是在寄存器中进行的,如果把变量放在寄存器中可以节省一定的时间。

通过在动态变量的定义中使用关键字register,可以请求编译器将该变量存储在寄存器中。

关键字register只能用于简单的数值变量,而不能用于数组、结构、静态变量、外部变量,不能定义指向寄存器变量的指针。

定义示例:register int x;

有的编译器会自己优化,设置变量作为寄存器变量。

 

注:如果寄存器没有空间,则不会放在寄存器中,而是默认的内存中。

以我目前所学,估计用处不大。

 


 

数组初始化

int x[10];

如果不是全局变量或者静态变量,此时数组元素均为垃圾数。

全局变量、静态变量默认为零,但是不同的编译器可能有所不同。

int x[10]={0};

这样数组全部都被置为0。

int x[10]={1};

第0个元素是1,其余均为0。

数组初始化列表中的元素个数小于指定的数组长度时,不足的元素补以默认值。

 


 

运算过程中变量超出范围

几个变量做运算时,实际上创建了一个临时变量来存储得到的值,然后再转换成目标变量的类型。

比如说2个int类型变量相乘,就有可能超出数据范围。现在想起来感觉是理所当然的,不过当时真的没有发觉。

int i,j;

long long sum;

sum+=i*j;

这样就有可能出错,也许是被long long 蒙蔽了眼睛。

 

补充:

这种情况下就需要用到类型转换或者类型标识。

比如说:

long bigInterval = 7 * 30 * 24 * 60 * 60 * 1000;

应该写成:

long bigInterval = 7L * 30L * 24L * 60L * 60L * 1000L;

另之前一直弄错了 int 类型的范围,约等于 -2*10^9~2*10^9 。。误以为是10次方,都是泪啊啊啊啊

 

 


 

posted @ 2018-09-20 21:19  参婵  阅读(109)  评论(0编辑  收藏  举报