C++基础:基本内置类型与变量

        终于考完研了!!!

        考虑到后期工作可能会主要使用C++语言,之间上的课只是简单的学习过C++,懂基本原理和一些简单的面向对象的编程,但是没有过系统的学习,所谓基础不牢地动山摇,所以现在从头开始学习一下C++,参考书是《C++ Primer》(第五版),做这个专栏就是记录一些学习时的笔记,我学习编程的目的是运用而非研究,所以很多地方的底层细节不做过多的了解。


        今天的笔记是:基本内置类型、变量。

1、算术类型包括整型(包括了字符和bool类型在内)、浮点型

2、整型可分为:带符号型(signed)不带符号型(unsigned)。其中带符号类型的可以表示正数、0、负数,而无符号类型只能表示0和正数,各常用类型的的数的表示范围如下:

short:-32768 ~ 32768  (-2^15 --> 2^15-1)
unsigned short:  0 ~ 65535 (0 --> 2^16-1)
int :   -2147483648 ~ 2147483647  (-2^31 --> 2^31-1)
unsigned int:  0 ~ 4294967295  (0 --> 2^32-1)
long:  -2147483648: ~ 2147483647  (-2^31 --> 2^31-1)
unsigned long:   0 ~ 4294967295  (0 --> 2^32-1)
long long:    -9223372036854775808 ~ 9223372036854775807  (-2^63 --> 2^63-1)
unsigned long long:  0 ~ 18446744073709551615  (0 --> 2^64-1)

若给不带符号类型的赋值小于零的数,若直接打印此数,输出的是该无符号数的模加上该数,若其运算结果为正数或为零,则正常输出。如下:

//例1
#include<iostream>
int main()
{
    unsigned int d;
    d = -2;
    std::cout << d << std::endl;
    std::cout << d + 2 << std::endl;
    std::cout << d - 2 << std::endl;
    std::cout << d + 7 << std::endl;
    system("pause");
    return 0;
}
输出结果以此为:4294967294,0,4294967292,5。

//例2
#include<iostream>
int main()
{
	unsigned u = 10, u2 = 42;
	std::cout << u2 - u << std::endl;
	std::cout << u - u2 << std::endl;
	int  i = 10, i2 = 42;
	std::cout << i2 - i << std::endl;
	std::cout << i - i2 << std::endl;
	std::cout << i - u << std::endl;
	std::cout << u - i << std::endl;
	system("pause");
	return 0;
}
输出:32,4294967264,32,-32,0,0

3. 变量初始化:变量在被定义的时候被赋予其初始值。

4. 变量赋值:把对象当前的值擦去,用一个新值代替。

一种常见的错误赋值语句:

错误赋值: double a = b = 2.3;
正确赋值:double a,b;  a = b = 2.3;

5. 变量的声明与定义:

        变量的声明:extern int i;  仅仅只是声明i,并没有定义i

        变量的定义:int i;声明并定义了变量i。

        作用:再多个文件用到了同一个变量的时候,必须将变量的定义和声明分离,只能在一个文件里面定义其余文件用到是则是声明,不能够重新定义。

6. 变量的标识符:变量的标识符由字母、数字和下划线组成,开头不能是数字,不能与C++的保留字和关键字相同。

7. 名字的作用域:名字的有效区域始于名字的声明语句,以声明语句所在的作用域末端(即所在的花括号)结束。 嵌套作用域:作用域中一旦声明了某个名字,它所嵌套的所有作用域都可以访问该名字(即在大作用域中的定义的名字,可以在其所包含的小作用域进行访问),允许在内存作用域中定义与外层作用域中相同的名字,这样在内层作用域中该名字就会被覆盖。

//分析变量i和sum:
int i=100,sum=0;
for(int i=0; i != 0 ; ++i)
	sum += i;
std::cout<<i<<" " <<sum<<std::endl;
//输出结果为: 100 45,

首先定义了全局变量i和sum,然后在for循环中又定义了一个i,全局变量在for循环中仍然可以被访问,但是此时的i被覆盖了,即在这个for循环的这个作用域里面,i代表的是局部变量i而不是全局变量i,sum没有被覆盖,故此处的sum就是全局变量sum。最后输出时,for循环结束,所以最后输出的i是全局变量i全局变量sum。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值