您现在的位置是:首页 >学无止境 >C/C++ 基础知识 一网站首页学无止境

C/C++ 基础知识 一

格林希尔 2024-05-30 13:36:12
简介C/C++ 基础知识 一

一、C/C++概述

1.1 C/C++的历史

C语言是由贝尔实验室的Dennis M. Ritchie在1972年开发的,被认为是一种高效可靠可移植的系统编程语言
C++是C语言的扩展由Bjarne Stroustrup在1983年创建的。C++在C语言基础上增加了面向对象编程和泛型编程等特性更适合于大型软件项目的开发

1.2 C/C++的特点

C/C++语言有以下几个特点:

  • 高效性:C/C++语言的代码可直接转换为机器码,执行速度很快
  • 可移植性:C/C++语言编写的程序可以在不同的操作系统上编译运行
  • 语言简洁:C/C++语言拥有简洁的编程语法,易于阅读和学习
  • 操作系统级别编程:C/C++语言能够操作程序内部的内存,具有底层编程能力

1.3 C/C++的应用领域

C/C++语言广泛应用于以下领域:

  • 操作系统开发:Unix、Linux等操作系统的核心部分是由C语言编写的,C++语言被广泛应用于Windows、MacOS等操作系统的开发
  • 游戏开发:C++语言是游戏开发中最常用的编程语言之一主要用于游戏引擎的开发
  • 嵌入式开发:嵌入式系统大多数采用C语言编程因为C语言的语法简洁且能够直接访问底层硬件
  • 应用开发:Manydisk、Photoshop等大型软件采用了C或C++语言进行开发

二、运算符与数据类型

2.1 运算符表达式

2.1.1 基本算术运算符

  • 加法运算符:+
  • 减法运算符:-
  • 乘法运算符:*
  • 除法运算符:/
  • 取模运算符:%
  • 自增运算符:++
  • 自减运算符:--
#include <iostream>

using namespace std;

int main() {
    int a = 10, b = 5;
    cout << a + b << endl; // 加法
    cout << a - b << endl; // 减法
    cout << a * b << endl; // 乘法
    cout << a / b << endl; // 除法
    cout << a % b << endl; // 取模
    a++;
    cout << a << endl; // 自增
    b--;
    cout << b << endl; // 自减
    return 0;
}

2.1.2 关系运算符

  • 等于运算符:==
  • 不等于运算符:!=
  • 大于运算符:>
  • 小于运算符:<
  • 大于等于运算符:>=
  • 小于等于运算符:<=
#include <iostream>

using namespace std;

int main() {
    int a = 10, b = 5;
    cout << (a == b) << endl; // 等于
    cout << (a != b) << endl; // 不等于
    cout << (a > b) << endl; // 大于
    cout << (a < b) << endl; // 小于
    cout << (a >= b) << endl; // 大于等于
    cout << (a <= b) << endl; // 小于等于
    return 0;
}

2.1.3 逻辑运算符

  • 逻辑与运算符:&&
  • 逻辑或运算符:||
  • 逻辑非运算符:!
#include <iostream>

using namespace std;

int main() {
    int a = 10, b = 5;
    cout << ((a > b) && (a < 20)) << endl; // 逻辑与
    cout << ((a < b) || (a < 20)) << endl; // 逻辑或
    cout << !(a > b) << endl; // 逻辑非
    return 0;
}

2.1.4 位运算符

  • 按位与运算符:&
  • 按位或运算符:|
  • 按位异或运算符:^
  • 按位取反运算符:~
  • 左移运算符:<<
  • 右移运算符:>>
#include <iostream>

using namespace std;

int main() {
    int a = 10, b = 5;
    cout << (a & b) << endl; // 按位与
    cout << (a | b) << endl; // 按位或
    cout << (a ^ b) << endl; // 按位异或
    cout << (~a) << endl; // 按位取反
    cout << (a << 1) << endl; // 左移一位
    cout << (a >> 1) << endl; // 右移一位
    return 0;
}

2.2 基本数据类型

2.2.1 整型

整型是表示整数的类型,分为有符号和无符号整型。
有符号整型可表示正数、负数和零
无符号整型仅表示非负数

C语言整型:

类型存储大小(字节)范围(有符号)范围(无符号)
short(短整型)2-32768 到 327670 到 65535
int(整型)4-2147483648 到 21474836470 到 4294967295
long(长整型)4-2147483648 到 21474836470 到 4294967295
long long(长长整型)8-9223372036854775808 到 92233720368547758070 到 18446744073709551615
#include <iostream>

using namespace std;

int main() {
    short s = 1;
    int i = 2;
    long l = 3;
    long long ll = 4;
    cout << sizeof(s) << endl; // 输出2,short类型占2个字节
    cout << sizeof(i) << endl; // 输出4,int类型占4个字节
    cout << sizeof(l) << endl; // 输出4,long类型占4个字节
    cout << sizeof(ll) << endl; // 输出8,long long类型占8个字节
    return 0;
}

2.2.2 浮点型

浮点型是表示实数的类型分为单精度和双精度浮点数。
单精度浮点数占用 4 个字节
双精度浮点数占用 8 个字节

C语言浮点型:

类型存储大小(字节)精度(有效数字位数)
float(单精度浮点数)46 - 7
double(双精度浮点数)815 - 16
long double(长双精度浮点数)1619 - 20
#include <iostream>

using namespace std;

int main() {
    float f = 3.14f;
    double d = 3.1415926535897;
    long double ld = 3.14159265358979323846;
    cout << sizeof(f) << endl; // 输出4,float类型占4个字节
    cout << sizeof(d) << endl; // 输出8,double类型占8个字节
    cout << sizeof(ld) << endl; // 输出16,long double类型占16个字节
    return 0;
}

