【C++学习记录4】布尔类型和引用

在C语言中,其没有具体的布尔类型,选择用int代替,0表示假,1表示真。这样子显得不是特别严谨。

C++中的bool类型(bool是对C语言的类型的补充)

1C++C语言的基本类型基础上增加了bool

2)C++中的bool可取的值只有truefalse

3)理论上bool只占用一个字节。

注意:

       true代表真值,编译器内部用1来表示;

       false代表非真值,编译器内部用0来表示;

       bool类型只有true(非0)和false(0)两个值,C++编译器会将非0值转换为true,0值转换为false。

bool类型支不支持数学运算?

虽然说从概念上,C++提供了bool类型。但是内部实现还是用整型实现的。用一个字节整形来实现的。为了支持C语言,所以是支持数学运算的。计算后得到非0值(包括负数)转换为true0值为false

若有 

bool b;
int a;
b = 3;
a = b;
printf("a = %d, b = %d\n", a, b);

这里的结果为a = 1b = 1因为内部虽然为整型计算的到的,但是b0,所以为1。所以a = 1

这也就是说bool类型为0时,输出0;非0输出1。

布尔类型是C++中的基本数据类型:

1)可以定义bool类型的全局变量;

2)可以定义bool类型的常量;

3)可以定义bool类型的指针;

4)可以定义bool类型的数组。

C++对三目运算符的升级

下面的代码正确么?

#include<stdio.h>

int main()
{
    int a = 2;
    int b = 1;

    (a < b ? a : b) = 3;

    ptintf("a = %d, b = %d\n", a, b);

    return 0;
}

三目运算符在C语言中不能当作左值来使用。在gcc编译.c文件时报错,g++编译.cpp文件时不报错。

C语言中的三目运算符返回的是变量值。(不能作为左值使用)

C++中的三目运算符可直接返回变量本身。(既可作为右值使用,又可作为左值使用)

注意:

1)三目运算符可能返回的值如果有一个是常量值,则不能作为左值使用。

2)所有的返回值都是变量时才能作为左值使用。

C++中的引用

引用可以看作一个已定义变量的别名。

语法为:(var是变量名)

       Type& name = var

例如:

       int a = 4

       int& b = a   //ba的别名

注意:

       普通引用在定义时必须用同类型的变量进行初始化。(也就是说不能有 int& b;这样的情况)

#include <stdio.h>

int main(int argc, char *argv[])
{
    int a = 4;
    int& b = a;
    
    b = 5;
    
    printf("a = %d\n", a);
    printf("b = %d\n", b);
    printf("&a = %p\n", &a);
    printf("&b = %p\n", &b);
    
    return 0;
}

通过引用的了解,可以知道C++对三目运算符做了什么。

其一是当三目运算符的可能返回都是变量时,返回的是变量引用;

其二是当三目运算符的可能返回中有常量时,返回的是值。

如图所示:

引用必须初始化。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值