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的递增次数竟然取决于他被拿来和谁比较;

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值