第二章
数据类型:
常见数据类型:[signed]/[unsigned] || [short]/[long] int/char, float, double
//short int型的定义
short int shortInt;
//1、定义时赋值,此时输出值为-32768
short int shortInt = 32768;
cout << shortInt;
//定义时赋值,此时输出值为32767
short int listN = -32769;
cout << listN;
//2、键盘输入值(32768),此时为32767(见图一)
short int shortInt;
cin >> shortInt;
cout << shortInt;
//键盘输入值,此时为-32768(见图二)
short int shortInt;
cin >> shortInt;
cout << shortInt;
图一
图二
综上可得,cin赋值和初始值的规则略有不同
signed int/char 以补码的形式存储,因此取值范围为-(2n)~2(n-1)-1。
但是double/float按IEEE754标准存储(数符、阶码和尾数)
常量:
- 数值常量
- 字符常量
- 普通字符常量(使用单撇号括起来的单个字符)
- 转义字符常量(以反斜杠’\‘开头,注:’\a’是提示音,很有趣)
- 字符串常量(用双撇号括起来的多个字符,通常会再最后自动添加一个’\0’做为字符串结束标志)
- 符号常量,通过define定义用一个符号代表一个常量。
//'\ddd'和'\xhh'的含义为输出ASCII值为0xhh(十六进制)或ddd(八进制)代表的字符,结果见图3
cout << '-' << '\x40' << '-' << endl;
cout << '-' << '\100' << '-' << endl;
cout << '-' << '\080' << '-' << endl;
cout << '-' << '\x80' << '-' << endl;
//印证,结果见图4
char tmp;
cin >> tmp;
cout << (int)tmp;
图3
图4
!!! '\080’是什么
1、部分平台直接报错,因为八进制中没有8
2、部分平台特殊处理:'中\先和0结合,然后将’8’和’0’视为单个字符(char型),首先得到\0的ASCII码(0),再得到8的ASCII码(56即二进制0011 1000)和0的ASCII码(48即二进制0011 0000),最后依次拼接为0000 0000(\0)0011 1000(8)0011 0000(0)即11100000110000转为十进制即为14384。
变量:
- 命名规则:只能由字母、数字和下划线组成,且首位必须为字母或下划线。
- 常变量:在定义变量时加上关键字const,常变量定义后无法修改值,只能在定义时赋初值。(常变量与符号常量的区别:符号常量为用一个符号代表常量,符号常量没有类型,预编译时直接用常量代替符号;常变量有类型,有存储空间)
运算符:
常用运算符:
- 算术运算符:+、-、*、/、%、++、–
- 关系运算符:>、<、>=、<=、==、!=
- 逻辑运算符:&&、|| 、!
- 位运算符:<<(按位左移)、>>(按位右移)、&(按位与)、|(按位或)、^(按位异或)、~(按位取反)
- 三目运算符:A?B;C(A为真时执行B,否则执行C)
算数运算符于表达式:
基本算术运算符:
- float型数据运算时会转化为double型
- int型运算时有时采用“向零取整”,有时采用“向下取整”
int i = -5/3;
//向零取整
i = -1;
//向下取整
i = -2;
运算符之间的优先等级:(优先级越低优先度越高,仅列出部分运算符)
优先级 | 运算符 | 结合方向 |
---|---|---|
2 | () [] -> . ++(后置时) --(后置时) | 自左向右 |
3 | ++(前置时) --(前置时) ! -(做符号时) +(做符号时) *(指针) &(取址) (类型)(类型转换) sizeof new delete | 自右向左 |
4 | * / % | 自左向右 |
5 | + - | 自左向右 |
6 | <<(左位移运算) >>(右位移运算) | 自左向右 |
7 | < <= >= > | 自左向右 |
8 | == != | 自左向右 |
混合数据类型运算时数据类型的处理:有符号转无符号,short转long,char转int,int转double,float转double(float参与运算时自动转double)
例:
int i;
char c;
float f;
double d;
//省略赋值细节
...
10 + 'a' + i * f - d
//先计算10 + 'a' 此时将char型字符'a'转为int型整数
//再计算i * f,由于int型和float型混合运算,float型运算时转为double型,因此结果为double型
//综上为:int + char + int * float(double) - double = double
//下列两式之间等价
x % = y + 8;
x = x % (y + 8);
//下式最后a的值为60
a = 3 * 5 , a * 4
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/105365.html