2

次のようなプログラムがあります。

#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 を int ではなく true に設定しても、コンパイラ エラーは発生しません。何か問題がありますか?

4

3 に答える 3

2

すべての変数はその型を保持します。ただし、ある型の値が別の型に変換される場合があります。

trueは type の値でありbool、暗黙的に type に変換可能intで、値falseが になり0、値trueが になり1ます。

C++ には多くの暗黙的な変換があり、そのほとんどは数値型間の変換を許可しており、ユーザー定義型との間の暗黙的な変換を許可するために、ユーザー定義の変換を記述することができます。

于 2012-06-17T20:40:40.923 に答える
1

Aboolは暗黙的に に変換可能intです。警告レベルを上げると警告レベルが表示されますが、これは正当なC++であるためエラーにはなりません。

于 2012-06-17T20:40:46.237 に答える
0

ブール型は暗黙的に整数型に変換されるためです。たとえば、true + true は 2 に評価されます。

于 2012-06-17T20:44:11.480 に答える