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

来源:互联网 发布:python 写入变量 编辑:程序博客网 时间:2024/06/05 17:55

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

一、数据类型与变量

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

1.1 Hello World!

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

#include <iostream>using namespace std;int main(){cout<<"Hello World!"<<endl;cout<<"This is Jay Zhang!"<<endl;cout<<"zhangjie201412@live.com"<<endl;return 0;}

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


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

#include <iostream>using namespace std;

其他的跟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有关,在这里给个例子,它可以告诉你确切占用的大小。

#include <iostream>using namespace std;int main(){cout << "\ndata type size(bytes)";cout << "\nint\t" << sizeof(int);cout << "\nlong\t" << sizeof(long);cout << "\nfloat\t" << sizeof(float);cout << "\ndouble\t" << sizeof(double);cout << "\nchar\t" << sizeof(char)<<endl;return 0;}

我们使用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,例如下面的程序:

#include <iostream> using namespace std; int main() {     cout << 26 << "\n"; // 10進位    cout << 032 << "\n"; // 8進位    cout << 0x1A << "\n"; // 16進位    return 0; }
由于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++中的关键字同名。

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

下面还是来举个例子吧:

#include <iostream> using namespace std; int main() {     int ageForStudent;     double scoreForStudent;     char levelForStudent;     cout << "\n年級\t得分\t等級";     cout << "\n" << ageForStudent          << "\t" << scoreForStudent          << "\t" << levelForStudent          << "\n";     ageForStudent = 5;     scoreForStudent = 80.0;     levelForStudent = 'B';     cout << "\n年級\t得分\t等級";     cout << "\n" << ageForStudent          << "\t" << scoreForStudent          << "\t" << levelForStudent          << "\n";      return 0;}

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

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

      int age = int();

。。。


1.5 终端的输入输出

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

未完待续。



原创粉丝点击