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简单多了,大家可以自行练习。
未完待续。
- C基础入门笔记1
- C++学习笔记------入门基础
- C: 入门学习笔记(1)
- C: 入门学习笔记(2)
- 鱼C工作室《零基础入门学习Python》学习过程笔记记录第一天 001-010
- 鱼C工作室《零基础入门学习Python》 学习过程笔记【011列表类的方法】
- C/C++基础学习笔记
- C语言基础学习笔记
- C、C++基础学习笔记
- 【C#】C#基础学习笔记
- C基础学习笔记01
- C基础学习笔记02
- C++&C学习笔记(一)(基础)
- 零基础入门学习C语言
- 零基础入门学习C 001
- jQuery-基础入门 学习笔记一
- Java学习笔记之入门基础
- 意识流php入门基础学习笔记
- CROSS APPLY和 OUTER APPLY 区别详解
- C# Winform多窗口
- 关于录播教室的几点担心
- LTE from theory to practice
- encodeURIComponent编码后java后台的解码
- C++学习笔记------入门基础
- 推荐一个Android平板高清游戏果冻帝国防御战
- SPring MVC
- XML(2012/2/16)
- IRQL 中断请求级别
- struts2-java.lang.NullPointerException at com.opensymphony.xwork2.util.FileManager$FileRevision.need
- MTK 11B Resgen
- Nandimobile:基于SMS的客户支持服务,短信版114
- 程序人生之要么忙着去生,要么忙着去死