首页 > 技术文章 > c++ 入门 之 hello world 和基本语法

0-lingdu 2019-02-19 23:31 原文

1,linux系统上如何跑c++程序

    1,vim一个hello.cpp,内容如下:

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello World!" << endl;
    return 0;
}

    2,g++编译刚刚的程序:g++  源文件名  -o  可执行的脚本名,比如我执行的就是:g++ hello.cpp -o hello 

    3,在当前文件夹执行: ./hello     ps:并不需要向python一样指定编译器,大约是因为比较底层吧

2,linux系统上自带GUN的c++编译器,可以通过g++ -v检查是否安装了gcc,windows系统上推荐使用visual studio,方便调试,安装教程

3,基本语法

#include <iostream>    //头文件,头文件中包含了程序中必须的或者有用的信息
using namespace std;    //使用命名空间
 
// main() 是程序开始执行的地方
 
int main()
{
   cout << "Hello World"; // 输出 Hello World
   return 0;    //终止main函数,并且向调用进程返回0
}
//c++用分号表示一行程序的结束,用大括号表示一个语句块,区分大小写,变量名用英文或者下划线加上数字表示,注释可用://或者:/*我是多行注释*/

三字符组:三字符组是啥?就是用??=表示#,用??/表示\,用??(表示[,

内置数据类型:

类型关键字
布尔型 bool
字符型 char
整型 int
浮点型 float
双浮点型 double
无类型 void
宽字符型

wchar_t

数据类型的修饰:

类型范围
char 1 个字节 -128 到 127 或者 0 到 255
unsigned char 1 个字节 0 到 255
signed char 1 个字节 -128 到 127
int 4 个字节 -2147483648 到 2147483647
unsigned int 4 个字节 0 到 4294967295
signed int 4 个字节 -2147483648 到 2147483647
short int 2 个字节 -32768 到 32767
unsigned short int 2 个字节 0 到 65,535
signed short int 2 个字节 -32768 到 32767
long int 8 个字节 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
signed long int 8 个字节 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long int 8 个字节 0 to 18,446,744,073,709,551,615
float 4 个字节 +/- 3.4e +/- 38 (~7 个数字)
double 8 个字节 +/- 1.7e +/- 308 (~15 个数字)
long double 16 个字节 +/- 1.7e +/- 308 (~15 个数字)
wchar_t 2 或 4 个字节 1 个宽字符

在这里主要说一下修饰符:

    1,signed和unsigned主要区别是,signed是支持正负的,就拿int来说,默认一个int是4个字节,用4*8=32位来表示数据,其中第一位是表示正负号的,所以这个int的大小是正负2××31(正数需要减一),而unsigned int只表示正整数,所以第一位不再表示符合,所以取值范围是0-2××32,对于char类型,同理,但是稍有不同,目前不能理解。

    2,long和short,默认的int用4字节表示,short int用两字节表示,所以是2×8=16位,大小是正负2××16(正整数需要减一),signed和unsigned同理。而long int用8个字节表示,需要8×8=16位,大小是正负2××64,天啦撸,计算机的计算能力真不是盖得。

跑一下自己电脑里的数据类型:sizeof()返回各种数据类型的大小,单位是字节;endl将会在行后插入换行符;<<用于向屏幕传递多个值(实践证明,就算是传递一个值也需要这个,,,)

typedef没明白是啥意思,估计就是给原有的数据类型换个名字,内容一点也没有换。

枚举类型的意思就是,定义某个变量只能是某几个值中的一个,例如

enum color { red, green, blue } c;
c = blue;
//定义一个枚举名为color,c的类型就是color,也就是说c只能是red,green和blue中的一个,,然后c=赋值为bule。用下标也行,没有特殊标识就是0,1,2

看我的实例:

#include <iostream>
using namespace std;
int main()
{
    enum color { red, green, blue } c;    //定义枚举
    c = red;
    cout << "i am c"<< c <<endl;    //打出来瞅瞅
    return 0;
}

//结果返回的竟然是'i am c0',好惊讶,如果c=blue,那就返回‘i am c2’,感觉莫名其妙

4,变量类型

1,bool型:储存true或者false

