首页 > 编程 > Java > 正文

c++从0开始到选择java第一章+第二章-----基本内置类型与变量(1)

2019-11-06 06:59:28
字体:
来源:转载
供稿:网友

第一章没有什么讲的

iostream库包含两个基础类型istream和ostream

直接第二章吧

算数类型比较不常见的wchar_t 宽字符,char16_t,char32_t Unicode字符。

unsigned char c=-1结果输出是255----》有符号的-1是11111111  第一位是符号位嘛,然后转换为无符号类型,就成了255

signed char c2=256;给带符号类型一个超出它表示范围的值时,结果是未定义的。

也就是说不要混用带符号与无符号类型

这里有个例子:unsigned u=10;int i=-42;cout<<i+i<<endl;//输出-84;cout<<u+i<<endl;//如果Int占32位,输出4294967264;

字面值常量的形式和值决定了它的数据类型十进制字面值的类型是int long longlong 中尺寸最小值,如果一个字面值与之关联的最大的数据类型都放不下,将产生错误,就比如,cout<<2222222222222222222222222222222222222222<<endl;输出什么数字我也不知道。

严格来说,十进制字面值不会是负数,如果我们使用了一个形如-42的负十进制字面值,那个负号并不在字面值之内,它的作用仅仅是对字面值取负值而已;

可以通过前缀后缀来指定字面值的类型,比如42ULL,无符号整型字面值,类型是unsigned long long;    L'a',宽字符型字面值,类型是wchar_t;

对象的初始化与赋值不一样,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来代替;

列表初始化:int units_sold=0;int units_sold={0};int units_sold(0);int units_sold{0};

但是如果我们使用列表初始化且初始值存在丢失信息风险时,编译器将报错。

比如:long double ld=3.1415926;   int a{ld},b={ld};//错误,转换未执行    int a=ld//正确,但丢失了部分值

默认初始化比较重要,如果时内置类型的变量未被显示初始化,它的值由定义的位置决定,定义于任何函数体之外的变量被初始化位0,定义在函数体内部的内置类型变量将不被初始化,一个未被初始化的内置类型变量的值是未定义的。总的来说,定义于函数体内的内置类型的对象如果没有初始化,则其值未定义,类的对象如果没有显式的初始化,则其值由类确定。

声明使得名字为程序所知,定义负责创建与名字关联的实体;

如果想要声明一个变量而非定义它,就在变量名前加关键字extern,而且不要显式地初始化变量;

extern int i;//声明i而非定义i                 int j//声明并且定义j                  extern double pi=3.14//定义

注意::在函数体内部,如果试图初始化一个由extern关键字标记地变量,将引发错误。

作用域:没什么好说的,直接举个例子吧

int main(){    string p="23";    cout<<p;    {        int p=12;        cout<<p;    }}//p会分别输出23  12;但是:

int main(){    cout<<p;    string p="23";    cout<<p;        int p=12;        cout<<p;}//这样会出错,因为string p与int p产生了冲突;


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表