变量与常量
内存与寻址的概念
计算两数的乘积:
#include<iostream>
usin namespace std;
int multiply(){
int x=0;
int y=0;
cout<<"input the first number:"<<endl;
cin>>x;
cout<<"input the second number:"<<endl;
cin>>y;
return x*y;
}
int main(){
cout<<multiply()<<endl;
return 0;
}
1.变量
1.1命名规则
不能以数字开头;
可以包含数字和字符
不能包含空格和算术运算符(+、-、*、/);
可使用下划线_;
不能是保留的关键字。
1.2作用域
1.3全局变量
不在函数内部申明的变量为全局变量,可以在任何函数中赋值,因此其值可能出乎意料,谨慎使用。
1.4.变量类型
一字节=8bit;
类型 | 占位 | 取值范围 |
---|---|---|
bool | 1字节 | true/false |
char | 1字节 | [-2^7, 2^7-1]、[0, 2^8] |
unsigned char | 1字节 | [0,2^8] |
signed char | 1字节 | [-2^7, 2^7-1] |
int | 4字节 | [-2^31, 2^31-1] |
unsigned int | 4字节 | [0, 2^32] |
signed int | 4字节 | [-2^31, 2^31 |
short int | 2字节 | [-2^15, 2^15-1] |
unsigned short int | 2字节 | [0-2^16] |
signed short int | 2字节 | [-2^15, 2^15-1] |
long int | 8字节 | [-2^63, 2^63-1] |
unsigned long int | 8字节 | [0-2^64 ] |
signed short int | 8字节 | [-2^63, 2^63-1] |
float | 4字节 | |
double | 8字节 | |
long double | 16字节 | |
wchar_t | 2/4字节 |
1.4.1 bool型变量
bool flag1=false;
bool flag2=(flag1==true);
1.4.2 char变量
存储单个字符char c='c';
。
1.4.3有符号数和无符号数
有无符号即有无正负.
1.4.4 浮点类型
声明一个可存储小数值的float变量float Pi=3.14;
;声明一个双精度double浮点数double Pi=22/7;
。
1.5sizeof确定变量的长度
变量的长度是指:在声明变量时,编译器要预留多少内存用于存储赋给该变量的数据。
sizeof是运算符,并不是函数调用,不允许程序员定义重载。输出单位为字节。
2.常量
定义常量后,就不能修改它的值。
字面常量;
const声明的常量;
enum声明的常量;
#define定义的常量
2.1 字面常量
std::cout<<"hello world!"<<std::endl;
hello world!是一个字面常量。
2.2 const声明常量
# include <iostream>
using namespace std;
int main(){
const double Pi=22.0/7;
cout<<"the value of Pi is "<<Pi<<endl;
return 0;
}
如果希望变量的值不被修改,就将其声明为常量。通过关键字const可以避免多名程序员合作时被无意修改。
使用:申明在编译期间长度固定的静态数组。
2.3 枚举常量
变量只能取一组特定的值。
enum RainBowColors{
violet=0,
indigo,
blue,
green,
yellow,
orange,
red
};
RainBowColors MyRainBowColors=blue;
在申明枚举常量时,编译器将把枚举值转换成整数,每个枚举值都比前一个大1,可以自定义初始值,否则自动默认为0。
# include <iostream>
using namespace std;
enum RainBowColors{
violet,
indigo,
blue=20,
green,
yellow=0,
orange,
red
};
RainBowColors MyRainBowColors=blue;
int main(){
RainBowColors MyRainBowColors=violet;
cout<<"the value of violet is "<<MyRainBowColors<<endl;
MyRainBowColors=indigo;
cout<<"the value of indigo is "<<MyRainBowColors<<endl;
MyRainBowColors=blue;
cout<<"the value of blue is "<<MyRainBowColors<<endl;
MyRainBowColors=green;
cout<<"the value of green is "<<MyRainBowColors<<endl;
MyRainBowColors=yellow;
cout<<"the value of yellow is "<<MyRainBowColors<<endl;
MyRainBowColors=orange;
cout<<"the value of orange is "<<MyRainBowColors<<endl;
MyRainBowColors=red;
cout<<"the value of red is "<<MyRainBowColors<<endl;
return 0;
}
输出:
the value of violet is 0
the value of indigo is 1
the value of blue is 20
the value of green is 21
the value of yellow is 0
the value of orange is 1
the value of red is 2
2.4 #define定义常量
#define Pi 3.14
预处理器宏,让预处理器将随后出现的所有Pi都替换成3.14,预处理器将执行文本替换,而不是智能替换。编译器既不知道也不关心常量的类型。
问题
问:在C++中,可以申明无符号整型变量,其取值只能是零或正整数,如果一个unsigned int变量的值为0,将其减一的结果将如何?
答:导致环绕,输出最大取值。
# include <iostream>
using namespace std;
int main(){
unsigned short int a=0;
a=a-1;
cout<<"the value of a is "<<a<<endl;
return 0;
}
输出:
the value of a is 65535
因此,在变量值有可能取到负值的情况下,就不应该将其类型指定为unsigned。