2.2.3 字符型

字符型是表示一个字符的类型占用 1 个字节
C语言规定字符型常量必须用单引号括起来

#include <iostream>

using namespace std;

int main() {
    char c = 'a';
    cout << sizeof(c) << endl; // 输出1,char类型占1个字节
    cout << c << endl; // 输出a
    return 0;
}

2.2.4 布尔型

布尔型是表示真假的类型只有两个值:truefalse,占用 1 个字节

#include <iostream>

using namespace std;

int main() {
    bool b = true;
    cout << sizeof(b) << endl; // 输出1,bool类型占1个字节
    cout << b << endl; // 输出1,true表示为1
    return 0;
}

2.2.5 空类型

空类型是一种特殊的数据类型用来表示不返回值的函数。
可以使用 void 关键字表示

#include <iostream>

using namespace std;

void hello() {
    cout << "Hello World!" << endl;
}

int main() {
    hello();
    return 0;
}

三、程序控制结构

在编写程序时不仅需要声明变量、函数等元素,还需要对这些元素进行处理,使程序按照我们所期望的方式运作,这时候就需要使用到程序控制结构。

3.1 顺序结构

程序默认情况下按照代码的排列顺序逐条执行就是顺序结构
顺序结构输出HelloWorld:

#include <iostream>
using namespace std;

int main() {
    cout << "Hello, ";
    cout << "world! " << endl;
    return 0;
}

输出结果:

Hello, world!

3.2 分支结构

程序的分支结构可以根据特定的条件来选择执行不同的语句
C/C++ 语言中提供了 ifswitch 两种条件分支语句

3.2.1 if 语句

if 语句的基本形式如下:

if (expression) {
  // 如果 expression 为真,执行该语句块
}

可以对 if 语句进行拓展,使用 else ifelse 关键字。

if (expression1) {
  // 如果 expression1 为真,执行该语句块
} else if (expression2) {
  // 如果 expression1 为假,expression2 为真,执行该语句块
} else {
  // 如果 expression1 和 expression2 都为假,执行该语句块
}
#include <iostream>
using namespace std;

int main() {
    int a = 10;
    if (a > 10) {
        cout << "a is greater than 10" << endl;
    } else if (a < 10) {
        cout << "a is less than 10" << endl;
    } else {
        cout << "a is equal to 10" << endl;
    }
    return 0;
}

输出结果:

a is equal to 10

3.2.2 switch 语句

switch 语句根据一个表达式的值可以在多个选项中选择一个执行
每个选项都是一个case,后面跟一个要执行的语句块

switch(expression) {
    case const_expr1:
        //语句块1;
        break; 
    case const_expr2:    
        //语句块2;
        break;
    ...
    default:
        //默认语句;
}
#include <iostream>
using namespace std;

int main() {
    int a = 2;
    switch (a) {
        case 1:
            cout << "a is equal to 1" << endl;
            break;
        case 2:
            cout << "a is equal to 2" << endl;
            break;
        default:
            cout << "a is not equal to 1 or 2" << endl;
            break;
    }
    return 0;
}

输出结果:

a is equal to 2

3.3 循环结构

循环结构用于多次执行同一段代码
C/C++ 语言有三种循环结构:forwhiledo-while

3.3.1 for 循环

for 循环的语法格式如下:

for (初始化表达式; 条件表达式; 循环后操作表达式) {
    // 要执行的代码块
}

其初始化表达式用于初始化循环计数器
条件表达式用于判断是否符合循环条件
循环后操作表达式用于每次循环后更新循环计数器
下面是一个计算从1到10的整数和的例子:

#include <iostream>
using namespace std;

int main() {
    int sum = 0;
    for (int i = 1; i <= 10; i++) {
        sum += i;
    }
    cout << "1 + 2 + 3 + ... + 10 = " << sum << endl;
    return 0;
}

输出结果:

1 + 2 + 3 + ... + 10 = 55

3.3.2 while 循环

while 循环的语法格式如下:

while (条件表达式) {
    // 要执行的代码块
}

其中条件表达式用于判断是否符合循环条件,如果符合则执行循环体否则跳出循环

下面是一个输出1到10的整数的例子:

#include <iostream>
using namespace std;

int main() {
    int i = 1;
    while (i <= 10) {
        cout << i << " ";
        i++;
    }
    cout << endl;
    return 0;
}

输出结果:

1 2 3 4 5 6 7 8 9 10

3.3.3 do-while 循环

do-while 循环的语法格式如下:

do {
    // 要执行的代码块
} while (条件表达式);

其中条件表达式用于判断是否符合循环条件,如果符合则执行循环体否则跳出循环
不同于 while 循环,do-while 循环会先执行一次循环体再进行条件判断

下面是一个输出1到10的整数的例子:

#include <iostream>
using namespace std;

int main() {
    int i = 1;
    do {
        cout << i << " ";
        i++;
    } while (i <= 10);
    cout << endl;
    return 0;
}

输出结果:

1 2 3 4 5 6 7 8 9 10

四、小结回顾

运算符
C/C++中常见的运算符包括算术运算符、关系运算符、逻辑运算符、位运算符等。运算符的使用可以帮助程序员实现不同的功能例如算术运算符可以进行加、减、乘、除等常用的数学运算。

基本数据类型
C/C++中常用的基本数据类型包括整型、浮点型、字符型和布尔型。不同的数据类型有不同的存储大小和表示范围,程序员需要根据实际情况选择合适的数据类型来存储和处理数据。

程序控制结构
C/C++中常用的程序控制结构包括顺序结构 条件结构 循环结构,通过控制程序的流程可以实现不同的功能和逻辑判断。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。