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

c语言变量赋值,初始化

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

C与C++变量的初始化

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

c语言变量的初始化和赋值的区别

原理 顺着这个思路想了一下,为什么C语言的全局变量(global)就算不赋值会被自动初始化位默认值,但是局部变量(local)不会呢? 学习了一下C语言的内存布局结构,然后自己验证了一下然后明白...
  • Com_ma
  • Com_ma
  • 2017-11-16 08:29:58
  • 626

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

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

C++之类成员变量初始化

1、成员变量在使用初始化列表初始化时,与构造函数中初始化成员列表的顺序无关,只与定义成员变量的顺序有关。因为成员变量的初始化次序是根据变量在内存中次序有关,而内存中的排列顺序早在编译期就根据变量的定义...
  • taozi1234567
  • taozi1234567
  • 2015-06-29 22:08:15
  • 240

c语言夜未眠1——如何初始化各类型变量

对于变量,在定义之后应该及时地初始化。以免在没有初始化的情况下成为右值。对于局部变量,如果没有初始化,那么他的值是不可以预测的,不要期望他将会等于你想要的值。因此,对每一个变量初始化是一个好习惯。 ...
  • booirror
  • booirror
  • 2012-03-31 17:49:46
  • 1778

ST7 cosmic编译器初始化bss全局变量

QP实现过程中,active object无法放入zero page中,只好使用@near修饰符,放入bss段中,但这样带来一个问题,cosmic编译器的startup文件crtsi.s只初始化zer...
  • Gauchy
  • Gauchy
  • 2010-03-11 10:28:00
  • 692

c++ 类中static变量初始化问题

首先static变量只有一次初始化,不管在类中还是在函数中..有这样一个函数: [c-sharp] view plain copy  print? v...
  • myth_HG
  • myth_HG
  • 2017-01-17 09:49:12
  • 3172

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

一、基本类型 1.c语言整数类型的大小并没有精确的定义,而是随着编译器的类型而变化,ANSI C能保证的只是数据的最小尺寸。char>=8位,short>=16位,int>=16位,long>=32位...
  • MyLinChi
  • MyLinChi
  • 2016-09-24 23:49:44
  • 2755
收藏助手
不良信息举报
您举报文章:C 基础 (变量初始化)
举报原因:
原因补充:

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