C++与C语言之间的区别

一、bool类型

逻辑型也称布尔型,其值为true和false,存储字节数在不同编译系统中可能不同,vc++中为1字节

0值为false,其他值转换后为true,在转换回int值为1

#include<iostream>
using namespace std;
int main(void)
{
    bool result;
    result = 100;
    cout<<result<<endl;  //输出:1
    return 0;
}

二、const限定符

用const给字面常量起个名字(标识符),这个标识符就成为标识符常量:因为标识符常量的声明和使用形式很像变量,所以也称常变量;

定义的一般形式:

const 数据类型 常量名  = 常量值;

数据类型 const 常量名 = 常量值;

例如: const float PI= 3.1415926f;

注意事项:

常变量在定义时必须初始化;

常变量初始化之后,不允许再被赋值;

#include <iostream>
using namespace std;

int main()
{
    //const int a;         Error常量必须初始化
    const int a= 100;      //正确
    //a = 200;          Error常量不能重新被赋值
    
    //常量指针
    b=22;
    const int * p;          //  const 在*左边,表示指针所指向变量为常量,经由*p不能更改指针所指向的内容
    p = &b;                 //  正确
    //*p = 200;             //  Error常量不能重新被赋值

    //int * const p2;       //  Error常量必须初始化
    int * const p2 = &b;    //  const在*右边,表示p2为常量;
    int c= 100;
    //p2 = &c;              //  Error常量不能重新被赋值
    *p2 = 200;

    count <<b<<endl;        //输出: 200

    return 0;
}

三、const和#define的区别

1.const 定义的常量存在类型;#define定义的常量没有类型;

2.const 定义的常量在编译的时候分配内存;#define定义的常量在预编译的时候进行替换,不分配内存;

3.作用域不同,const定义的常变量的作用域为该作用域的范围;#define定义的常量作用域为它的定义点到程序结束,可以使用#undef取消;

定义常量还可以使用enum,尽可能使用enum const替换#define;(inline)

高层次 const enum inline 替换#define;

底层框架 使用#define更加灵活

#include<iostream>

using namespace std;

#define STR(a) #a
#define CAT(a,b) a##b

int main(void)
{
    int xy = 100;
    cout<<STR(ABCD)<<endl;    //#ABCD <=> "ABCD"
    cout<<CAT(x,y)<<endl;     //x##y  <=> xy
    return 0;
}

#define 定义的常量,容易产生副作用。

#define CALL_WITH_MAX(a,b)  f((a)>(b)?(a):(b))

int a= 5;

int b=0;

CALL_WITH_MAX(++a,b)        //a被累加两次

CALL_WITH_MAX(++a,b + 10)        //a被累加一次

在这里,调用f之前,a的递增次数竟然取决于他被拿来和谁比较;

相关推荐

  1. C++C语言之间区别

    2024-03-26 21:52:02       45 阅读
  2. C++】C语言C++区别

    2024-03-26 21:52:02       26 阅读
  3. C 语言中,结构体「.」「->」区别

    2024-03-26 21:52:02       58 阅读
  4. C语言中 struct union 区别

    2024-03-26 21:52:02       38 阅读
  5. C语言中 #include<> include ““区别

    2024-03-26 21:52:02       34 阅读
  6. C语言指针数组区别

    2024-03-26 21:52:02       34 阅读
  7. HalconC++之间数据转换

    2024-03-26 21:52:02       23 阅读
  8. c++和c语言区别实例

    2024-03-26 21:52:02       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 21:52:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 21:52:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 21:52:02       82 阅读
  4. Python语言-面向对象

    2024-03-26 21:52:02       91 阅读

热门阅读

  1. JWT令牌

    JWT令牌

    2024-03-26 21:52:02      44 阅读
  2. 结构体-C语言

    2024-03-26 21:52:02       42 阅读
  3. Redis事务

    2024-03-26 21:52:02       39 阅读
  4. C语言每日一题(65)有效三角形的个数

    2024-03-26 21:52:02       45 阅读
  5. python 打包

    2024-03-26 21:52:02       40 阅读
  6. MySQL中的binlog和redolog有什么区别?

    2024-03-26 21:52:02       32 阅读
  7. leetcode-链表

    2024-03-26 21:52:02       46 阅读
  8. 力扣1----10(更新)

    2024-03-26 21:52:02       35 阅读
  9. C# 关键字 as is

    2024-03-26 21:52:02       38 阅读
  10. 接口测试面试题汇总(含答案)

    2024-03-26 21:52:02       42 阅读
  11. 挡边输送带是什么

    2024-03-26 21:52:02       39 阅读