gccで以下のコードをコンパイルすると、1408.Howが得られます。構造体内の値を初期化できますか?構造体内の初期化値
#include<iostream>
using namespace std;
struct Test {
int i=1408;
};
int main()
{
Test l;
int p=1508;
l.i==p;
cout<<l.i;
}
gccで以下のコードをコンパイルすると、1408.Howが得られます。構造体内の値を初期化できますか?構造体内の初期化値
#include<iostream>
using namespace std;
struct Test {
int i=1408;
};
int main()
{
Test l;
int p=1508;
l.i==p;
cout<<l.i;
}
l.i==p;
は何もしません。 ==
は、2つのものが等しいかどうかをテストします。それは割り当てではありません。
あなたはそれがオブジェクトを使用して、構造体本体とintialise値で構造体変数を宣言するのが最善です
l.i=p;
struct内の値を初期化できるか –
@SoundaryaSivaramanできるはずです。あなたが結果を見ているのは、あなたが初期化した後で決して 'i'を変更しなかったからです。 – Carcigenicate
を意味している必要がありますが、あなたのコード識別子に構造識別子を使用して作成されたテストです。
初期化は、 の形式で行うことができます。テストt1 = {1408}。
私が直接割り当てたときにエラーが発生しないのはなぜですか? –
cまたはC++を使用していますか? C++ 11では正当であり、コンストラクタにこの値が使用されることを意味します(明示的に何かを行わない限り)。 –
C++ヘッダを使用してください。 http://en.cppreference.com/w/cpp/language/data_membersを読んでください –
コードを書式設定してください。それは読みにくいです。 – Carcigenicate