四、C++基础入门之 整数和变量

什么是变量

       变量说得通俗一点就是在程序中能够改变的量就称之为变量,变量都会有一个名字,并且每一个变量会在内存中占据一定的存储单元。如果前面已经有了某个名字的变量,则后面就不能再定义相同名字的变量了。变量的命名规则见C++基础入门之 标识符

整数变量的定义、赋值、初始化、计算、输出

  • 整数变量的定义
int a; //整数类型的变量定义 
上面这句代码就表示定义了一个整数类型的变量a。我们通过两种角度来看看这个变量的定义:
  1. 内存的角度来看:就是在内存空间中开辟4个字节的连续内存块,并取名叫a,如图1-1,且这个内存块中存储数据的运算规则是整数的运算规则;
  2. 我们从语言的角度来看:就是定义了一个整数类型的变量a。


图1-1

  • 整数变量的赋值
a = 1; //赋值
       这句代码就是给变量赋值的语句,赋值运算符“=”:表示将赋值运算符右边的数据,赋值或初始化给赋值运算符左边的变量。如图1-2。
图1-2
  • 整数变量的初始化
int b = 2; //整数类型变量的初始化
 这句代码就表示了变量的初始化,我们也通过两个角度来看看这个变量的初始化:
  1. 内存角度来看:在内存空间中开辟4个字节的连续内存块,并取名叫b,并且用整数类型常量2,对其进行了初始化,且这个内存块中存储数据的运算规则是整数的运算规则。如图1-3。
  2. 从语言的角度来看:定义了一个整数类型的变量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。

整数的存储

  • 整数的存储:整数是以补码的形式存储的。
  1. 正整数的补码就是其二进制形式
  2. 0的补码就是0
  3. 负整数的补码是其绝对值的二进制按位取反 (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的数据的存储方式,
  1. Little Endian:大于1字节的数字先存储低位部分,再存储高位部分
  2. Big Endian:大于1字节的数字先存储高位部分,再存储低位部分
  3. 大部分的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的。


注:小弟第一次写博客,写得不好或写错的地方希望各位大佬多多指教,小弟不胜感激!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值