C++程序设计基础知识学习

本文详细介绍了C++中的数据类型,包括short int的取值范围和赋值规则,以及常量、变量的定义和运算符的使用。讨论了键盘输入值对short int的影响,以及不同数据类型的混合运算。同时,提到了运算符的优先级和位运算。此外,还涵盖了符号常量与常变量的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二章

数据类型:

常见数据类型:[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;


short int 输入赋值
图一
short int 输入赋值
图二

综上可得,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。


变量:

  1. 命名规则:只能由字母、数字和下划线组成,且首位必须为字母或下划线。
  2. 常变量:在定义变量时加上关键字const,常变量定义后无法修改值,只能在定义时赋初值。(常变量与符号常量的区别:符号常量为用一个符号代表常量,符号常量没有类型,预编译时直接用常量代替符号;常变量有类型,有存储空间)


运算符:

常用运算符:

  1. 算术运算符:+、-、*、/、%、++、–
  2. 关系运算符:>、<、>=、<=、==、!=
  3. 逻辑运算符:&&、|| 、!
  4. 位运算符:<<(按位左移)、>>(按位右移)、&(按位与)、|(按位或)、^(按位异或)、~(按位取反)
  5. 三目运算符:A?B;C(A为真时执行B,否则执行C)


算数运算符于表达式:

基本算术运算符:

  1. float型数据运算时会转化为double型
  2. 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值