検索結果 14 件

by hands
7年前
フォーラム: C言語何でも質問掲示板
トピック: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません
返信数: 16
閲覧数: 28717

Re: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません

naohiro19 さん stringstreamの情報をくださりありがとうございました。 また、別課題にあたっていたため、しばらく放置となったこと大変失礼いたしました。 そちらが一段落しましたので、コードをかいてみましたが、何分初心者でstringstreamはまったく存じ上げないばかりか、 そもそもクラスについてすら十分に把握できてないといったレベルですから、ちゃんと教えていただいたstringstreamが使えているのかがかなり怪しいです。 コードを載せますので、もし違っていれば正して頂けましたら参考になります。 // stringstream を使えば #include <iostre...
by hands
7年前
フォーラム: C言語何でも質問掲示板
トピック: if (i & 0x80000000) x = 1; else x = 0;
返信数: 14
閲覧数: 6145

Re: if (i & 0x80000000) x = 1; else x = 0;

ANSIとかISOとは何が違うんですかね。日本語かどうかという部分は違ってくるでしょうけど。単に日本語訳というわけではないですよね?ちょっとだけ気になりました。
規格のド頭に書いてありましたね。
by hands
7年前
フォーラム: C言語何でも質問掲示板
トピック: if (i & 0x80000000) x = 1; else x = 0;
返信数: 14
閲覧数: 6145

Re: if (i & 0x80000000) x = 1; else x = 0;

C 6.5.8 関係演算子 : <(小さい),>(大きい),<=(以下)及び>=(以上)の各演算子は, 指定された関係が真の場合は 1 を,偽の場合は 0 を返す。 その結果は,型 int をもつ。 C++ 5.9 関係演算子 演算子 < (小なり)、> (大なり)、<= (小なり 又は 等しい)及び >= (大なり 又は 等しい) は、すべて false 又は true を生じる。 結果の型は、bool型とする。 C と C++では < 、 > 、<= 、>= の表すところが微妙に違ってくるんですね。成立した時期による表記のゆれですかね。新しい版ではこのあたりは統一されてるんでしょうか。いろ...
by hands
7年前
フォーラム: C言語何でも質問掲示板
トピック: if (i & 0x80000000) x = 1; else x = 0;
返信数: 14
閲覧数: 6145

Re: if (i & 0x80000000) x = 1; else x = 0;

i < 0 にはそういう意味があったんですね。

最上位ビットを符号ビットとして使うことで、負の値を表現しているということでしょうか。

慣れの問題もあるでしょうが、シフトも難しく感じます。たくさんコードを書いて動かしながら感覚を掴んでいけたらと思っております。この度はたいへんお世話になりました。また何か疑問が生じたときは、フォーラムにあげさせて頂きますので、みてやってください。
by hands
7年前
フォーラム: C言語何でも質問掲示板
トピック: if (i & 0x80000000) x = 1; else x = 0;
返信数: 14
閲覧数: 6145

Re: if (i & 0x80000000) x = 1; else x = 0;

その試し方は間違っています。 0 か 1 に値をセットした x は、その後使用されていません。 最初の return文で値が呼び出し元に返されるので、 その後の 3つの return文は実行されません。 確かにこれではxが使われていませんね。 気が付きませんでした。 その1 には最後に & 1 があるのに、 その2 には最後に & 1 がなくてよいのはなぜか 説明できますか? その3 の (i < 0) の意味がわかりますか? 詳しくはわかりませんが予想としては、&1があるのはunsignedかsignedかという部分と関係があると思います。signed は負の値を扱う。 &1を取っても結果...
by hands
7年前
フォーラム: C言語何でも質問掲示板
トピック: if (i & 0x80000000) x = 1; else x = 0;
返信数: 14
閲覧数: 6145

Re: if (i & 0x80000000) x = 1; else x = 0;

0x100000000 は 33ビットですよ。 !! ...ですね。少し錯綜しておりました。シフトと回転も検証の過程で混同しておりました。 0x80000000 1 0000000000000000000000000000000 0xabcdef01 1 0101011110011011110111100000001 0x7fffffff 1111111111111111111111111111111 0xffffffff 1 1111111111111111111111111111111 0x100000000 1 0 0000000000000000000000000000000 ようや...
by hands
7年前
フォーラム: C言語何でも質問掲示板
トピック: if (i & 0x80000000) x = 1; else x = 0;
返信数: 14
閲覧数: 6145

Re: if (i & 0x80000000) x = 1; else x = 0;

