【CPP】大一C++课本知识记录 第二篇 数据类型、运算符和表达式

匈牙利命名法

       命名一个标识符时,若需要用到多个单词,则需要把每个单词的第一个字母大写,如 StudentName;

       如今也有一个新习惯,第一个单词的第一个字母小写,其后的每个单词的第一个字母都大写,如 studentName 。

数据类型的注意点

C++中的基本数据类型可以分为两类,整型和浮点型

整型:

        包括: charintbool enum

        计算机内部采用原码补码的形式来表示这类数据。

        整型不单指 int 型

        char型数据虽然是整型,但整型指的是ASCII表上的数字,输出char型数据时,会显示这些数       对应的字符,若要输出数字,则需用 int() 来强制转换后再输出。

        对整型标志符 char 和 int 加上前后缀,可得到其他类型的整型量,具体如下表:

类型标识符意义占用字节取值范围
signed char有符号字符1-2^7 ~ 2^7-1
unsigned char无符号字符10 ~ 2^8-1
signed short int有符号短整型2-2^15 ~ 2^15-1
unsigned short int无符号短整型20 ~ 2^16-1
signed int有符号整型4-2^31 ~2^31-1
unsigned int无符号整型40 ~ 2^32-1
signed long int有符号长整型4-2^63 ~ 2^63-1
unsigned long int无符号长整型40 ~ 2^64-1
signed long long int有符号超级长整型8-2^64 ~ 2^64-1

:表中的占用字节就是该型数据所占用的存储空间,字节是一种内存单位,内存单位的转化如下:

1 Byte (字节) = 8 Bit (位)

1 KB = 1024 Byte

1 MB = 1024 KB

1 GB = 1024 MB

1 TB  = 1024 GB

典例:

 答案:B  C

分析:数字32768就是2^15,结合提示可知,这个数字超过了b的数据类型可表示的最大的数,所以输出了负号,因此可推知,a的数据类型所能表示的最大数比32468大,b的数据类型所能表示的最大的数比32468小,故只有当b为short型时符合题意,因此选BC。

浮点型:

        包括 float 和 double

        在计算机内部采用浮点形式表示。

        实型就是浮点型。

        double 型能保留16位有效数字,float 型只能保留7位有效数字

int型数据的存储方式

       int 型占四字节,就是占用32个二进制位,因为int是有符号整型,所以他的最左边的那位作为符号位,若是 unsigned 型,则没有符号位,所以其取值范围更大;

       int型在内存中以补码的形式存储,正整数的补码和原码相同,负整数的补码是除符号位以外的原码取反加一;

浮点数的表示方法

       在CS里,称小数为浮点数,就是把传统的小数写法记成科学计数法的形式,举个例子,1.23456,这是传统意义上的小数,对于CS定义的浮点数来说,这是用定点数的形式表示的,小数点永远在那里,不能用定点形式写出第二个和它意义相同而外表不同的数;

       如果用浮点数形式来写1.23456,就可以写成12.3456*10^-1,123.456*10^-2等等,这样小数点就可以自由浮动,精度也可以随之改变了;

       浮点数用二进制来表示,其格式就是:符号位 指数位 小数位

       符号位和负整数是同一类,指数位和小数位就用二进制原码表示;

       其中需要注意的是,指数位写完后是向右补齐,而非常见的向左补齐;

进制转换计算方法

二进制 binary

八进制 octonary

十进制 decimal

十六进制 hex

       小数部分的十进制转二进制:取出小数的小数部分,每次乘2,取出结果的整数部分作为这一位的二进制数,这里详见课本P9;

       整数部分的十进制转二进制:取出整数部分,每次除以2,余数写在一遍,商继续除以2,直至商为1,将余数按自下而上的顺序写出来,就是二进制数。

       八进制和十进制间的转换同上;

      十六进制和十进制间的转换同上,但10,11,12,13,14,15分别用A,B,C,D,E,F表示(小写也行);

      十六进制的各种数据类型的数字也有不同特征,int型在数字前有 0x 或 0X;

       unsigned型在数字后有U或u,无论前面有没有0x,只要后面有U,就是无符号整型;长整型在后面有L或l;

各类常量

1.逻辑型常量:true和false,分别和布尔值1和0对应,用法相同;

2.实型常量:小数形式必须有小数点,其中缺整数部分或缺小数部分都是合法的, .12会被看作0.12,12.会被看作12.0;使用科学计数法,用e或E都可以,但e前一定要有数字(整数浮点数都行),e后一定得是整数,1000应该写成1e3,而不是e3;在程序中直接写出的实型数字,默认为double型,若要表示为float型,可以加上后缀F或f;

3.字符型常量:用单引号括起来的一个字符就是字符型常量,如'a'、'b';

C++中转义符 \ 的用法和python一样,而且\'表示 ' ,\" 表示";

转义符还可以将八进制数和十六进制数转成十进制数在ASCII表上对应的字符,不过只限于在字符型常量使用;

4.字符串常量:用双引号括起来的,和字符型常量的区别在于占用的内存更大;

5.符号常量:也就是宏定义,格式是:#define A n

变量

1.常变量:在程序中,若要使一个变量在接下来的过程中不被修改,也就是保护这个变量的值,就需要将变量说明成常变量,格式是:在变量定义前加上const,例如:const PI=3.14159;要注意常变量定义时必须初始化;

基本运算符和表达式

1.运算符的分类:按运算对象的数量来划分,只对一个对象进行运算称为单目运算符,例如“-”取负运算符;

对三个对象进行运算的运算符称为三目运算符,例如“A?B:C”问号表达式中的条件运算符;

2.对于求余运算,其运算量必须是整型量,例如8.0%3.0为非法运算;

3.优先级相同的运算符,结合性存在特殊情况,“=”赋值运算符的结合性是从右至左,例如a=b=c=1,就是先将1赋值给c,再依次赋值给b和a;

       “<”或“>”比较运算符的结合性是从左至右,例如a=1,b=2,c=3,表达式c>b>a的值为0,因为先运算c>b,结果为1,就变成1>a,但显然a=1,所以结果为0;

       由此可见,在C++编程中要避免出现三个值同时比较,因为比较运算符的结合性的实际上的结果,会导致逻辑上的错误;

4.位运算符:按位与、或、异或、非运算,就是把十进制数字写成二进制数,再对每一对数进行逻辑运算,结果的二进制数就是位运算的结果;“<<”和“>>”分别是左移和右移的符号,例如左移就是使二进制数整体向左移动,溢出的舍去,空余的位补0;

5.赋值运算符:“=”为赋值运算符,形如 a=1 的表达式就是赋值表达式,整个赋值表达式的值就是变量获取的值;值得注意的是,表达式 a=5+c=6 是非法赋值,因为不能将数值6赋给 5+c ;

6.逗号表达式:逗号表达式的赋值各赋各的,因为是用逗号连接的一个式子,所以整个式子的值为最右边的式子的值,例如 x=1,a=2,8;这个式子的值为8;

7.sizeof(类型或变量名)运算符,其结果为该类值所占的字节数;

8.逻辑运算符的副作用:逻辑运算符一般是从左向右扫描,与运算里只要出现了0就直接返回0,跳过后面的式子,或运算里只要出现了1也是直接返回1并跳过后面的运算;

9.强制类型转换的实质:转换的对象是转换括号里表达式的值,变量的类型和值并未改变

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值