为了账号安全,请及时绑定邮箱和手机立即绑定

变量和基本类型(一)

标签:
Python

1-基本内置类型

  • char类型, 应该确保可以存放机器基本字符集中任意字符对应的数字值。

  • floatdouble分别有7和16个有效位(long double根据硬件,和需求不同,精度不同)。

  • 字符型分为三种:char,signed char,unsigned char

选择类型的经验:
1. 明确数值不为负,选择无符号类型。
2. 使用int不使用short。
3. 浮点运算用double,不用float(计算代价相差无几)。

类型转换

bool b = 42;  //b为trueint i = b;   //i的值为1unsigned char c = -1;  //假设char占8bit,c的值为225
    - 赋值给无符号类型一个超出它表示范围的值时,  
      结果时初始值对无符号类型表示数值总数取模的余数。 -1%256=255
    - 负数b对a取摸,在b上加a,知道b变为正数,再用这个正数对a取摸。
    - 取摸方法: 1. 求整数商 c=a/b 2.得余数r=a-c*b   
    - ps: c++中取摸同取余, python中是真正的取摸

一个算数表达式中既有无符号数又有int时,int值转换为无符号数。把负数抓换为无符号数结果等于这个负数加上无符号数的模。切勿混用带符号类型和有符号类型。

字面值常量

0开头的整数代表八进制,0x0X开头代表十六进制。八进制和十六进制字面值可以使带符号的。short类型没有对应字面值。默认的浮点类型字面值是double

字符和字符串 如果两个相邻的字符串字面值仅由空格,缩进和换行符分割,他们实际是一个整体。

转义序列 形式:\x后面紧跟一个或者多个十六进制数字,\后紧跟1-3个八进制数字。无十进制转义序列。

使用前缀或者后缀,可以改变字面值的默认类型(p37 表2.2)。nullptr是指针字面值。


2-变量

std::string代表string是在命名空间std中定义的。

在C++中,初始化和赋值是两个概念。初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,以一个新值代替。

  • 列表初始化 初始值存在丢失风险是,编译器报错
    int a = {0};
    int a{0};

  • 一般初始化?
    int a(0); int a = 0;

  • 默认初始化 定义于任何函数之外的变量被初始化为0。定义于函数内部的内置类型将不被初始化。

分离式编译

C++将声明和定义区分开来。声明使名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对呢个名字的生命。定义负责创建与名字相关联的实体。

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

    extern int i; //声明而非定义
    int j;        //声明且定义, 默认初始化为0

如果多个文件中包含同一个变量,必须将声明和定义分离。声明可以多次,但定义必须只能有一次。

标识符规范

用户自定义的标识符中不能出现连续两个下划线的情况,也不能以下划线紧接着大写字母开头。定义在函数体外的标识符不能以下划线开头。

  • 变量名一般用小写字母, 自定义类名一般以大写字母开头。

名字的作用域

C++大多数作用域以花括号分隔。名字的作用域始于声明的语句,名字所在作用域末端结束。



作者:Gorkr
链接:https://www.jianshu.com/p/bdc0dd5064bc


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消