TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
Excel VBA 質問スレ Part66
DarkBASIC
Java Web Application Framework総合 ver2
起業しようぜ8
すべての言語を判定する計算機構
C# vs Java どっちが好き? その4
【糞.NET】裏切り者には死を【アンチゲイツ】
ARToolKitでARを作ろう
【漏れは】猫でもわかる質問スレ【猫以下です】
わんくま死亡か?
C言語なら俺に聞け 155
- 1 :2020/05/10 〜 最終レス :2020/06/11
- !extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
※前スレ
C言語なら俺に聞け 154
https://mevius.2ch.sc/test/read.cgi/tech/1578997950/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 2 :
- 1乙
- 3 :
- >>1おつかれです
- 4 :
- for(int i = 0, a = 2; i < 10; ++i) ...
同じ型じゃなくて
Cで
for(int i = 0, long a = 2; i < 10; ++i) ...
観たいに描く方法を教えて
- 5 :
- >>4
{
int i;
long a;
for(i = 0, a = 2; i < 10; ++i) ...
}
- 6 :
- for文で++iって書くやつは過去の学習に縛られ惰性で生きている臆病者
- 7 :
- C++使いは前置がデフォ
- 8 :
- >>7
それを言っているんだ。 正しく自己を見つめ直せ
- 9 :
- 前置インクリメント VS 後置インクリメント
http://cpp.aquariuscode.com/preincriment-vs-postincriment
- 10 :
- 「値が使われる場合」
勝手に読み飛ばすな
- 11 :
- >>6
i++ と書くと未来に縛られちゃうの?
つか、
for (略;略; ++i) と
for (略;略; i++) に違いあるの?
- 12 :
- C++はテンプレートと演算子オーバーロードの関係で前置で良い場合は全て前置にする。
- 13 :
- >>8
言ってる意味がさっぱりわからん
何が不満なんだ?
- 14 :
- 禿げ(C++の神)から前置にしろと御神託があった。
SA: 禿4 pp.982
- 15 :
- いまどき小学生でも後置なんて使わんわ。
- 16 :
- 後置は幼女にのみ許される特殊な魔法。
- 17 :
- http://hissi.org/read.php/tech/20200513/SmNqTThDZ1gw.html
- 18 :
- 4回書き込んだだけで2位かよ。
ム板はこれから青森サーバーと呼ぶ。
- 19 :
- スレタイ
- 20 :
- ムエタイがなんだって?
- 21 :
- 前置は不可分にしてしまった継続処理くらいにしか使いみちがない特殊な演算子だからのう
c言語的にどっちでもいい場合とりあえず前置にして論理バグのスルーを防ぐみたいなやり方あるかもしれない
- 22 :
- 後置の方が好きw
- 23 :
- 語順が名詞動詞で気持ちいい
- 24 :
- for文の場合、インクリメントされるタイミングがブロックの末尾だから、後置の方が直感的な気がするね
- 25 :
- それは気のせい
- 26 :
- 前置にしたときの言いようのない不安感
- 27 :
- C言語しか知らなくて、学びながらプログラムの作成にチャレンジしてるものです。
fopenについて教えてください。
fopen("wb")で開くとポインタ(ストリーム?)はファイルの先頭で上書きモード
fopen("ab")で開くとポインタ(ストリーム?)はファイルの最後で追記モード
ということを知りました。
既存ファイルを開き、先頭部分のデータの一部を上書き、且つ、末尾にデータを追加したいと考えています。
この場合は、どっちか片方で開いてfseekとかでポインタ移動してしまえば、 上書きも追加もできるのでしょうか?
それとも上書きしたあと、一旦fcloseをして開きなおさなければならないのでしょうか。
よろしくお願いいたします。
- 28 :
- >>27
fseek() で書きたい位置に移動して自由に fwrite()/fread() を使うだけで OK です。
fclose() は一番最後に一回だけでいいですよ
- 29 :
- >>28
どっちのモードで開いてもいいんですね。
また、fopenを2回使う場合も、fcloseは最後の一回だけでいいという訳ですね。
ありがとうございました。
- 30 :
- >>27
wは既存ファイルは0バイトに切り詰め、aは出力時はfseekが効かずに常に末尾に追加なので
既存ファイルはr+bで開いて、存在しない場合はw+bで作成するのがいいのではないかな
- 31 :
- >>27
"ab+"
- 32 :
- Ruby でやってみた
入力ファイル → 更新後
123456789 → abc456789xyz
filename = "test.dat"
# バイナリ読み書き両用
File.open( filename, "r+b" ) do |io|
io.write( "abc" )
io.seek( 0, IO::SEEK_END ) # ファイルの末尾から
io.write( "xyz" )
end
# 更新後のファイルを読み込む
File.open( filename, "rb" ) do |io|
puts io.read( nil )
end
- 33 :
- ruby ならきれいに書けるという主張でもないようだけど、誤爆?
- 34 :
- ム板で最も嫌われてる荒らしの一人。
懸命なruby布教のおかげで、rubyを覚えるとキチガイになるという通説を広めることには成功している。
- 35 :
- 感染者には触るな
- 36 :
- >>30
>aは出力時はfseekが効かずに常に末尾に追加
これは驚きました!
https://ideone.com/RG43Xw
$ gcc -W -Wall fopen_a_mode.01.c
$ ./a.exe
abcdefgABC
$
https://ideone.com/T8QqyL
$ gcc -W -Wall fopen_a_mode.01.c
$ ./a.exe
ABCdefg
$
新しいことに気が付くようにしていただき、ありがとうございます!
- 37 :
- まんま教えて貰ったのに「気が付くようにしていただき」なんだな
- 38 :
- この方はワザと炎上させる放火魔だからな
- 39 :
- >>38
失礼しちゃいますね!
私が着火したことはほとんどなく、むしろ買ってに周りが発火している、という気がするのですが?
私が着火した、という証拠はありますか?あるというのなら URL で示してください!
- 40 :
- 無自覚な分だけ尚更たちが悪い
- 41 :
- ruby布教者じゃなくてただのrubyアンチでしょ
布教なんかしてるように見えるの?
- 42 :
- 定期的に書かないと、その名前すらみんな忘れ去るから
- 43 :
- x[i][j]でx={0or1}を取る場合、全通りのx[i][j]を生成する方法はありますか?
- 44 :
- >>43
x[i][j]を使った計算で全通りを比較したいです
- 45 :
- 誰か質問の意味分かる人いる?
何がしたいのかさっぱり分からん
- 46 :
- >>45
x[i][j]が変数の関数の最大値を求めたいんですが、全通りの計算をして最大値を求めたいです
- 47 :
- ΣΣx[i][j]を含む関数です
- 48 :
- 全部計算して計算結果を比較して最大値を求めれば良いのでは?
質問の意図が見えない…
iとjの2重ループで全部計算させて結果をresult[i][j]に入れる
その後、もっかい2重ループして最大値を探す
そのまんまだけど…
- 49 :
- i,jのサイズが2の時x[i][j]の組み合わせは
?x[0][0]=0、x[0][1]=0、x[1][0]=0、x[1][1]=0
?x[0][0]=0、x[0][1]=0、x[1][0]=0、x[1][1]=1
?x[0][0]=0、x[0][1]=0、x[1][0]=1、x[1][1]=0
?x[0][0]=0、x[0][1]=0、x[1][0]=1、x[1][1]=1
?x[0][0]=0、x[0][1]=1、x[1][0]=0、x[1][1]=0
……って続くと思いますが、この配列の中身の全組み合わせを生成したいです
- 50 :
- あ、うえのΣの奴は間違いです
Σはありません
- 51 :
- >>50
あ、あります、ごめんなさい。。
- 52 :
- >x[i][j]が変数の関数の最大値
これからして、意味が分からない
xの型や関数の仕様について、ヒントもないのか
- 53 :
- びっくりするくらいわからんわw
フーリエ変換だとかアフィン変換だとかそういうなんか最重要な情報出し忘れてない?
- 54 :
- 普通に二重forループ使え。問題文がおかしい。問題がその文章のままなら、たぶん学校か会社を間違えてる。
- 55 :
- >>49
?x[0][0]=0、x[0][1]=0、x[1][0]=0、x[1][1]=0
?x[0][0]=0、x[0][1]=0、x[1][0]=0、x[1][1]=1
?x[0][0]=0、x[0][1]=0、x[1][0]=1、x[1][1]=0
?x[0][0]=0、x[0][1]=0、x[1][0]=1、x[1][1]=1
?x[0][0]=0、x[0][1]=1、x[1][0]=0、x[1][1]=0
ここから値だけ取り出すとこうなる
0000
0001
0010
0011
0100
...
あとは簡単でただの二進数だから1重ループでその整数を1bitずつシフトしてマスクして代入すればいい
- 56 :
- 添字x2 + 値で合計 3bit の組み合わせか
- 57 :
- 何のために二次元にしてるのかイミフ
値も0と1しか入れないなら
もっと簡単な構造にすればいいのに
- 58 :
- >>49
> ……って続くと思いますが、この配列の中身の全組み合わせを生成したいです
生成すればいい
何が問題なのか説明しないで問題丸投げは嫌がられるぞ
便利な標準関数一つで解決するとかを期待してるなら無理だ
- 59 :
- bool x[I_NUM][J_NUM]; とすると、x全体で取りうる値のパターン数は
2 ** (I_NUM*J_NUM) になるから、よほど小さな I_NUM, J_NUM でなきゃ
全通りを一度に生成して一覧表で返す方法は無理だよね。
添字 i, j について回る2重ループと、
特定の i, j における x[i][j] に 0, 1 を格納するループ、
合わせて3重のループで「ある場合のx」を生成して
その x で f(x) を計算して、最大値を更新、
3重ループが終わった時点で全パターンでの最大値が得られる、
て感じにするんじゃないかな。
>>46 の「x[i][j]が変数の関数」ってのが、
関数のパラメータとして2次元配列x[][]を取る、って理解だけど。
- 60 :
- 関数の引数として配列を渡す、って理解?
関数側は、「何それ食い物?」って答えそうだな
- 61 :
- 組合せ最適化問題でしょ
組合せ変数を0,1で定義してる
- 62 :
- Cの逆アセ対策の難読化って、ヘッダの関数シグネチャも変えた方がいいの?
- 63 :
- バイナリを暗号化して復号ローダーつけるとか
クラックするとき一番困るのがこれ
- 64 :
- >>63
サンクス
復号ローダーは初めて聞いたわw
- 65 :
- 関数のシグネチャはスタティックリンクすればバイナリには残らない
ダイナミックリンクにするとエクスポートテーブルに載ったりするけどね
- 66 :
- セキュリティ周りは英語みるしかないね
日本人は忌避感が強すぎる
teratailとかでたまに質問してる人がいるけど
「悪用するひとがいるから回答できない」みたいな発言ばっかり
セキュリティ後進国ニッポン万歳
- 67 :
- 飲食店の場所取りに自分のカバンやスマホ置く国日本。
敷地の出入り口封鎖にプラスチックチェーン使う国日本。
- 68 :
- ポインタ変数のバイト数って32ビット環境が4バイトで64ビット環境が8バイトですか?
- 69 :
- >>65
夢で見たの?
- 70 :
- >>68
そういうのが多いが決まっているわけではない
式sizeof(void*)が生じる値は処理系定義なので
コンパイラのマニュアルに記載されることになっている
- 71 :
- >>70
コンパイラによるんですか
- 72 :
- >>71
コンパイラにより、かつ一定の挙動が保証される
それが処理系定義
- 73 :
- >>72
なるほど
ありがとうございましたm(_ _)m
- 74 :
- ただし実際の実装では>>68のようになってることが多い。
まるで大井川です。
- 75 :
- 10回に1回くらいsegmentation faultが起こる原因って何だか分かりますか?
- 76 :
- 初期化し忘れによる不定
- 77 :
- 再帰が深すぎ
境界値でのテストをしていない
- 78 :
- >>76
宣言した、配列や変数に全部初期値を入れた方が良いということでしょうか?
- 79 :
- >>78
配列や変数に値を入れるより先に値を読むような処理があるなら、その値は不定になるよ。
不定じゃ困るなら初期化しなければならないし、処理の流れ上読むより先に必ず値を入れることになるなら必ずしも初期化は要らない。
- 80 :
- 無効な値とかを決めて、全部初期値としてセットしておいたほうがバグは見つけやすくなるかと
- 81 :
- 全部初期化した方がいいといえばいい、というか…
0とかのデフォ値でいいならそうだよ、というか…
変数に代入し忘れのバグって、変数に代入すべき所でしてないのが原因なワケで
それを直さないとバグったままだよ
- 82 :
- フフフフフフフフフフフフフフフフ
- 83 :
- Cでディクショナリ型のデータ構造が使いたいんだけど何かいい擬似的な仕組みとかないかな
- 84 :
- 深く考えずそこいらのハッシュのコードをコピペして終わり
- 85 :
- 配列に入れてqsortしてbsearch
- 86 :
- GNU汚染されても構わないなら
- 87 :
- >>86
意味不明
- 88 :
- >>83
tcl/tk
または
memcached/memcache-client
- 89 :
- >>87
ロリコンGNU汚染は深刻
- 90 :
- Cの初心者質問スレはここでいいのかな?
- 91 :
- 【問題】最大値と最小値を順番に表示するプログラムを作成したい。以下のプログラムに適切なコードを追加して完成させよ。
【プログラム】
int main(void)
{
double a, b, c, max, min;
scanf("%lf", &a);
scanf("%lf", &b);
scanf("%lf", &c);
/* ここにコードを追加 */
if(max<b) {
max = b;
}
if(max<c) {
max = c;
}
if(min>b) {
min = b;
}
if(min>c) {
min = c;
}
printf("%f\n%f\n", max, min);
return 0;
}
- 92 :
- 【僕の解答】
if(max<a) {
max = a;
}
if(min>a) {
min = a;
}
を追加したのですが、上手くいきません。
どこが間違っているのでしょうか??
- 93 :
- 初期化されてないmax,minと比較をしたら結果は不確定になってしまうでしょ
この場合比較自体が不要、代入するだけでいい
- 94 :
- 宿題か・・・
宿題は宿題用のスレがあるので次回からはそちらへ。
- 95 :
- >>94
そのスレってどこにありますか?
- 96 :
- >>95
C/C++の宿題片付けます 170代目 [無断転載禁止]©2ch.sc
https://mevius.2ch.sc/test/read.cgi/tech/1456911928/
C/C++の宿題片付けます 170代目 [無断転載禁止]©2ch.sc
https://mevius.2ch.sc/test/read.cgi/tech/1456647534/
- 97 :
- 170代目宿題スレッドって2つ生きてるんだ。片方しか見てなかったわ。
両方ともさほど繁盛してないみたいだけど。
最大値、最小値を入力されたデータの一つで仮に設定する手法か。
Cに限らない話だね。アルゴリズムって言うほど大袈裟でもないけど。
- 98 :
- >>97
5 年ほど前は大繁盛だったんですけど、最近は授業でも C は取り上げられなくなったんですかね?
- 99 :
- >>98
QZのせいで糞スレ化したからだろう
- 100 :
- 退学になったストーカー、今どうしているんだろう
- 101 :
- Ruby では、
a = ARGV[ 0 ].to_f; b = ARGV[ 1 ].to_f; c = ARGV[ 2 ].to_f
# ここにコードを追加
max = a; min = a
max = b if max < b
max = c if max < c
min = b if min > b
min = c if min > c
p min, max
- 102 :
- >>99
+1
- 103 :
- 自分ならmax,minに無条件に値を入れないで
if (a < b)
{
min = a;
max = b;
}else{
min = b;
max = a;
}
if (min > c) min = c;
if (max < c) max = c;
にする。
- 104 :
- もともと穴埋め問題なのに穴以外のところを変更しちゃダメだろう
- 105 :
- Makefileを作るのは今もモダンなやり方でしょうか?
- 106 :
- >>105
モダンな方法は言語によってもいろいろあるようですが(例えばネットに接続してライブラリの最新版を fetch してくるものとか)、でも、私は make から離れなれないですね…
- 107 :
- 今はninjaだかがモダンらしい
使ったことはないが
- 108 :
- MPD(Music Player Daemon)のmakeがninjaに変わって、ビルドに泣いた。
mesonというconfigure相当のモノに、configureで指定していたオプションが無くて...
日本語命名品は凶悪だわ。MIRAIとかAnna-senpaiとか。
- 109 :
- >>105
C(gcc/cl)でもC++(g++/cl)でもC#(csc)でも現役でmakefile使ってる
- 110 :
- モダンかと言われると微妙だけど今ならcmakeでMakefile生成でしょ
- 111 :
- Ruby の、rake, thor みたいな、タスクランナーでも使えば?
- 112 :
- 俺もCMake愛用している
- 113 :
- テキストエディタほどでないにせよ、ビルドツールも喧嘩の種になりそうかな。
大勢の人が集団で開発とか、クロスプラットフォーム向けに配るとかでなきゃ、
好きにすりゃいい気もするのう。
個人的にはmakeが大好きで万能バッチファイル的に使うけど、
俺自身決してモダンボーイじゃないから。
- 114 :
- makeってあれサブルーチンみたいなことするにはどうすりゃええの
- 115 :
- gcc流のオプションをclのオプションに変換してclを呼び出すラッパーある?
- 116 :
- >>114 本当に単純なサブルーチン呼び出し風なら
サブルーチンに相当するターゲットを順番に依存対象にしてこんな感じ。
.PHONY: main sub1 sub2
main: sub1 sub2
@echo "and now, going main"
sub1:
@echo "this is sub1"
sub2:
@echo "I'm sub2"
- 117 :
- >>115
それ需要がありそうですね…
- 118 :
- >>116
おお、なるほど
こんなんでいいのか
助かったよサンクス
- 119 :
- てす
- 120 :
- グローバル変数で、
char A[4], B[4];
と宣言したら、メモリ中でAのすぐ隣にBが来ることは保証されているんですか?
例えば、Aはインデックスが0から3までですが、この範囲を超えてA[4]に
アクセスしたら、それはB[0]にアクセスしたことになるんですか?
- 121 :
- 環境依存でどっちに配置されるかの保証はなかったような
- 122 :
- >>120
範囲を超えたアクセスは未定義動作。順序どころか隣接する保証もないよ。
- 123 :
- 自分で保証するしかないよ
- 124 :
- >>120
順序や隣接を保証したいなら struct を使うとか
- 125 :
- その場合もパディングについては知っておかないと。
- 126 :
- 荒井さんがケツに詰め物してくるねんで
- 127 :
- char A[8];
char *const B=&A[4];
でいいじゃんなにが問題なの?
- 128 :
- >>127
質問者のやりたいことはおそらくそれで事足りるとは思う。
問題があるとすればsizeof(A), sizeof(B)の値が当初の書き方と異なるとかかな。
- 129 :
- 質問者は隣接して欲しくないのだろう。
- 130 :
- ゴールポストが動き始めましたω
- 131 :
- × 隣接する前提で突破させてアクセスしたい
△ どうも B[0] の値がいつのまにか変わっちゃってるんだけど A[]で突破して書き込んだ可能性をチェックしたほうがいい?
- 132 :
- 配列操作の関数とかで
void func(int data[], int size){
for(int i = 0; i < size; i++)data[i] = 111;
}
みたいな関数って
void func(int *data, int size){
for(int i = 0; i < size; i++)data[i] = 111;
}
って書いても動くけど、何が違うのですか?
書き方違うだけでまったく同じ?
- 133 :
- 文法上は違いがなく同じ どっちで書いてもいい
* ではなく [ ] をあえて使って配列ですよと強調することはある
- 134 :
- ありがとう
- 135 :
- IT掲示板群 ttp://x0000.net/forum.aspx?id=15
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン(画像有り)
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
PS malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
- 136 :
- どう間違ってもsizeof data == sizeof(int *)にしかならんものなのに
白々しくモロバレな嘘を書くことはあるね、確かに
- 137 :
- >>127
うまいですねー
- 138 :
- まじめにやると
union{
char A[8];
struct{
char A[4];
char B[4];
}S;
}U;
- 139 :
- 蛇足でついでにテスト
http://codepad.org/TOo6U3jn
- 140 :
- #pragma packや__attribute__((packed))は使わなくてよいの?
- 141 :
- パディングのせいで上手くいくとは限らない(というが大抵の場合うまくいかない)
ってのは>>125が指摘してるのな
- 142 :
- C言語は得意だぞ笑
何でも聞いてくれ!
- 143 :
- スリーサイズを
- 144 :
- char、short、long
- 145 :
- >>138
それって言語仕様としてはうまくいくと保障できる?
- 146 :
- 構造体はメンバの配置順を保証し、共用体は同一アドレスから開始を保証する
charなので境界調整要求が1でパディングに邪魔されることもない
- 147 :
- charだからといってバイト境界が1になるという保証は無い
- 148 :
- 隣接するcharの間にパディングされるとしたらどんな場合なの?
- 149 :
- 俺ってC言語得意だからいっぱい質問してくれると嬉しいな
- 150 :
- 頼もしいなヲイ。
- 151 :
- 「愛してる」ってC言語で言ってみて
- 152 :
- ++i;
- 153 :
- >>147
ハード全然わからんやつだろ
- 154 :
- charは絶対1バイトになるよな
それともOSのページングの話
- 155 :
- charでダメならint8_tとかじゃダメなの?
- 156 :
- 普通にPCで応用ソフト作ってるときにアライメントとか意識したことないわ
- 157 :
- ここのスレってもしかして組み込み連中が多いのか!?
- 158 :
- PCは4バイトでやりとりするからint型が一番速いというのは聞いたことがあるが、ソースコードの可読性を落としてまでintで宣言しないだろ
優先順位:可読性>>>>型による実行速度の改善
- 159 :
- >>148
4バイト、8バイト、16バイト境界などで配置する処理系があるかもしれない
- 160 :
- Cは白飯
- 161 :
- なんか関わっちゃいけないやつが湧いてるな…。
- 162 :
- >>158
32ビットCPUなら4バイト、64ビットCPUなら8バイトずつ読む
のがCPUさんにだいたい優しいんよ
ていうかワード境界またぐと例外ぶっこくCPUとかあるし
でもって例外処理で残りを読むとかで超遅くなるとかさー
- 163 :
- struct は アライメント1/4/8 で半端な部分はパディングする
アライメント4 で宣言順に配置する処理系
struct A1 {
char a[3];
char b[6];
int c;
};
は
a 3バイトの後 1バイトパディングを挟んで
b 6バイト 2バイトパディングを挟んで
c sizeof(int) バイト
こうなる
union の中の struct だけは アライメント1 というのもない
union {
char x[100];
struct A1 a;
} foo;
struct A1 b;
foo.a と b が異なるメモリアクセスになっちまうもの
- 164 :
- × struct は アライメント1/4/8 で半端な部分はパディングする
アライメント4 で宣言順に配置する処理系
○ struct は アライメント1/4/8 で半端な部分はパディングするという処理系で
アライメント4 配置する場合
言語仕様上
構造体のメンバ間は連続したメモリ空間上にあることは保障してるけど
スキマなく詰めるとかのメンバの詰め方に関する規定は無いんでなかった?
- 165 :
- 昔コンシューマのセーブデータ解析してたら3バイトづつのデータが並んでて構造体定義に悩んだことあった。
- 166 :
- Cユーザーってやっぱ変わった奴多いなー
ガチムチの土方って感じがするわ
- 167 :
- そうか?以前の職場は若い女性が多かったけどな
- 168 :
- ボイン多(ポインタ)
なんちゃってガハハハハハハ!
- 169 :
- >>165
おそらくセーブするときにバイト単位でギチギチに詰め込んでたんだろな。
容量の節約か解析避けの一環か。
ロードしたデータは扱いやすい大きさごとに並べ直して使う。
- 170 :
- FAT12 みたいな変態パッキングもあるから、24bit のフィールドなんてマシな方。
- 171 :
- 8bitCPUなら24bitはごく普通
ファミコンのデータ解析したこと無い?
- 172 :
- 何言ってんだこのバカ
- 173 :
- 24bit WAVファイルも3バイトずつ
フルカラーBMPも3バイトずつ
- 174 :
- >>171
言うほど普通ではないよね
むしろ6bitを無理やり並べるとか もっとケチってたよね
- 175 :
- Base64エンコードとかbit合成するですね
- 176 :
- >>154
> charは絶対1バイトになるよな
うん、8bitと限らんけどな
- 177 :
- 1バイトの定義次第
- 178 :
- 確か1オクテットといったら8ビットだが1バイトは8ビットとは限らないんだよな。
- 179 :
- おまいらほんとガチムチだな
その才能をもっと色んなジャンルに活かせよ
ゲーム解析するぐらいならCで書かれたPrologのインタプリタのソース読む方が社会的に有意義だし、カッコいいぞ
いいぞPrologは。アルゴリズム特化型言語だ
- 180 :
- 漢なら、マシン語
- 181 :
- 8進数は、1バイトが6ビットだったことがあってこそなんだろうね
- 182 :
- おいちゃんの K&Rの表紙は、6ビットの紙テープで描かれた Cという文字だな
- 183 :
- 今の本?(写真3つ目)は鑽孔テープじゃないのか。
dictionarymay.cocolog-nifty.com/blog/2012/08/c-f754.html
- 184 :
- 英語では数は3桁区切りだったもんだからつい2進数も3桁毎に区切って考えてしまったのではないかな?
- 185 :
- 流石にそれは無理があるw
>>181が言うように1バイトと言うか1文字が6bitで良かったから3bit x 2で管理するのが都合が良かった
なので当時のコンピュータには18bitとか36bitマシンとかもあった
その流れで16bitマシンでもパネルとかは3bit区切りになってたりする
https://www.hpmuseum.net/images/2108A-37.jpg
- 186 :
- ABCDEFを数字として扱うには時代が早すぎたんだよ
- 187 :
- コンピュータの黎明期は、時間や角度の単位のようにいろんな約数がある方が
応用が効くと思われていたらしい。
- 188 :
- にしん御殿を建てた漁師もいた。
- 189 :
- >>181
N進数自体は論理的にはNがどんな正の正数でも可能だけど、C言語的に文法上8進数が記述できるのはUNIX系のファイルシステムのパーミッションとかで使いやすいからとかでないかな。
- 190 :
- C言語の整数リテラル0は8進数
- 191 :
- c言語で9ビットのコンピュータ使ったことあるが、頭が狂いそうになったよ
- 192 :
- これまで常識だと思っていたことをあっさり否定されてしまうから?
- 193 :
- >>191
そういう特殊な環境だとむしろアセンブラを使いたいな。
Cじゃ活用できないアーキテクチャになってそう。
- 194 :
- 組み込みだと4bitマイコンあたりはまだ現役で使われてそうだな
C言語処理系があるかどうかは知らんけど
- 195 :
- ちょっとググったら何か見つかったw
https://www.renesas.com/jp/ja/products/microcontrollers-microprocessors/720.html
- 196 :
- >>194
Cがあったとしても char の最少サイズは 8bit が保証されてるから、Cを使うとかえって面倒そう。
- 197 :
- >>192
0xffが255、0x1ffが-1になる
これだけで充分パニック
- 198 :
- 0377=255、0777=-1 じゃない?
- 199 :
- DEC PDP-7は18bitマシンだったから
- 200 :
- アセンブラで別のCPU勉強し直すと変に前のCPUの知識が足引っ張って戸惑う。
Z80 → x86
セグメント?概念は理解できた。記述方法よくわからん。
repって何?
byte prt ? word ptr? あ、データサイズ指定必要なんだ。
→とあるスパコンCPU
え?オペランド3つ?
あ、0レジスタは聞いたことある。
スタックレジタ無し?汎用レジスタで代用?
- 201 :
- こんなまとめ記事のようなものを発見した。
1バイトが8bitに定まったのは2008年 - Qiita
https://qiita.com/yaju/items/c5da6df2221d5c3611e0
- 202 :
- ソフト的に1バイトは8ビットかも知れないが、回路的には奇数アドレスは存在しないから、1バイトは16ビットなり32ビットで扱われているんだよな
- 203 :
- >>189
ダウト
- 204 :
- >>200
MIPSか?
- 205 :
- > 回路的には奇数アドレスは存在しない
そんなものはマイコンのアドレスバスの接続方法による
小容量の内蔵RAMしか利用できないマイコンだと16bit単位とか効率悪すぎるだろ
- 206 :
- >>205
データバスが16ビットのデバイスはA0が存在しないから、奇数アドレスがないんだよ
ハードウェア的には8ビットは扱えない
上位はコンパイラーが無視してるんだろ
昔の6800系のgccは奇数アドレスが使えなかった
- 207 :
- 8ビットバスとかダイナミックバスサイジングとか無視して何言ってんの。
- 208 :
- 8ビットが扱えるやつのint型もエンディアンがビックかリトルかで、ややこしくなる場合がある
- 209 :
- カメラ屋がどうした
- 210 :
- >>189
> N進数自体は論理的にはNがどんな正の正数でも可能だけど
N = 1 でやってみ
- 211 :
- 10進の1が00になって2が000とかかな。
- 212 :
- ON/OFFはどう区別するんだ?
- 213 :
- インド人もびっくり
- 214 :
- e進数
- 215 :
- 1進法
https://ja.m.wikipedia.org/wiki/%E4%B8%80%E9%80%B2%E6%B3%95
- 216 :
- >>211
1倍すると桁が増えないといけないからいろいろ破綻しそうだな
- 217 :
- 1倍では桁は増えんだろ
2倍で桁数が2倍になる
- 218 :
- 1進数は存在しない
って話だろ
- 219 :
- >>218
>>215
- 220 :
- ハフマン法のパーツ
- 221 :
- >>219
その1進法に対応する2進法はこんな感じ
つまり違うもの
0
1
00
01
10
11
000
001
010
011
100
101
110
111
0000
- 222 :
- https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10103845725
洒落です
- 223 :
- >>221
なるほど
勉強になった
- 224 :
- >>221 上手い書き換えだな。
何やら見覚えのある「位取り」というか「桁上がり」法だと思ったら、
「連番を(数字でなく)英文字を使って表現する」やり方がこれだ。
1番 a
2番 b
...
26番 z
27番 aa (位取り/桁上がりの 0 に相当する記号が存在しないため)
28番 ab
...
『Cの宝箱』(工学社)って本で数値からの変換プログラムを含めて初めて見た。
ANSI以前の古い本だけど、扱ってるネタは今でもなかなか面白い。
- 225 :
- 1進数のかけ算
111 × 11 = 111111
1111 × 11111 = 11111111111111111111
- 226 :
- >>224
excelのカラム名だな
- 227 :
- >>215, >>219
それ桁数でカウントしてるだけでN進数と言うのは無理あるだろ
- 228 :
- 定義上は間違ってない
0の桁上がりが00で次が000なら成立してる
- 229 :
- まあお前の定義ならそうなんだろうな
- 230 :
- >>226 確かに「Excelのカラム」がこれだね。
範囲指定の時にマウスポインタを暴走させるとちょくちょく目にする。
身近な実例なのに思いつかなかった。
それにしてもワッチョイの英数部分(何て呼ぶんだろ?)が FF11 とは。
- 231 :
- #
- 232 :
- 今このスレ見返してたんですが
gcc -W -Wall
って意味あるんですか? -Wallオプションだけと何か違うの?
- 233 :
- >>232
私も gcc/clang でそのオプションを好んでいます、理由はしりません…
- 234 :
- >>232
俺も気になって調べてみたら出てきた
https://at-aka.blogspot.com/2006/11/gcc-wall-w.html
- 235 :
- >>234
なるほど
https://linuxjm.osdn.jp/html/GNU_gcc/man1/gcc.1.html
このページを見た限り-Wは-Wallに含まれてるのかなと解釈してました
どうもです
- 236 :2020/06/11
- man gcc を見ると -Wextra のところに This option used to be called -W.
と出てるね。日本語だと「かつては -W と呼ばれていた」で合ってるだろうか。
-W を指定することと -Wextra を指定することは同じ効果かな。
推薦図書/必読書のためのスレッド 83
【R】configure大嫌い【RMS】
C言語の設計ミスった危険な関数トップ10決めようぜ
monazilla Part 6
推薦図書/必読書のためのスレッド 82
ソースコード ホスティング総合【GitHub,GitLab,Bitbucket等】
Google NaCl プログラミング 2mol
【消しゴム】MONOを使ってみるスレ4【じゃない】
【消しゴム】MONOを使ってみるスレ4【じゃない】
【C++】高速化手法【SSE】2
--------------------
【脊髄損傷】滝川英治さん、あの後どうなった?27
【ギタリスト】男として負けられん 城島茂【25】
【中国メディア】日本人は刺身を食べて「寄生虫が怖くないのか?」★2
【PS4/PS3】ディアブロ3質問スレPart13
苫米地と愉快な仲間達5
**入院中の性欲処理**
【悲報】乃木坂46新曲の初週ダウンロード数、前作から大幅減の大爆死wwwww【坂道最下位】
ANTHEM アンセム限定スレッド★56
【ONEPIXCEL】田辺奈菜美ちゃん本スレPart276【ワンピクセル】
なんで横断歩道で止まらないの? 【歩行者】 89人待ち
「デモンエクスマキナ」をプレイ出来ない評価しないPSユーザーをゲーマーと認めるべき?
ファイアーエムブレム風花雪月 エーデルガルトアンチスレ15
【狼・羊・鳩】モー板自治スレッド【3板共通】18
●福井・石川・富山●駅前&市街地発展度調査334
☆★クーポン交換専用スレPart 71★★
音楽ば〜か その1
【Switch】Splatoon2/スプラトゥーン2 イカ1083杯目
三国志大戦3772合目
【進撃の巨人】エレン・イェーガーと一緒に駆逐するスレ 討伐数35
【きょうだい児】兄弟姉妹が身体・知的障害者 9
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