C++ 结合了三个编程流派:

  1. 过程式编程:C 特性,结构化语言,强调过程
  2. 面向对象编程:C++ 对于 C 语言的补充,一切皆对象,强调数据
  3. 泛型编程(generic programming):由 C++ 模板支持,强调代码与数据类型无关(type independent)。

C++ 常用标准:

  • C98
  • C03
  • C11
  • C14

C++ 程序创建的机制

  1. 使用文本编辑器编写源代码
  2. 编译源代码。编译器(compiler)会将源代码转换为平台相关的机器语言/目标代码
  3. 目标代码的链接。由于往往存在多个 C++ 库,需要链接器(linker)把这些目标代码以某种方式整合起来,最终形成可执行代码(executable code)

第一个 C++ 程序

 // myfirst.cpp -- displays a message

 #include <iostream>                           // a PREPROCESSOR directive
int main() // function header
{ // start of function body
using namespace std; // make definitions visible
cout << "Come up and C++ me some time."; // message
cout << endl; // start a new line
cout << "You won't regret it!" << endl; // more output
return ; // terminate main()
} // end of function body

编译源代码:

g++ myfirst.cpp

运行二进制文件:

./a.out

注意:

  • 避免使用 void main() 进行主函数的声明,这不是 C++ 标准格式。不同编译器有可能通过,有可能报错。
  • C++ 标准允许省略 return 0; ,如果不写编译器会自动添加。
  • iostream 称为包含文件(include file)或者头文件(head file)。iostream 提供输入输出相关的功能。
  • #include <iostream> 是一个预处理命令,本质上是把 iostream 的内容替换在这一行,接着由编译器进行编译。
  • 命名空间(namespace):多个头文件可能有相同的函数名,命令空间可以避免函数名冲突。 using namespace std; 表示使用命名空间声明为 std 的头文件,里面的函数或者变量可以直接使用。如果没有这条语句,则需要使用 std::cout 这样的形式进行调用。
  • cout 是一个对象,知道如何显示出各种各样类型的数据。<< 是一个插入运算符(insertion operator),可以将字符串插入到输出流。

大多数程序员遵循这样的 C++ 源码风格:

  1. 每行一条语句;
  2. 函数的花括号的 { 和 } 分别占一行;
  3. 函数中的语句需要缩进;
  4. 函数名与其对应的括号之间不要加空格(为了区分其他 C++ 结构)。

简单的声明语句和赋值语句

// an addition operation
#include <iostream> int main()
{
using namespace std;
int x1;
int x2;
int ans;
x1 = ;
x2 = ;
ans = x1 + x2;
cout << "x1 + x2 = " << ans << endl;
}

编译并运行后的输出:

x1 + x2 = 3

简单的输入语句

 // double your input number
#include <iostream> int main()
{
int now = ;
int birth_year;
std::cout << "What's your birth year?" << std::endl;
std::cin >> birth_year; // using cin
std::cout << "You're " << - birth_year << " years old." << std::endl;
return ;
}

编译运行后会提示输入,输入 1992,得到运算之后的输出:

What's your birth year?
1992
You're 27 years old.

使用 cmath 头文件:

 // using sqrt

 #include <iostream>
#include <cmath> int main()
{
using std::cout;
using std::cin;
using std::endl;
using std::sqrt; float num;
cout << "Give me a number: ";
cin >> num;
cout << "sqrt(" << num << ") = " << sqrt(num) << endl;
}

编译运行,输入 25 后输出:

Give me a number: 2
sqrt(2) = 1.41421

简单的自定义函数

自定义函数需要声明函数原型:

 #include <iostream>

 using namespace std;

 int add(int, int);  // function prototype

 int main()
{
int x1 = ;
int x2 = ;
int sum = add(x1, x2);
cout << "3 + 4 = " << sum << endl;
} int add(int n1, int n2)
{
return n1 + n2;
}

输出如下:

3 + 4 = 7

参考

  • 《C++ Primer Plus》by Stephen Prata