2,char:1个字节(B

3,int整数

4,float:4B,32位(从31到0,反序),31是符号,往前是8位指数和23位小数

5,double,双精度浮点值:8B,(63到0反序),63位是符号,11位是指数,52位是小数

6,void表示类型缺失

7,wchar_t宽字符类型,大约是汉字等编码过的字符

声明变量:

int    i, j, k;
char   c, ch;
float  f, salary;
double d;

extern int d = 3, f = 5;    //d 和 f 的声明 
int d = 3, f = 5;           // 定义并初始化 d 和 f
byte z = 22;                // 定义并初始化 z
char x = 'x';               // 变量 x 的值为 'x'
//注意extern:它是声明而不是定义。一个 c++ 程序可以包含多个文件,在一个文件中已定义的变量,如果要在另一个文件中调用,就要先声明一下变量,此时用 extern 这个关键字来声明。(注意:在一个程序中,变量只能被定义一次,但可以多次声明)

变量声明,定义和初始化:

#include <iostream>
using namespace std;
 
// 变量声明
extern int a, b;
extern int c;
extern float f;
  
int main ()
{
  // 变量定义,类似于js,可以先声明后初始化
  int a, b;
  int c;
  float f;
 
  // 实际初始化
  a = 10;
  b = 20;
  c = a + b;
 
  cout << c << endl ;    //30
 
  f = 70.0/3.0;
  cout << f << endl ;    //23.3333
 
  return 0;
}

声明不止针对变量,对待函数同样有效:

// 函数声明
int func();
 
int main()
{
    // 函数调用
    int i = func();
}
 
// 函数定义
 int func()
{
    return 0;
}

5,变量作用域:

全局和局部变量:总体和别的编程语言一样。注意有个不同点。

#include <iostream>
using namespace std;
 
// 全局变量声明,打印出来将会是0
int g;    
int main ()
{
  // 局部变量声明
  int a, b;
 
  // 实际初始化
  a = 10;
  b = 20;
  g = a + b;
  cout << g;
  return 0;
}

定义全局变量时候,系统会为下面的数据类型设置默认值:

int:0

char:‘\0’

float:0

double:0

pointer:NULL

6,常量:

又叫字面量,常量就像是常规的变量,只不过常量的值在定义后不能进行修改。

整数常量:整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。整数常量后面可以带指示符号,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。

实例:

85         // 十进制
0213       // 八进制 
0x4b       // 十六进制 
30         // 整数 
30u        // 无符号整数 
30l        // 长整数 
30ul       // 无符号长整数

浮点常量:浮点常量由整数部分、小数点、小数部分和指数部分组成。带符号的指数是用 e 或 E 引入的。

实例:

3.14159       // 合法的 
314159E-5L    // 合法的 
510E          // 非法的:不完整的指数
 210f          // 非法的:没有小数或指数
.e55          // 非法的:缺少整数或分数

布尔常量:true或者false

字符常量(就一个):字符常量是括在单(单引号哦)引号中。如果常量以 L(仅当大写时)开头,则表示它是一个宽字符常量(例如 L'x'),此时它必须存储在 wchar_t类型的变量中。否则,它就是一个窄字符常量(例如 'x'),此时它可以存储在 char 类型的简单变量中。

字符常量可以是一个普通的字符(例如 'x')、一个转义序列(例如 '\t'),或一个通用的字符(例如 '\u02C0')。

在 C++ 中,有一些特定的字符,当它们前面有反斜杠时,它们就具有特殊的含义,被用来表示如换行符(\n)或制表符(\t)等。下表列出了一些这样的转义序列码:

\\ \ 字符
\' ' 字符
\" " 字符
\? ? 字符
\a 警报铃声
\b 退格键
\f 换页符
\n 换行符
\r 回车
\t 水平制表符
\v 垂直制表符
\ooo 一到三位的八进制数
\xhh . . . 一个或多个数字的十六进制数

字符串常量(可以是好多个):字符串字面值或常量是括在双引号 "" 中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。

如何定义常量:

#include <iostream>
using namespace std;
 
#define LENGTH 10   //定义常量LENGTH 为10,据说是宏定义,只要编译器碰到LENGTH,那就自动替换为10用,
#define WIDTH  5
#define NEWLINE '\n'
 
int main()
{
 
   int area;  
   
   area = LENGTH * WIDTH;  //10*5=50
   cout << area;    //按理说应该输出为50
   cout << NEWLINE;    //换行符,输出了也看不出来
   return 0;
}

const用来声明指定类型的常量:言外之意就是define没有指定类型。

#include <iostream>
using namespace std;
 
int main()
{
   const int  LENGTH = 10;
   const int  WIDTH  = 5;
   const char NEWLINE = '\n';
   int area;  
   
   area = LENGTH * WIDTH;
   cout << area;
   cout << NEWLINE;
   return 0;
}

注意,常量一般都用大写字母来写。

7,修饰符类型(前面学过了,再巩固一下吧)

1,数据类型修饰符:

signed int:有符号整数型,也就是说第一位表示正负符号。unsigned int:无符号整数,没有符号,所以可以表示的正数范围比较大

比如:

#include <iostream>
using namespace std;
 
int main()
{
   short int i;           // 有符号短整数
   short unsigned int j;  // 无符号短整数
 
   j = 50000;
 
   i = j;
   cout << i << " " << j;
 
   return 0;
}
/*无符号短整数 50,000 的位模式被解释为有符号短整数 -15,536。*/

其他限定符:

const:对象再程序执行期间不能被修改改变。

volatile:告诉程序不优化变量

restrict:由 restrict 修饰的指针是唯一一种访问它所指向的对象的方式。

 

推荐阅读