基础、、

十进制  : decimal

八进制  : octal

十六进制 : hexadecimal

不可打印字符和特殊字符都用转义字符书写,转义字符都以反斜线符号开始,c++语言中定义了如下转义字符:

换行符 : \n

水平制表符: \t

纵向制表符: \v

退格符: \b

回车符: \r

进纸符: \f

报警符: \a

反斜线: \\

问号: \? 单引号: \‘ 双引号: \“

也可以以一下的方式表示任何字符: 八进制: \ooo  十六进制: \xddd

每个定义以类型说明符开始(type specifier)

类型决定了分配给对象的存储空间的大小和可以在其上执行的操作。

initiali

变量定义指定了变量的类型和标识符,而定义时指定了初始值的对象被称为是已初始化的initialized。

c++支持两种初始化变量的形式:

复制初始化(copy-initialization)

直接初始化(direct-initialization)

int ival(22);

int ival=22;

注意区别:初始化不是赋值。


int month=9,day=7;

int month=09,day=07;

这两个定义不同。前者定义了两个int型变量,初值分别是9和7,后者也定义了两个int型变量,其中day被初始化为八进制值7;而month的初始化有错:试图将month初始化为八进制值09,但八进制数字范围为0~7.所以出错。可以修改为:int month=011,day=07;

变量初始化规则:

内置类型变量是否初始化决定于变量定义的位置:

在函数体外定义的变量都初始化为0,在函数体内定义的内置类型变量不进行自动的初始化。

类类型变量的初始化:

每个类都定义了该类型的对象可以怎样初始化,类通过定义一个或多个构造函数来控制类对象的初始化,如果定义某个类的变量时没有提供初始化式,则会通过默认构造函数来实现初始化。

eg:

std::string global_string;

int global_int;

int main()

{

int local_int;

std::string local_string;

//...

  return 0;

}

上面的例子中globa_string 和 loca_stirng的初始值都是空字符串,global_int的初始值是0,local_int没有初始值。

声明和定义

在程序中变量可以声明多次,但是只能定义一次。

可以通过extern关键字声明变量名而不定义它。如:extern int i;//declares but does not define i

int  i;      //declares and define i

只有当extern声明位于函数外部时,才可以有初始化式。

如:

extern double pi=3.1416;//definition

extern double pi;       //ok:declaration not definition

extern double pi=3.1416;//error:redefinition of pi

我们经常在c++中见到:extern “C”是使得c++可以调用用c编写的库文件的手段,并提示编译器使用c的方式来处理函数。

example:

extern std::string name;说明std::string变量name在程序的其他地方定义。

std::string name(”extern 1“);定义了std::string变量name,并将name初始化为“extern 1”。

extern std::string name(“extern 1”);定义了std::string变量name,并将name初始化为“extern 1”,但这个语句只能出现在函数的外部(name是一个全局变量);

名字的作用域:

c++程序中,每个名字与唯一的实体相关联。用来区别名字的不同意义的上下文称为作用域(scope),一个名称可以和不同作用域中的不同实体相关联。

以下程序:

#include <iostream>

int main()

{

int sum=0;

for(int val=0;val<=10;val++)

sum+=val;

std::cout<<"sum of 1 to 10 inclusive is "<<sum<<std::endl;

return 0;

}

程序定义了一个名为main的函数,以及两个名为val和sum的变量,main定义所有的花括号之外,在整个程序可见。定义在所有函数外部的名字具有全局作用域(global scope),可以在程序的任何地方访问。sum定义在main函数的作用域中,在整个main函数中都可以访问,但在main函数之外则不能。sum具有局部作用域(local scope),名字val定义在for语句的作用域中,只能在for语句中使用,不能在main函数的其他地方使用,它具有语句作用域(statement scope)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值