C 基础 (变量初始化)

原创 2007年10月15日 17:28:00

变量使用之前要对其进行初始化。

char a   --->1个字节

int  b    --->2个字节

float c   --->4个字节

double d   --->8个字节

double i=10.11 和 double i;i=10.11是等效的。

变量的两个属性:

存在性:它具有一个数据类型并以一定的方式存在于内存中。

可见性:在它的作用域中是可见的。

变量的存储类型有四种:

auto   :重新访问值不发生变化,它是局部变量,每进入一次函数就初始化一次

{

auto int a  //auto可以省略不写。

}

register,通过保留字register来完成,它的作用域是和auto一样的,变量保留在cpu的寄存器中,只是对编译程序的一种建议,而不是强制类型的,即可以由系统来调度。

这种变量无法求地址,他是一种宝贵的资源

static  :可保存的,它的生命周期一直延迟到程序的结束。

局部变量不一定赋予初值,编译时对无值的赋予0(auto一定要有初值)

局部变量的作用域与auto,register相同

extern:在函数外部任意位置定义的全局变量

extern的作用域是全局的,在整个C文件中。位置从它被定义的位置开始。

它的生命周期是整个程序的运行期间。

当它和局部变量重名时就被局部变量屏蔽。如果需要就要加上extern保留字。

算术运算符号:+ - * /

他们的优先级别是-(负号) *  /  +  -,它们可以用()调整

左结合原则。

模运算符号%

它的优先级和结合方向同*  /相同

n%m的操作数均为整形数据。

余数的符号与被除数一致:

7%3=1

-2%3=-2

-3%-2=-1

-2%-3=-2

二元操作数据最好两侧一致。

赋值运算=

左操作数一定是变量,右侧可以为常量、变量和表达式。

类型与左端一致。

结合顺序是从右到左。算术运算符的优先级高于赋值运算符

++与- -

它是单目运算符号。它与变量结合。

但是如下的操作(i+j)++是错误的,因为不能返回值给指定的内存区域。

++a 与 a++和其他的语言一致。

如下例子:

i++*++i+i--*--i=?

 

 

 

#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
    
    
int i=3;
    printf(
"i=%d ",(i++*++i+i--*--i));

    getchar();
    
return 0;
}

执行结果:

类型转化:

强制类型转化:

(类型)表达式

逗号表达式:

从左到右执行,

a=(表达式1....表达式n),a为最后一个表达式的值。

逗号表达式的优先级在所有的运算符中是最低的。

 

C与C++变量的初始化

C语言的默认初始化值: 1)全局变量存放在全局数据区,由编译器建立,如果在定义的时候不做初始化,系统会将其自动初始化,数值型为0,字符型和指针变量会自动赋值为NULL。静态变量和全局变量类似。而非静态...
  • qq_33774935
  • qq_33774935
  • 2016年09月02日 11:10
  • 263

【c语言问题系列教程之一】变量声明和初始化

一、基本类型 1.c语言整数类型的大小并没有精确的定义,而是随着编译器的类型而变化,ANSI C能保证的只是数据的最小尺寸。char>=8位,short>=16位,int>=16位,long>=32位...
  • MyLinChi
  • MyLinChi
  • 2016年09月24日 23:49
  • 2077

c语言变量赋值,初始化

数组变量为全局变量,或被部分初始化,均会出现这种情况。 C语言中,变量在没有显式初始化时,区分变量类型,有如下几种情况: 1 全局变量, 和静态局部变量,未初始化时值默认为0.无论是数组还是变量,都...
  • nebulaSong
  • nebulaSong
  • 2016年10月22日 15:57
  • 848

C/C++内存分布与变量初始化顺序

关于入栈、出栈,栈顶栈底之类的分析见 函数调用的压栈出栈过程分析 下面继续分析C/C++的内存分布。 虽然0x10比一个变量需要的4个地址大了一些,但是0x10应该是规定的最小单位了。假如你要...
  • huqinweI987
  • huqinweI987
  • 2016年03月07日 00:48
  • 704

C语言编程规范之我见——变量初始化

C语言编程规范中,一个争论已久的问题,就是变量是否该在定义时进行初始化。 针对这个问题,谈谈我的个人想法。 相比于变量定义时初始化,本人更倾向于变量按需初始化。 当然,变量按需初始化并不是不要在定义时...
  • hantingmao
  • hantingmao
  • 2017年03月14日 15:00
  • 243

C语言声明,定义,赋值,初始化

摘自:http://blog.csdn.net/zlhy_/article/details/8442573 我想不管是现在学C系语言的人,还是学习Java等以及其他语言的人最初的入门语言应该...
  • JCRunner
  • JCRunner
  • 2015年05月08日 11:22
  • 2262

[Object-C]OC实例变量初始化方法

OC实例变量初始化方法 1 使用实例setter方法 默认初始化方法 + setName:xxx setAge:xxx 2 使用实例功能类方法,默认初始化方法 + setName:xxx age:...
  • chenglibin1988
  • chenglibin1988
  • 2013年05月19日 09:38
  • 11835

C语言中static变量详解

google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的初学者来说参考性不是很大。所以,我这篇博文博采众家之长,把互...
  • PengPengBlog
  • PengPengBlog
  • 2016年10月20日 16:49
  • 4293

C语言中全局变量初始化的重要性!!!

在C语言里,全局变量如果不初始化的话,默认为0,也就是说在全局空间里:   int x =0; 跟 int x; 的效果看起来是一样的。但其实这里面的差别很大,强烈建议大家所有的全局变量都要初始化,...
  • macrohasdefined
  • macrohasdefined
  • 2013年04月17日 17:14
  • 3178

C/C++关于全局变量和局部变量初始化与不初始化的区别

原文链接:http://www.kingofcoders.com/viewNews.php?type=newsCpp&id=189&number=4836955386 在C语言里,全局变量如果不初始...
  • hunnu_denny
  • hunnu_denny
  • 2015年03月23日 11:47
  • 1421
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C 基础 (变量初始化)
举报原因:
原因补充:

(最多只允许输入30个字)