一、变量的命名
1. 命名规范
(1)只能包含数字、字母和下划线;
(2)不能以数字开头;
(3)不能和关键字同名。
2. 良好的命名风格
(1)下划线风格:int student_age; (一般用于变量名、函数名)
(2)小驼峰风格:int studentAge; (一般用于变量名、函数名)
(3)大驼峰风格:class StudentAge; (一般用于“类名”)
(4)全部大写 (一般用于宏):#define MAX_AGE 30
二、变量的数据类型
1.整数类型
名称 | 占字节数 | 表示范围 |
int(整型) | 4 | - (2的31次方) ~ 2的31次方-1 |
long(长整形) | 32位——4 64位——8 | - (2的63次方) ~ 2的63次方-1 |
long long(长长整型) | 8 | - (2的63次方) ~ 2的63次方-1 |
short(短整型) | 2 | - (2的15次方) ~ 2的15次方-1 |
以上数据类型都是有符号的(有正负),要定义非零整数,在前面加“unsigned”,如“unsigned int”,最小值都是0, 最大值是对应的有符号数的2倍。unsigned int可以简写为unsigned。注意:unsigned数不能表示负数!如果强行用unsigned数表示负数,实际存储的是这个负数对应的“补码”,即:该负数 + “模值”。
2.单字符类型
单个字符常量,要求用‘’括起来
‘0’ ‘1’ ‘2’ ...... ‘9’; ‘a’ ‘b’ ‘c’ ...... ‘z’; ‘A’ ‘B’ ‘C’ ...... ‘Z’; ‘,’ ‘-’ ‘!’ ‘#’ .......
字符类型char,占一个字节。字符在内存中用ASCII码值来储存,如以下两种方式等效。
char name = 'a';
char name = 97; //a的ASCII码值为97
char类型还可以用来表示小范围的整数(-128 ~ 127),可节省内存。不过现在开发时,小范围的整数,也常常直接用int类型。
int x = 0;
x = 'a' + 1; // x = 97 + 1 = 98
3.浮点数类型
(1)单精度浮点型 float
用来存储带小数部分的数据,占4个字节,精度:最长7位有效数字(10进制位)。
float类型的存储方式:
符号位:0代表正数,1代表负数;阶码: 指数部分+127;尾数:类似于底数。
(2)双精度浮点型 double
占8个字节,精度:最长16位有效数字(10进制位)。
浮点类型的常量:
带小数的常量默认都是double类型,如:3.14 是double类型,3.14f 强制指定是float类型。也可用“科学计数法”表示浮点类型的常量,如1.75E5 或 1.75 e5。
注意:1 是int类型的常量,1.0 则是double类型的常量。
(3)浮点数据的输出控制:
#include<iostream>
#include<Windows.h>
using namespace std;
int main(void){
double val = 12.3456789;
cout<<val<<endl; //输出为12.3457,cout默认精度为6(6位有效数字)
cout.precision(4); //指定精度
cout<<val<<endl; //输出为12.35 (修改持续有效,直到精度再次被修改)
cout.flags(cout.fixed) //定点法,将浮点数精度固定为小数点后4位
cout<<val<<endl; //输出为12.3457
cout<<3.1415926<<endl; // 输出为3.1416
cout.unsetf(cout.fixed); // 取消定点法,恢复4位精度
cout << value << endl; //输出12.35
cout << 3.1415926535 << endl; //输出3.142
return;
}
三、两种不同的的常量
1.字面常量
顾名思义,字面常量看起来就是一个常量(不用定义数据类型和变量名),且能看出其数据类型。
数据类型 | 字面常量示例 | 备注 |
int | 1, 2, 3, 100 | |
long | 200L | 后面加个L或小写l(注意:vs编译默认都是win32平台,所以即使在64位系统中,long也只有4个字节) |
long long | 100000000000LL | 后面加2个L或小写l |
char | ’a’, ‘b’, ‘X’, ‘-’ | |
float | 3.14f | 后面用“f”修饰 |
double | 3.0 3.14 | |
16进制常量 | 0x11(=10进制17) | 以0x作为前缀 |
8进制常量 | 011(=10进制9) | 以0作为前缀 |
字面常量的缺点:程序的可读性变差,代码的可维护性差。
2.符号常量
(1)#define宏定义的符号常量
#define MAX_AGE 35
在编译的预处理阶段,直接把MAX_AGE替换为35。
(2)const修饰的符号常量
const int maxAge = 35;
maxAge = 30; //错误!编译失败
注意:const修饰的符号常量,又叫“只读变量”,本质上还是一个变量,只是被const限制,所以无法修改。
四、字符串
字符串就是由0个或多个字符组成的有序数列。
字符串长度是字符串包含的字符个数(非中文),空字符串长度为0,空字符串常量为“”。注意:一个空格“ ”是空格字符串常量,长度是1。
字符串常量:
“字面型”字符串常量,要求用“”扩起来。
printf("name=%s", "Dodge"); //C语言方式输出字符串,%s用来匹配字符串
cout << “Dodge”; //C++方式输出字符串
C和C++字符串对比:
(1)字符串变量的表示
C语言中,没有专用的字符串类型,用char类型的数组储存字符串变量
C++中,使用std::string类型表示字符串变量
(2)结束符
在C语言中,字符串后面会存储一个结束符“0”,但C++中没有。
#include <iostream>
#include <string>
using namespace std;
int main(void) {
string gf1; //定义一个字符串变量,此时该字符串是空字符串
gf1 = "王菲"; //把字符串常量"王菲"拷贝到gf1
cout << "gf1=" << gf1 << endl;
string gf2;
gf2 = gf1; //把字符串变量gf1的值拷贝到gf2
cout << "gf2=" << gf2 << endl;
string gf3("Taylor"); //定义gf3的时候,使用字符串常量“Tarloy”来初始化
cout << "gf3=" << gf3 << endl;
string gf4(gf3); //定义gf4的时候,使用字符串变量来初始化
cout << "gf4=" << gf4 << endl;
string gf5(10, 'A'); //注意为单引号'',此方式不常用
cout << "gf5=" << gf5 << endl;
return 0;
}