【问题标题】:Why doesn't the compiler complain when I assign true to an int variable?当我将 true 分配给 int 变量时,为什么编译器不抱怨?
【发布时间】:2012-06-19 22:29:04
【问题描述】:

我有一个如下所示的程序:

#include <stdio.h>
#include <stdlib.h>
#include "string.h"
#include <sstream>

class A{
    int num1;
    char char1;

    public:
        void set_print_num(int);
};

void A::set_print_num(int n){
    num1 = true;
    printf("this is %d", num1);
}

int main(void){
    A a_inst;
    a_inst.set_print_num(5);
}

即使我将 num1 设置为 true 而不是 int,我也没有收到编译器错误。有什么问题吗?

【问题讨论】:

    标签: c++ types type-conversion


    【解决方案1】:

    所有变量都保留它们的类型。但是,一种类型的值可以转换为另一种类型。

    truebool类型的值,它可以隐式转换为int类型,false的值变成0true的值变成1

    C++ 中有许多隐式转换,其中大部分允许数值类型之间的转换,并且可以编写用户定义的转换,以允许与用户定义的类型进行隐式转换。

    【讨论】:

      【解决方案2】:

      bool 可以隐式转换为int。提高你的警告级别,你应该得到一个,但不是错误,因为这是合法的C++

      【讨论】:

        【解决方案3】:

        因为布尔类型被隐式转换为整数类型。例如,true + true 的计算结果为 2。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-28
          • 2016-11-01
          • 2013-05-13
          • 1970-01-01
          • 2022-10-05
          • 2012-05-21
          相关资源
          最近更新 更多