zoukankan      html  css  js  c++  java
  • C++学习笔记(三):布尔类型和引用

    0x01 c++中的布尔类型

    c++在C语言的基本类型系统之上增加了bool,其可取的值只有true和false;true代表真值,编译器内部用1来表示,同时会将非0值转化为true,false代表非真值,编译器内部用0来表示。

    可以定义布尔类型的全局变脸、常量、指针、数组......

    1. 通过上述的描述,来理解以下代码对应的输出结果:

    #include <stdio.h>
    
    int main(int argc, char *argv[])
    {
        bool b = false;
        int a = b;
        
        printf("sizeof(b) = %d
    ", sizeof(b));
        printf("b = %d, a = %d
    ", b, a);
        
        b = 3;
        a = b;
        
        printf("b = %d, a = %d
    ", b, a);
        
        b = -5;
        a = b;
        
        printf("b = %d, a = %d
    ", b, a);
        
        a = 10;
        b = a;
        
        printf("a = %d, b = %d
    ", a, b);
        
        a = 0;
        b = a;
        
        printf("a = %d, b = %d
    ", a, b);
        
        return 0;
    }
    

    0x02 三目运算符

    1. c++对三目运算符进行了以下升级:

    c++中的三目运算符可直接返回变量本身,既可以作为左值使用,也可以作为右值使用。

    但是需要注意的是:三目运算符可能返回的值中如果有一个是常量值,则不能作为左值使用。

    int main(int argc, char *argv[])
    {
    
    	int a = 1;
    	int b = 2;
    
    	(a < b ? a : b) = 3;
    
    	printf("a = %d, b = %d
    ", a, b);
    
    	return 0;
    }
    
    

    0x03 C++中的引用

    1. 在c++中新增加了引用的概念:

    • 引用可以看作一个已定义变量的别名
    • 引用的语法:Type& name = var;

    普通引用在定义时必须使用同类型的变量进行初始化

    代码示例:

    #include <stdio.h>
    
    int main(int argc, char *argv[])
    {
        int a = 4;
        int& b = a;
        
        b = 5;
        
        printf("a = %d
    ", a);
        printf("b = %d
    ", b);
        printf("&a = %p
    ", &a);
        printf("&b = %p
    ", &b);
        
        return 0;
    }
    
    

    运行结果:

    a = 5
    b = 5
    &a = 001EF7EC
    &b = 001EF7EC
    请按任意键继续. . .
    

    2. c++对三目运算符做了什么?

    • 当三目运算符的返回值可能都是变量时,返回的是变量引用
    • 当三目运算符的返回值可能返回中有常量时,返回的是值
  • 相关阅读:
    并行取数提升报表性能
    报表选型中那些想不到的坑
    原来报表可以做这么多动态交互效果
    多折线堆叠图如何制作?
    SSIS文档导入DB中文乱码
    Linux-系统日志
    linux-用户和组的管理
    LInux-用户和用户组
    dotcore发布到IIS
    vue发布
  • 原文地址:https://www.cnblogs.com/askta0/p/12732363.html
Copyright © 2011-2022 走看看