一 .变量
变量是指在程序运行期间其值可以发生改变的量。每个变量都必须有一个名称作为唯一的标识,且具有一个特定的数据类型。变量使用之前,一定要先进行声明或定义。
1.变量的声明和定义
C++中,变量声明是指为变量提供一个名称,并告诉编译器这个变量将被使用,但不会为其分配内存空间。变量声明的一般形式如下:
- “数据类型”指变量的类型,如整型、浮点型、字符型等。
- “变量名”则是用户给变量起的名称,必须符合标识符的命名规则。
- 多个同一类型的变量可以在一行中声明,变量名之间用逗号隔开。
定义变量时,需要为其分配一块内存空间,以存储其值。语法形式如下:
例如,下面定义了多个变量:
定义多个赋相同初值的变量时,应写成“int a=3, b=3, c=3;”形式,不能写成“int a=b=c=3;”形式。
2.整型变量
用来存储整型数值的变量。
根据占有的内存空间大小,整型变量可分为:
- 基本整型(int)
- 短整型(short)
- 长整型(long)3类。
根据是否有符号
- 可分为有符号整型(signed)
- 无符号整型(unsigned)两类。
因此,整型变量共分为6类。其中,方括号中的关键字可以省略。
不同的整型,其在内存中占用的字节空间不相同,因此可表述的变量数值范围也不同。以32位操作系统为例,短整型、整型、长整型变量占用的字节数和可表示的数值范围。
练习:
下面定义了一个整型变量a,为它分配了4个字节的内存空间,并设初始值为10。
int a=10;
变量赋值时,整型常量后可以加上L或l、U或u等后缀,清晰指明其类型,如1314L、520U等。
根据CPU寄存器位数和编译器的不同,最大的整型数值也会不同。32位操作系统中,基本整型(简称为整型)为4字节,长整型为4字节;64位操作系统中,基本整型为4字节,长整型为8字节。
C++程序中,布尔型(bool)被当作整型对待,false表示0,true表示1。
因此,将布尔型赋值给整型是合理的,将整型赋值给布尔型也是合法的。
例如:
#include<iostream>
int main()
{bool ret;//定义布尔变量retint var=3;//定义整型变量var,并为其赋初始值为3
ret=var;//将整型变量var赋值给bool变量 ret,相当于ret=reture
var=ret;//将布尔型变量ret赋给整型变量var,相当于var=1 std::cout<<var<<std::endl;
}
3 .浮点型变量
浮点型变量分为单精度(float)、双精度(double)和长双精度(long double)3类,其占用的字节数和可表示的数值范围。
- float和double相比,double类型的变量具有更高的精度,即它可以表示更多的小数位数。
- float保留到小数点后7位,有效数字为6~7位;
- double保留到小数点后16位,有效数字为15~16位。
实际开发中,一般多使用double类型,尽可能地避免精度损失。
例如,下面代码声明了多个浮点型变量。
float a;
doubule b;
long double c;
在程序中使用浮点型数据时,需要注意以下两点:
1.浮点型数据相加
浮点型数据的有效数字是有限制的,如float的有效数字是6位或7位,如果将数字86041238.78赋值给float类型,显示的数字可能是86041240.00,个位数8被四舍五入,小数位被忽略。如果将86041238.78与5相加,输出的结果为86041245.00,而不是86041243.78。
2.浮点型数据与0进行比较
在开发程序的过程中,经常会进行两个浮点型数据的比较,此时尽量不要使用==”或“!=”运算符,而应使用“>=”或“<=”之类的运算符。
例如,下述代码直接将浮点型变量与0进行比较,不是高质量的代码。可能会产生未知的结果。
float a=0.000001;
if(a==0)
惯例的做法是:定义0的精度,然后判断浮点数是否在该精度范围内。
#include"stdio.h"
int main()
{float eps=0.000001;//定义0的精度 float fvar=0.001;if(fvar>=-eps&&fvar<=eps)//如果浮点数在精度范围内 cout<<"等于0!";else//如果浮点数超出精度范围 cout<<"不等于0!" ;
}
数字里可以有下画线,这些下画线不会影响数字的值,仅提供分隔作用,方便阅读。
下画线不能写在数字开头或末尾,二进制和十六进制前缀字母旁,以及小数点旁。
3.变量赋值
变量的值是动态改变的,每次改变都需要进行赋值。变量赋值的形式如下:
变量名=表达式;
表达式由运算符、操作数、括号等组成。最简单的表达式就是一个数。
之前讲过声明变量时可以把数值赋给变量,这个过程叫变量赋初值。
除此以外,还可以先声明变量,再为其赋值。
例如,下面的代码先声明整型变量i,然后将常量100赋值给i。
int i;
i=100;
练习;
下面的代码声明了3个整型变量i、j、k,先为变量i、j赋值,再将i+j的值赋43.
4.字符型变量
char关键字用来定义字符型变量,其在内存中占用1个字节。
例如:
char ch1;//声明一个字符变量ch1
ch1='a'; //给字符变量赋值
字符型变量在内存中存储的是字符的ASCII码,即一个无符号整数。
其形式与整型变量的存储形式一样,因此字符型数据与整型数据之间可以通用。
也就是说:
(1)一个字符型数据,既可以字符形式输出,也可以整数形式输出。
(2)允许对字符数据进行算术运算,即对它们的ASCII码值进行算术运算。
练习:
定义两个字符型变量并赋值,一个字符进行减32计算,另一个字符进行加32计算,最后这两个字符分别进行加10计算,并通过格式化输出函数printf()以%d和%c格式输出
using namespace std;
int main()
{char ch1,ch2;ch1='A';ch2='b';//为ch1,ch2赋值 printf("ch1=%c,ch2=%c\n",ch1-32,ch2+32);//用%c格式输出字符变量和32的运算结果 printf("ch1+10=%d\n",ch1+10);//用%d格式输出printf("ch1+10=%c\n",ch1+10);//用%c格式输出printf("ch2+10=%d\n",ch2+10);//用%d格式输出printf("ch2+10=%c\n",ch2+10);//用%c格式输出}
感谢大家支持!