C++ 梳理:跑通简单程序的更多相关文章

  1. 踏出第一步——安装并跑通python程序

    一.首先学会安装python软件 1.在浏览器下输入安装python软件的官方网址. 点击打开链接 2.在界面上点击"Downloads"下的"Windows" ...

  2. $Eclipse+Tomcat搭建本地服务器并跑通HelloWorld程序

    本文结构:(一)环境准备(二)在Eclipse里创建Dynamic Web工程(三)写一个简单的Servlet类并配置web.xml(四)运行程序 (一)环境准备 1.Eclipse:要使用for J ...

  3. 师傅领进门之6步教你跑通一个AI程序!

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云计算基础发表于云+社区专栏 源码下载地址请点击原文查看. 初学机器学习,写篇文章mark一下,希望能为将入坑者解点惑.本文介绍一些机 ...

  4. 顶级测试框架Jest指南:跑通一个完美的程序,就是教出一群像样的学生

    facebook三大项目:yarn jest metro,有横扫宇宙之势. 而jest项目的宗旨为:减少测试一个项目所花费的时间成本和认知成本. --其实,它在让你当一个好老师. jest文档非常简略 ...

  5. 如何在Windows下用cpu模式跑通py-faster-rcnn 的demo.py

    关键字:Windows.cpu模式.Python.faster-rcnn.demo.py 声明:本篇blog暂时未经二次实践验证,主要以本人第一次配置过程的经验写成.计划在7月底回家去电脑城借台机子试 ...

  6. Windows下用cpu模式跑通目标检测py-faster-rcnn 的demo.py

    关键字:Windows.cpu模式.Python.faster-rcnn.demo.py 声明:原文发表在博客园,未经允许不得转载!!!本篇blog过程已经多名读者实践验证,有人反馈报错TypeErr ...

  7. 简介及环境搭建跑通Hello

    简介及环境搭建跑通Hello Spring Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.是为了解决企业应用程序开 ...

  8. 如何跑通第一个 SQL 作业

    简介: 本文由阿里巴巴技术专家周凯波(宝牛)分享,主要介绍如何跑通第一个SQL. 一.SQL的基本概念 1.SQL 分类 SQL分为四类,分别是数据查询语言(DQL).数据操纵语言(DML).数据定义 ...

  9. ASP.NET MVC5+EF6+EasyUI 后台管理系统(21)-权限管理系统-跑通整个系统

    系列目录 这一节我们来跑通整个系统,验证的流程,通过AOP切入方式,在访问方法之前,执行一个验证机制来判断是否有操作权限(如:增删改等) 原理:通过MVC自带筛选器,在筛选器分解路由的Action和c ...

随机推荐

  1. [LeetCode] 904. Fruit Into Baskets 水果装入果篮

    In a row of trees, the i-th tree produces fruit with type tree[i]. You start at any tree of your cho ...

  2. Leetcode 第135场周赛解题报告

    这周比赛的题目很有特点.几道题都需要找到一定的技巧才能巧妙解决,和以往靠数据结构的题目不太一样. 就是如果懂原理,代码会很简单,如果暴力做,也能做出来,但是十分容易出错. 第四题还挺难想的,想了好久才 ...

  3. SpringBoot集成Spring Security(7)——认证流程

    文章目录 一.认证流程 二.多个请求共享认证信息 三.获取用户认证信息 在前面的六章中,介绍了 Spring Security 的基础使用,在继续深入向下的学习前,有必要理解清楚 Spring Sec ...

  4. Unity C# File类 本地数据保存和游戏存档

    进行本地数据存档和载入在游戏开发中非常常见,几乎任何一款游戏都需要这样的功能. 命名空间: using System.IO; 主要用于引入File类以处理各类文件操作. using System.Ru ...

  5. torch_06_卷积神经网络

    1.概述 卷积神经网络的参数,由一些可学习的滤波器集合构成的,每个滤波器在空间上都计较小,但是深度和输入数据的深度保持一致.在前向传播中,让每个滤波器都在输入数据的宽度和高度上滑动(卷积),然后计算整 ...

  6. tomcat 下 base64图片上传超过2m的解决方案

    方案一: tomcat部署下默认post请求提交参数大小为2M左右,超过这个大小,就会传值不成功 要使post请求参数无大小限制,需要在server.xml上修改,如下: <Connector ...

  7. sql server生成随机id

    SQL Server中生成随机ID的函数是newId(),但是这样生成出来的随机ID是36位带[-]符号的. select newId(); -- 746516E0-95D6-4BAF-8826-6C ...

  8. Python '\r', '\n', '\r\n' 的彻底理解

    回车和换行的历史: 机械打字机有回车和换行两个键作用分别是: 换行就是把滚筒卷一格,不改变水平位置.   (即移到下一行,但不是行首,而是和上一行水平位置一样) 回车就是把水平位置复位,不卷动滚筒.  ...

  9. AppBarLayout折叠时候的阴影

    最近在项目中遇到一个需求,AppBarLayout在完全展开时没有阴影,在完全收缩时展示阴影,这个功能可以通过设置StateListAnimator的轻松的实现. 首先,在res/animator目录 ...

  10. MobaXterm的安装和使用

    MobaXterm的安装和使用 安装 1 下载网址:https://mobaxterm.mobatek.net/,选择“Download”,选择免费版的下载. 2 解压压缩包,双击exe文件安装软件, ...