什么是变量
变量说得通俗一点就是在程序中能够改变的量就称之为变量,变量都会有一个名字,并且每一个变量会在内存中占据一定的存储单元。如果前面已经有了某个名字的变量,则后面就不能再定义相同名字的变量了。变量的命名规则见C++基础入门之 标识符。
整数变量的定义、赋值、初始化、计算、输出
- 整数变量的定义
int a; //整数类型的变量定义 上面这句代码就表示定义了一个整数类型的变量a。我们通过两种角度来看看这个变量的定义:
- 内存的角度来看:就是在内存空间中开辟4个字节的连续内存块,并取名叫a,如图1-1,且这个内存块中存储数据的运算规则是整数的运算规则;
- 我们从语言的角度来看:就是定义了一个整数类型的变量a。
图1-1
- 整数变量的赋值
a = 1; //赋值 这句代码就是给变量赋值的语句,赋值运算符“=”:表示将赋值运算符右边的数据,赋值或初始化给赋值运算符左边的变量。如图1-2。
- 整数变量的初始化
int b = 2; //整数类型变量的初始化 这句代码就表示了变量的初始化,我们也通过两个角度来看看这个变量的初始化:
- 内存角度来看:在内存空间中开辟4个字节的连续内存块,并取名叫b,并且用整数类型常量2,对其进行了初始化,且这个内存块中存储数据的运算规则是整数的运算规则。如图1-3。
- 从语言的角度来看:定义了一个整数类型的变量b,且用整数常量2对其初始化。
图1-3
- 整数变量的计算和输出
来看下面这段代码:
#include <iostream>
int main()
{
int a; //整数类型变量的定义
a = 5; //整数类型变量的赋值
int b = 3; //整数类型变量的初始化
a = a + b; //整数类型变量的加法计算
std::cout << a << std::endl; //整数类型变量的输出
a = a - b; //整数类型变量的减法
std::cout << a << std::endl;
a = a * b; //整数类型变量的乘法
std::cout << a << std::endl;
a = a / b; //整数类型变量的除法
std::cout << a << std::endl;
system("pause");
return 0;
}
上述代码就是变量的基本运算操作,如果除法运算遇到小数的情况的话,int类型会自动省略后面的小数部分。比如:
int a = 0;
a = 10 / 4;这句代码如果我们按照数学上来看的话结果是2.5,但是由于a是整数类型,所以在此要舍去小数部分,只保留整数部分。
整数变量的输入
上面我们讲过整数变量的输出了,那么变量如何接收用户输入的数据呢?我们通过一个简单的加法计算器来看看整数的输入,代码如下:
#include <iostream>
int main()
{
int a;
std::cout << "请输入一个整数:";
std::cin >> a;
std::cout << "你输入的整数为:" << a << std::endl;
int b;
std::cout << "请输入第二个整数:" ;
std::cin >> b;
std::cout << "你输入的第二个整数为:" << b << std::endl;
int sum;
sum = a + b;
std::cout << a << " + " << " b " << " = " << sum << std::endl; //多个变量的输出
system("pause");
return 0;
}
上面的代码中我们用到了一个新的东西std::cin,大家应该都知道这个是干嘛的了吧,没错,这个就是输入了。
std::cout就像我们电脑的显示器,而std::cin就相当于我们电脑的键盘,表示等待用户的输入,当用户从键盘上输入一个值,然后按下回车键结束时,将输入的值赋值给“>>”后面的变量。
std::cout << a ;表示数据从内存中的a流向显示器;
std::cin >> a; 表示数据从键盘流向内存中的a。
注意:变量可以使用一个cout 输出多个变量,但是输入只能一个cin输入一个变量,不可以同时输入多个变量。
其实做为一个变量而言,我们可以随时随地(只要在定义或者初始化后)改变,无论是直接“=”赋值或者是std::cin。
整数的存储
- 整数的存储:整数是以补码的形式存储的。
- 正整数的补码就是其二进制形式
- 0的补码就是0
- 负整数的补码是其绝对值的二进制按位取反 (0变1,1变0) 加1 ,请看如下代码:
#include <iostream> int main() { int a; a = 123456789; //二进制形式:00000111 01011011 11001101 00010101 a = -123456789; //绝对值的二进制 :00000111 01011011 11001101 00010101 //按位取反:11111000 10100100 00110010 11101010 //加1: 11111000 10100100 00110010 11101011 system("pause"); return 0; }
- x86体系的CPU的数据的存储方式,
- Little Endian:大于1字节的数字先存储低位部分,再存储高位部分
- Big Endian:大于1字节的数字先存储高位部分,再存储低位部分
- 大部分的CPU都是Little Endian,代码如下:
#include <iostream> int main() { int a; a = 123456789; //二进制形式:00000111 01011011 11001101 00010101 //十六进制: 07 5b cd 15 //Little Endian: //15 cd 5b 07 //Big Endian: //07 5b cd 15 a = -123456789; //绝对值的二进制 :00000111 01011011 11001101 00010101 //按位取反:11111000 10100100 00110010 11101010 //加1: 11111000 10100100 00110010 11101011 //十六进制:f8 a4 32 eb //Little Endian: //eb 32 a4 f8 system("pause"); return 0; }
VS断点调试程序
大家可以在VS中打上断点,进入调试查看内存中的数据
如图,用鼠标左键单击上图箭头位置,打上断点,然后按F5启动。
然后选择调试菜单 -> 窗口 -> 内存,就可以看到了,或者直接使用快捷键Alt + 6
然后我们在内存窗口的地址那里输入 &a ,然后回车。
上图中红框中的就是a在内存中的数据。从上面可以看出我的CPU是Little Endian的。
注:小弟第一次写博客,写得不好或写错的地方希望各位大佬多多指教,小弟不胜感激!
2658

被折叠的 条评论
为什么被折叠?