かずまさん ありがとうございます。 int が 32ビットだとします。 0x80000000 は最上位ビットが 1 で残りが全部 0 です。 i & 0x80000000 を計算すると、 i の最上位ビットが 0 の場合、結果は 0 になり、 i の最上位ビットが 1 の場合、結果は 0x80000000 になります。 詳しく教えてくださったのに、まだ十分に理解できておらず、申し訳ないです。 一瞬、分かった気がするのですが、次の瞬間泡のごとく消えてしまいます。 i の最上位ビットが、よく分かりません。 i が 0x100000000 の場合は、結果が 0 でした。すなわち、i の最上位ビットは...
by hands
7年前
フォーラム: C言語何でも質問掲示板
トピック: if (i & 0x80000000) x = 1; else x = 0;
返信数: 14
閲覧数: 6145

if (i & 0x80000000) x = 1; else x = 0;

引数として受け取ったビットを左に回転した上で、結果を返すオーバーロード関数rotate()を作成しなさい。整数と長整数を受け取るように、この関数をオーバーロードしなさい。 【監修者注:現在のほとんどすべてのコンパイラでは、整数と長整数を区別して実装されていません。したがってこの問題には、どちらも同じように解答するべきです。】  という問題があり、ビットを回転する処理の仕方が分からなかったので解答(以下) #include <iostream> using namespace std; int rotate(int i); long rotate(long i); int main() { in...
by hands
7年前
フォーラム: C言語何でも質問掲示板
トピック: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません
返信数: 16
閲覧数: 28717

Re: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません

かずまさん 詳しく教えてくださりありがとうございます。 まず、参照オブジェクトについてですが、新版明解C++入門編(柴田望洋著)に int& a = x; で型名の後ろに&を付けて宣言された変数aが参照オブジェクトです。と記述があります。参照について学習するページ内で数回、参照オブジェクトなる語が使われている為、一般的な表現かと思い使用しましたが、著書のなかでも キーワード として太字で書かれてはおらず、また巻末の索引にもそうした語がないことから、著者独自の表現なのかも知れません。質問の意図が捉えにくくなった点、お詫びします。  ご回答頂いた内容ですが、初めて日が浅いためか一読した限りではなか...
by hands
7年前
フォーラム: C言語何でも質問掲示板
トピック: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません
返信数: 16
閲覧数: 28717

Re: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません

かずまさん、strcpy_sについて教えてくださりありがとうございます。またstringを使った書き方も知ることができて嬉しいです。 tk-xleaderさんにもその知識の深さには感服致します。皆さん本当にありがとうございます。 最後に一つだけ、お聞きしたいのですが、かずまさんが書かれたコードにある public: void store(const string& t, const string& name, int num); // string void show(); }; void card::store(const string& t, const string& name, int...
by hands
7年前
フォーラム: C言語何でも質問掲示板
トピック: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません
返信数: 16
閲覧数: 28717

Re: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません

ありがとうございます。 Bullさんのおかげで、ようやく先に進めます。 #define _CRT_SECURE_NO_WARNINGS を使うやり方と strcpy_s(title, t); strcpy_s(author, name); number = num; どちらもうまく行きました。 率直に申しあげますと、stringを使った方法が気になっております。 C++なら std::string を使いましょうという話になりそうですが、それはまあ置いておいて プロジェクトのプロパティで[C/C++]→[すべてのオプション]→[その他のオプション]に /Zc:strictString が指定さ...
by hands
7年前
フォーラム: C言語何でも質問掲示板
トピック: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません
返信数: 16
閲覧数: 28717

Re: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません

Bullさん、tk-xleaderさんありがとうございます。 私もBullさんのおっしゃるように、constが付いてないからなのかな?とは思い至りました。 そこでご指摘の通りconstを付けてみました。 void store(const char *t, const char *name, int num); すみません。~さんが書きました の書き方がわかりません。 すると、 void card::store(char *t, char *name, int num) …の方も互換性がないよという風なことを言われたので void card::store(const char *t, const...
by hands
7年前
フォーラム: C言語何でも質問掲示板
トピック: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません
返信数: 16
閲覧数: 28717

E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません

独習C++の練習問題   図書館の図書目録の項目を管理するための、cardという名前のクラスを作成しなさい。このクラスに本のタイトル、著者、在庫冊数を格納します。タイトルと著者を文字列として保存し、在庫冊数を整数として保存します。store()という名前の公開メンバ関数を使用して本の情報を保存し、show()という名前の公開メンバ関数を使用して情報を表示します。このクラスの動作を確認するために、単純なmain()関数を追加しなさい。  に対しての解答、(以下のコード)をVisual Studio Community 2017で実行したところ エラー (アクティブ) E0167 型 "const...

詳細検索ページへ移動する