1

私はこのコード行を持っています、

newCust.idNumber == ID;

IDの値はstring型であり、すでに割り当てられています。newCustは構造体の名前であり、idNumberは構造体の文字列です。IDの値を構造体のID番号に割り当てたいのですが、この行がコードは「効果のないステートメント」です。私はEclipseを使用しており、Cプログラミングの初心者です。

4

3 に答える 3

3

これは、==2つの値を比較し、その比較の結果を破棄するためです。このような式ステートメントはCでは完全に合法ですが、非常に珍しいものであり、多くの場合、何かを間違って入力したことを示すものとして機能します。そのため、コンパイラはそれについて警告します。

編集:

=も試してみましたが、このエラーが発生しました。タイプchar[60]からタイプに割り当てると、互換性のないタイプになります。char *

このような文字列を割り当てることはできません。次のようにを使用する必要がありますstrcpy

strcpy(newCust.idNumber, ID);

ヌルターミネータと一緒newCust.idNumberに収まるのに十分な長さであることを確認してください。つまり、の場合、mustの値は59文字以下である必要があります。IDnewCust.idNumberchar[60]ID

于 2013-01-08T15:43:06.963 に答える
1

==等しいかどうかをチェックします。これは代入演算子ではありません。

そして、あなたはチェックの戻りコードをチェックしないので、Eclipseは(当然のことながら)あなたに怒鳴ります。

于 2013-01-08T15:43:03.607 に答える
1

比較して結果を捨てているからです。あなたはおそらく欲しかった

newCust.idNumber = ID;

単一の等号に注意してください。

于 2013-01-08T15:42:53.070 に答える