`
ai_longyu
  • 浏览: 479768 次
社区版块
存档分类
最新评论

C++学习笔记------入门基础

 
阅读更多

学习程序语言第一件事,通常就是先做个简单的实例,从头到尾运行下,了解一些基本数据类型,变量的流程和控制语法。

一、数据类型与变量

我们先做一个“Hello world”吧,然后再了解C++的数据类型。

1.1 Hello World!

废话不多说,先来看看如何使用C++来编写一个简单的程序,这里我是在linux ubuntu下进行编辑并且编译的:


ok,代码编辑完成,我们来编译下,linux下是使用g++来编译

root@jay:/home/jay/c++/1# g++ -o hello hello.cpp

然后来执行下,看下结果:

root@jay:/home/jay/c++/1# ./hello
Hello World!
This is Jay Zhang!
zhangjie201412@live.com


大家看到程序应该会比较关注前面两行,

其他的跟C语言差不多,#include是一个宏(mocro)预编译处理器指令(preprocessor directive),他告诉编译器这个程序要用到的头文件,所以在这个程序中就可以换用到这个头文件中包含的一些函数(function)与类(class or struct);

第二行是一个新程序的标头写法,using知名表示使用名称空间(namespace)std下的名称。

还可以在C++中使用C语言中的一些库,只要把之前的写法这样改:match.h -> cmath,但是这种库的混用是不建议的。

ok,main函数中的三行cout语句很简单,与C语言中的printf类似,不过用法比较简单,这里就不多说了。


1.2 C++中的数据类型

程序在执行过程中,需要运算许多的数据,也需要存储许多的数据,数据是存储在内存空间的,由于各数据的类型不同,在存储时所需的容量也不同,不同的数据类型给予不同的存储空间来存储,因而有了数据类型(data type)。

在C++中基本的数据类型主要有:整数(integer),浮点数(float),字符(character)而这些又可以进行细分:

整数

用来表示整数值,可分为shot、int与long,可容纳的大小不相同,shot的长度为半个word,int表示一个word,而long表示一个或者2个word,在32位机器上面int与long的程度通常是相同的,长度越长表示的整数值范围越大。

浮点数

用来表示小数值,可以区分为float、double与long double,float的长度为一个word,double为2个word,long double长度为3或者4个word。

字符

用来存储字符,长度为一个字符,字符编码主要依据ASCII表而来,由于字符占得空间比较小,所以可以用来存储较小范围的整数

以上的数据类型在memory中占有的大小跟CPU有关,在这里给个例子,它可以告诉你确切占用的大小。


我们使用sizeof这个函数来取得数据类型的大小,执行下程序:

data type size(bytes)
int 4
long 4
float 4
double 8
char 1

看到如上结果,CPU平台不同执行的结果会不同,如上例中整数int的内存空间是4个字节,所以他可以存储的整数范围是-2147483648到2147483647,如果存储值超过这个范围的话称为溢出值(Overflow),会造成不可预计的结果。

整数计算范围的方式很简单,例如int占据4个字节的话,可存储范围为2^32/2,除以2是因为要分一半给负值,其他类似。

C++中还有bool类型,用来便是布尔数,在程序中占一个bit,用以使用true和false常量来表示,可以使用上面的例子来测试bool类型数据占用的存储空间。


1.3 数字常量

我们可以再程序中写下1、10、678这样的数值,这些数值称为(liternal constant),预设程序中如果写下一个整数值,例如1这个数值的话,定义为int类型的无正负号的数值,而如果在程序中写下1.0,3.14等小数时,定义为double类型的数值。

整数数字常量可以用8进制,十进制,十六进制数来表示,一般习惯使用十进制,如果我们用八进制的数字常量,开头加上0就可以了,如果要使用十六进制的字面常量,开头加上0x,例如下面的程序:

由于cout输出整数值时,都会以10进制显示,所以上面的程序中三行都会显示26。

我们可以再整数值以后加上L或者l,表示该整数值要是long类型,因为l容易与数字1搞混,通常使用L,我们也可以指定为无符号整数,可使用U或者u来指定。

下表列出常用的escape sequence:

escape sequence 說明
\n 換行、新行(newline)
\t 水平定位點(horizontal tab)
\v 垂直定位點(vertical tab)
\b 退回一格(backspace)
\r 返回(carriage return)
\f 換頁(formfeed)
\a 嗶聲(alert bell)
\\ 倒斜線(backslash)
\? 問號
\' 單引號
\" 雙引號


1.4 变量

数字常量 存储在内存中,并与一个数据类型相关系,现在的问题是如果我们要将一个数值存储在内存中,并在之后取回这个数值来使用,那我们要怎么去最呢?显然我们无法取得刚才写下的那个数值,因为没有任何关于关于那个数值的存储地址的信息。

变量(variable)提供一个有名字的存储空间大小:变量本身的值是指存储在内存中的某个数值,我们可以透过变量的名称来取得这个数值,这个数值又被称为rvalue或者read value,而变量的地址值是指这个数值存储在内存中的地址,变量本身又被称为lvalue或者location value。

在C++中药使用变量,必须先声明变量的名称和数据类型,例如

int num;

double num2;

如上面的例子,我们使用int、float等关键字来声明变量数名称并且指定变量的数据类型,变量在命名时有一些规则,真不可以用数字作为关键字开沟,也不可以使用一些特殊字符,而且不可以喝C++中的关键字同名。

变量的命名风格我觉得因人而异,自己习惯就好。

下面还是来举个例子吧:

在程序中第一次只是声明了变量并没有给赋值,所以打印出来的是随机数。

也可以使用如下的方法声明,此方法会调用构造函数,所以变量会被初始化为0:

int age = int();

。。。


1.5 终端的输入输出

终端的输入输出我认为只是用来做调试的,这部分很简单,比C语言中的printf简单多了,大家可以自行练习。

未完待续。



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics