部署准备2-C++篇

目录

环境设置

 基本语法

数据类型

枚举

 局部变量和全局变量

整数常量

浮点常量

布尔常量

转义序列

字符串常量

 ​

 定义常量

存储类auto

 存储类register

 存储类static

存储类extern 

 C++运算符


环境设置

C++语言环境需要文本编辑器和C++编译器。

vim/vi文本编辑器适用于linux 或unix,检查是否安装相应编译器GCC。

$ g++ -v               //检查是否安装GNU编译器

已经安装,会显示
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure --prefix=/usr .......
Thread model: posix
gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)

如果未安装 GCC,那么 http://gcc.gnu.org/install/ 

程序 g++ 是将 gcc 默认语言设为 C++ 的一个特殊的版本,链接时它自动使用 C++ 标准库而不用 C 标准库。

$ gcc main.cpp -lstdc++ -o main //设置c++为默认语言
编译一个C++程序

$ g++ helloworld.cpp //未指定可执行程序的文件名,默认生成a.out

$ ./a.out
Hello, world!


$ g++ helloworld.cpp -o helloworld //或者使用-o指定生成可执行文件的文件名

$ ./helloworld               //执行helloworld
Hello, world!

$ g++ helloworld1.cpp helloworld2.cpp -o helloworld 
//多个C++文件可生成一个可执行文件

 基本语法

C++每个语句以分号结束,语句块在{ }中。

C++不以行末作为结束符的标识,一行可有多个语句。

C++标识符,即变量、函数、类或模块名,以字母开头或以下划线_开头,后跟字母数字下划线,区分大小写。

注释,//单行注释,/*   */用于多行注释。

数据类型

布尔型bool,字符型char,整型int,浮点型float,双浮点型double,无类型void,宽字符型wchar_t。

char,int,double可以使用一个或多个类型修饰符进行修饰:

修饰符 signed、unsigned、long 和 short 可应用于整型,signed 和 unsigned 可应用于字符型,long 可应用于双精度型。

修饰符 signed 和 unsigned 也可以作为 long 或 short 修饰符的前缀。例如:unsigned long int

C++ 允许使用速记符号来声明无符号短整数无符号长整数。您可以不写 int,只写单词 unsigned、short 或 unsigned、long,int 是隐含的。

 

 无符号短整数 50,000 的位模式被解释为有符号短整数 -15,536。

 cout为C++中的print,<< 运算符用于向屏幕传多个值,\t即tab一段空白,endl为换行符即\n。

    cout << "float: \t\t" << "所占字节数:" << sizeof(float);  
    cout << "\t最大值:" << (numeric_limits<float>::max)();  
    cout << "\t最小值:" << (numeric_limits<float>::min)() << endl; 

枚举

如果一个变量有几种可能存在的值,就可以定义为枚举类型。枚举在C/C++中,是一个被命名的整型常数的集合。

enum 枚举名{ 
     标识符[=整型常数],   //默认为0,之后每一个数值加一,也可自行写数值初始化
     标识符[=整型常数],  //几个枚举量的值可以相同
... 
    标识符[=整型常数]
} 枚举变量;


enum color { red, green, blue } c;
c = blue;

 c=yellow; //错误,不可将非枚举量赋值给枚举变量

int a = color(2); //正确,枚举量可赋值给非枚举变量

枚举量不可进行算术运算,red++; c = red+green;//不可

枚举量可参与运算,int a= 1+red;//枚举量red会被赋值编译器转为整数

 局部变量和全局变量

在程序中,局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。

当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。定义全局变量时,系统会自动初始化为下列值:

数据类型初始化默认值
int0
char'\0'
float0
double0
pointerNULL

整数常量

前缀0x/0X表示十六进制,0表示八进制(0-7),无前缀则表示十进制。

后缀是U和L的组合,无符号整数或长整数,大小写都可,顺序任意。

212 // 合法的

215u // 合法的

0xFeeL // 合法的

078 // 非法的:8 不是八进制的数字

032UU // 非法的:不能重复后缀

85 // 十进制

0213 // 八进制

0x4b // 十六进制

30 // 整数

30u // 无符号整数

30l // 长整数

30ul // 无符号长整数

浮点常量

整数部分,小数点,小数部分和指数部分。

3.14159 // 合法的

314159E-5L // 合法的

布尔常量

true false

转义序列

转义序列含义
\\\ 字符
\'' 字符
\"" 字符
\?? 字符
\a警报铃声
\b退格键
\f换页符
\n换行符
\r回车
\t水平制表符
\v垂直制表符,和\t效果似乎一样
\ooo一到三位的八进制数
\xhh . . .一个或多个数字的十六进制数

字符串常量

 

 定义常量

#define identifier value   //名字+值

#define LENGTH 10   //常量定义大写比较好
#define WIDTH  5


const type variable = value;//类型+名字+值

//	const 类型的对象在程序执行期间不能被修改改变。
const int  LENGTH = 10;
const int  WIDTH  = 5;
const char NEWLINE = '\n';

存储类auto

声明变量时根据初始化表达式自动推断该变量的类型。

auto f=3.14; //double auto

s("hello"); //const char*

 存储类register

 存储类static

通常,在函数体内定义了一个变量,每当程序运行到该语句时都会给该局部变量分配栈内存。但随着程序退出函数体,系统就会收回栈内存,局部变量也相应失效。但有时候我们需要在两次调用之间对变量的值进行保存。

通常的想法是定义一个全局变量来实现。但这样一来,变量已经不再属于函数本身了,不再仅受函数的控制,给程序的维护带来不便。

静态局部变量正好可以解决这个问题。静态局部变量保存在全局数据区,而不是保存在栈中,每次的值保持到下一次调用,直到下次赋新值。

存储类extern 

用于当有两个或多个文件共享相同的全局变量或函数的时候。

 C++运算符

算术运算符:+-*/%++--加减乘除取余自增自减一。

关系运算符:==;!=;>;<;>=;<=。

逻辑运算符: &&与,||或,!给&&或||取反。

位运算符:&与,|或,^异或(不同取1),~按位取反,<<左移右补零,>>右移左补0或 1(负数)。

赋值运算符:

=简单的赋值运算符,把右边操作数的值赋给左边操作数C = A + B 将把 A + B 的值赋给 C
+=加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数C += A 相当于 C = C + A
-=减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数C -= A 相当于 C = C - A
*=乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数C *= A 相当于 C = C * A
/=除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数C /= A 相当于 C = C / A
%=求模且赋值运算符,求两个操作数的模赋值给左边操作数C %= A 相当于 C = C % A
<<=左移且赋值运算符C <<= 2 等同于 C = C << 2
>>=右移且赋值运算符C >>= 2 等同于 C = C >> 2
&=按位与且赋值运算符C &= 2 等同于 C = C & 2
^=按位异或且赋值运算符C ^= 2 等同于 C = C ^ 2
|=按位或且赋值运算符

C |= 2 等同于 C = C | 2

Exp1 ? Exp2 : Exp3;

其中,Exp1、Exp2 和 Exp3 是表达式。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。

参考菜鸟教程: C++ 函数 | 菜鸟教程 (runoob.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值