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言語なら俺に聞け 144
https://mevius.5ch.net/test/read.cgi/tech/1514025223/
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
C言語なら俺に聞け 145
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 9381-qput)
2018/02/19(月) 22:13:58.98ID:9/te2eSJ02デフォルトの名無しさん (アウアウエー Sadf-kYbg)
2018/02/20(火) 02:33:02.25ID:ji3scNPMa 屑はFPGA用のCの話でもしたかったのかな
3デフォルトの名無しさん (ワッチョイ 5781-qput)
2018/02/20(火) 02:44:25.94ID:m4PE5Z7I0 C言語の話題のみ取り扱います
4デフォルトの名無しさん (スッップ Sdbf-ytZF)
2018/02/20(火) 14:09:01.08ID:/DCDJ0JEd ptintfの%nはハッカー用に用意されているのでしょうか?
5デフォルトの名無しさん (ワッチョイ 9f02-T3WU)
2018/02/20(火) 15:18:27.75ID:hfa6NjO10 違います
デジタル回路の設計用です
デジタル回路の設計用です
6デフォルトの名無しさん (アウアウエー Sadf-kYbg)
2018/02/20(火) 17:08:35.47ID:mAwVhufea 0xがあるのに
0bがないので面倒っちい
0bがないので面倒っちい
7デフォルトの名無しさん (スップ Sd3f-HtAl)
2018/02/20(火) 18:08:25.47ID:cb0RUbY/d visual studioが重いからvisual studio codo使って勉強してますが、これでデバッグできる環境設定がネットのだとよく分からないんですがどうやってやれば出来ます?
8デフォルトの名無しさん (アウアウカー Sa6b-4grm)
2018/02/20(火) 19:11:44.29ID:qvO4qxFaa スレチだがVSが重い環境ってのが気になる
9デフォルトの名無しさん (ブーイモ MMbf-goL+)
2018/02/20(火) 21:29:40.57ID:TNHwfC6jM オトコは黙ってG・D・B
>>9
gdb からは逃げ回っています、可能な限り printf() デバッグの方を選択します
gdb からは逃げ回っています、可能な限り printf() デバッグの方を選択します
11デフォルトの名無しさん (ワッチョイ 579f-+35F)
2018/02/21(水) 00:51:16.84ID:srFoMZ/m0 そしてバッファリングされてしまうと
>>11
fflush() は必ずペアで使いますよ、まあそれでも iostream<<と混在させるとぐちゃぐちゃになりますね
fflush() は必ずペアで使いますよ、まあそれでも iostream<<と混在させるとぐちゃぐちゃになりますね
13デフォルトの名無しさん (ワッチョイ 579f-T3WU)
2018/02/21(水) 03:09:16.23ID:srFoMZ/m0 ここはC言語のスレなので iostream の事は忘れてくれ。
14デフォルトの名無しさん
2018/02/21(水) 07:13:52.97 setbuf(stdout, null);
setbuf(stderr, null);
しとけばいいじゃん
setbuf(stderr, null);
しとけばいいじゃん
15デフォルトの名無しさん (アウウィフ FF9b-kYbg)
2018/02/21(水) 10:46:31.37ID:zwuXHePGF おそくなる
16デフォルトの名無しさん (スップ Sdbf-HtAl)
2018/02/21(水) 10:56:41.04ID:t+c4IaP2d 変数宣言後に値を代入する前にprintfで表示させると数値がでてきますがこれは何の数値ですか?
17デフォルトの名無しさん (アウウィフ FF9b-kYbg)
2018/02/21(水) 11:05:20.20ID:zwuXHePGF メモリのなかみをprintfの書式で解釈したもの
18デフォルトの名無しさん (アウアウカー Sa6b-10N7)
2018/02/21(水) 11:22:42.78ID:1i/dh69la19デフォルトの名無しさん (ワッチョイ d7b3-2H2M)
2018/02/21(水) 16:26:52.49ID:aBAsvFL30 前に使ったデータの切れはし
20デフォルトの名無しさん (ワッチョイ ffea-eniV)
2018/02/21(水) 16:52:48.64ID:JslMlxHn0 意味のある値を期待してはいけない謎の値
固定値か実行毎に変わるかも謎
固定値か実行毎に変わるかも謎
21デフォルトの名無しさん (ワッチョイ 5781-qput)
2018/02/21(水) 17:12:09.16ID:hxHF5FEW0 スカートめくりしてはいけないのと同じ、見てはいけない場所
22デフォルトの名無しさん (ワッチョイ 178a-h07R)
2018/02/21(水) 20:06:03.04ID:N7GlfDUh0 グローバル変数とstaticなローカル変数はその変数の型によって決められている値(0や0Lや0.0など)で初期化される
staticでないローカル変数(殆どはこれ)の値は不定
staticでないローカル変数(殆どはこれ)の値は不定
23デフォルトの名無しさん (ブーイモ MM1b-goL+)
2018/02/21(水) 21:09:11.08ID:enETD2EIM なんで不定なの?
24デフォルトの名無しさん (ワッチョイ d7b3-eniV)
2018/02/21(水) 21:11:25.31ID:eHdxbQfi0 定まった値を入れる手間すら惜しんでもいいようにしてるから
25デフォルトの名無しさん (ワッチョイ 1f9e-RFe/)
2018/02/21(水) 21:53:04.93ID:XwEf5GYC0 Cで引数リスト部分が空の関数ポインタと構造体値渡しを↓のように組み合わせて使うのはNGですか?
#include <stdio.h>
long func(long a, char b, short c) {
return a+b+c;
}
int main(int argc, char *argv[]) {
long(*pfunc)() = func;
struct {
union {
char a;
short b;
long c;
} u[3];
} param;
param.u[0].a = 1;
param.u[1].b = 2;
param.u[2].c = 3;
printf("%d\n", pfunc(param));
return 0;
}
#include <stdio.h>
long func(long a, char b, short c) {
return a+b+c;
}
int main(int argc, char *argv[]) {
long(*pfunc)() = func;
struct {
union {
char a;
short b;
long c;
} u[3];
} param;
param.u[0].a = 1;
param.u[1].b = 2;
param.u[2].c = 3;
printf("%d\n", pfunc(param));
return 0;
}
27デフォルトの名無しさん (アークセー Sx0b-HN+l)
2018/02/21(水) 22:55:45.50ID:04BHZTp/x 全くの初心者だがプログラム手に入れて動かしている。
最近はテトリスを動かした。C言語は学生の時に
挫折しているので高望はしていないが俺の時代よりも
学習環境も随分と楽になったもんだ。
最近はテトリスを動かした。C言語は学生の時に
挫折しているので高望はしていないが俺の時代よりも
学習環境も随分と楽になったもんだ。
28デフォルトの名無しさん (ワッチョイ 9f65-xWAm)
2018/02/21(水) 22:56:32.48ID:9Zl2Px8M0 昔はLSI-Cくらいしか無かったからな
29デフォルトの名無しさん (ワッチョイ 97b3-T3WU)
2018/02/21(水) 23:28:19.69ID:J5LO2Gvl0 [] [[[ [[ [] ][ [] [ ] [] ][]] [[[ [] }
30デフォルトの名無しさん (ワッチョイ df9f-x4Or)
2018/02/22(木) 00:28:06.89ID:rOhp+nuf0 >>25
NGっていうか、それ普通にダメだよね。型が一致しないし。
まあ、Cコンパイラの実装によってはうまいことスタックに積まれて a, b, c が意図した通りに伝わるのかも知れないが、
しかしそれは実装依存だ。同じコンパイラ使っても最適化したら違う結果になるんじゃないだろうか。
NGっていうか、それ普通にダメだよね。型が一致しないし。
まあ、Cコンパイラの実装によってはうまいことスタックに積まれて a, b, c が意図した通りに伝わるのかも知れないが、
しかしそれは実装依存だ。同じコンパイラ使っても最適化したら違う結果になるんじゃないだろうか。
31デフォルトの名無しさん (ブーイモ MMed-g8a7)
2018/02/22(木) 00:37:40.47ID:Tb8t5xzSM >>27
ロードランナー本を手に入れるんだ
ロードランナー本を手に入れるんだ
32デフォルトの名無しさん (アウアウカー Sa18-7gJ+)
2018/02/22(木) 01:29:12.41ID:G3RQleyza 不定でバグ起きるコード書くなんてふてぇ野郎だ
33デフォルトの名無しさん (ワッチョイ 2f93-IXLF)
2018/02/22(木) 06:13:33.98ID:WzMowRZZ03433 (ワッチョイ 2f93-IXLF)
2018/02/22(木) 06:16:17.25ID:WzMowRZZ03533 (ワッチョイ 2f93-IXLF)
2018/02/22(木) 06:49:26.50ID:WzMowRZZ0 たびたび申し訳ない。
引数リストを書かない関数定義/宣言 func() は
どのCでも func(void) とは解釈されないんだっけ?
C99で将来廃止予定という情報は見つかったけど、まだ廃止されてないか。
引数リストを書かない関数定義/宣言 func() は
どのCでも func(void) とは解釈されないんだっけ?
C99で将来廃止予定という情報は見つかったけど、まだ廃止されてないか。
36デフォルトの名無しさん (ワッチョイ d061-POFq)
2018/02/22(木) 11:30:56.06ID:bU9JilnM0 ウインドーズのコマンドラインオプションで記号が{があると
ダブルクオートで囲んでもこの記号の前で引数がおわってしまうんですけどなぜでしょうか?
リナックスではそうはなりませんでした、{の前にエスケープ文字\を置くとうまくいきました。
なぜこうなるのか教えてください。調べてもわかりませんでした。
ダブルクオートで囲んでもこの記号の前で引数がおわってしまうんですけどなぜでしょうか?
リナックスではそうはなりませんでした、{の前にエスケープ文字\を置くとうまくいきました。
なぜこうなるのか教えてください。調べてもわかりませんでした。
37デフォルトの名無しさん (ワッチョイ c2f9-2orQ)
2018/02/22(木) 11:45:12.93ID:mvuupCVs038デフォルトの名無しさん (ワッチョイ 0e81-snzV)
2018/02/22(木) 12:10:34.27ID:rGSqnyaQ039デフォルトの名無しさん (ワッチョイ d061-POFq)
2018/02/22(木) 12:18:26.14ID:bU9JilnM0 自作のプログラムでやりました。
具体的に書くとa "abcd{efghijk"みたいにコマンドをじっこうすると
メイン関数のおぷしょんをしらべるとabcdしか入っていませんでした。
具体的に書くとa "abcd{efghijk"みたいにコマンドをじっこうすると
メイン関数のおぷしょんをしらべるとabcdしか入っていませんでした。
40デフォルトの名無しさん (ワッチョイ 2f93-IXLF)
2018/02/22(木) 13:37:57.37ID:WzMowRZZ042デフォルトの名無しさん (ワッチョイ c667-x4Or)
2018/02/22(木) 14:16:59.02ID:qwLRFwLN0 >>39
gcc (i686-posix-dwarf-rev1, Built by MinGW-W64 project) 7.2.0
Microsoft Windows 10 Pro 10.0.16299 N/A ビルド 16299
→ 再現せず
gcc (i686-posix-dwarf-rev1, Built by MinGW-W64 project) 7.2.0
Microsoft Windows 10 Pro 10.0.16299 N/A ビルド 16299
→ 再現せず
43デフォルトの名無しさん (ワッチョイ 969f-hFc/)
2018/02/22(木) 15:22:35.73ID:Fv+tpfSs0 関数の宣言とプロトタイプは別物
44デフォルトの名無しさん (ワッチョイ 3fb3-a3bs)
2018/02/22(木) 15:51:29.29ID:ejK712YH045デフォルトの名無しさん (ワッチョイ d061-POFq)
2018/02/22(木) 15:56:19.77ID:bU9JilnM0 ありがとうございます。
シェルを変えたらできました。
シェルを変えたらできました。
46デフォルトの名無しさん (アウアウカー Sa0a-V6cO)
2018/02/22(木) 16:30:38.85ID:GyUXMKgfa >>45
シェルって?何から何に変えたの?
シェルって?何から何に変えたの?
47デフォルトの名無しさん (ワッチョイ d061-POFq)
2018/02/22(木) 16:57:56.68ID:bU9JilnM0 eshellからmsys2に付属のやつに替えますた
48デフォルトの名無しさん (ワッチョイ 0e81-snzV)
2018/02/22(木) 17:29:33.80ID:rGSqnyaQ049デフォルトの名無しさん (アウアウカー Sa0a-V6cO)
2018/02/22(木) 17:31:08.76ID:4gldXmu7a50デフォルトの名無しさん (ワッチョイ fc9b-x0lN)
2018/02/22(木) 21:33:01.57ID:7WUP8gc30 スロットゲームを作成しようと思っていろいろサイト見てるんですけど、数字の1〜9を順番にループ表示ってどうやるんですか?
51片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-tk4l)
2018/02/22(木) 21:36:38.38ID:bw7NPixRd >>50
0〜9、そして0が描かれた画像を表示部分だけをクリッピング(切り抜き)して、回転させてアニメーションする。
0〜9、そして0が描かれた画像を表示部分だけをクリッピング(切り抜き)して、回転させてアニメーションする。
5225 (ワッチョイ 749e-2pQG)
2018/02/22(木) 22:38:43.81ID:tV4J1Ww8053デフォルトの名無しさん (ワッチョイ 969f-7+Pf)
2018/02/23(金) 01:55:49.74ID:UgOkn/Bq0 int main(void), int main(int, char**) どちらも ok なのだか
int (*pfunc)()のような書き方はなくならないと思う
int (*pfunc)()のような書き方はなくならないと思う
54デフォルトの名無しさん (ワッチョイ 1549-x4Or)
2018/02/23(金) 06:00:42.07ID:lIelkvwO0 関数ポインタにvoid*的な総称ポインタはねえぜ
55デフォルトの名無しさん (ワッチョイ 2f93-IXLF)
2018/02/23(金) 07:59:19.70ID:Ska5zxPe0 long(*pfunc)() = func; の行がエラーになるのか。
long(*pfunc)(long, char, short) = func; なら通る。
「longを返す関数なら何でも入れられる関数ポインタの変数」てのが
認められないのね。
long(*pfunc)(long, char, short) = func; なら通る。
「longを返す関数なら何でも入れられる関数ポインタの変数」てのが
認められないのね。
56デフォルトの名無しさん (ワッチョイ ba12-SJjx)
2018/02/23(金) 08:06:24.83ID:c0IwYAH60 良く考えると関数用の汎用ポインタが無いのはおかしい
57デフォルトの名無しさん (ワッチョイ 1549-x4Or)
2018/02/23(金) 10:50:05.99ID:lIelkvwO0 無理だよ
仮引数の違い=スタック構造の違いなんだから
仮引数の違い=スタック構造の違いなんだから
58デフォルトの名無しさん (スップ Sdc4-7IFu)
2018/02/23(金) 12:07:23.73ID:fgXllc68d gcol(rcol & 0xFF , & gcol & 0xFF ,
bcol & 0xFF)
これの意味を教えてください。
bcol & 0xFF)
これの意味を教えてください。
59デフォルトの名無しさん (スップ Sdc4-7IFu)
2018/02/23(金) 12:08:21.32ID:fgXllc68d60デフォルトの名無しさん (ブーイモ MM5a-g8a7)
2018/02/23(金) 12:15:11.26ID:uhME+YqbM61デフォルトの名無しさん (ワッチョイ c361-MTlB)
2018/02/23(金) 12:18:14.88ID:0SE2Ag1M0 >, & gcol & 0xFF ,
間違ってるような気がするけどな。
変数/関数名からRGB値取ってるだけに思えるし。
間違ってるような気がするけどな。
変数/関数名からRGB値取ってるだけに思えるし。
62デフォルトの名無しさん (ワッチョイ 5e8a-1Hnx)
2018/02/23(金) 12:27:00.80ID:yhtAX1ye0 呼出し側の引数や戻り値の扱いを規定するのは呼出規約
x86/x64上のC言語ではcdeclが一般的だけど組み込み系の処理系の一部には独自実装のものもある
https://ja.wikipedia.org/wiki/%E5%91%BC%E5%87%BA%E8%A6%8F%E7%B4%84
x86/x64上のC言語ではcdeclが一般的だけど組み込み系の処理系の一部には独自実装のものもある
https://ja.wikipedia.org/wiki/%E5%91%BC%E5%87%BA%E8%A6%8F%E7%B4%84
63デフォルトの名無しさん (スップ Sdc4-7IFu)
2018/02/23(金) 12:36:44.19ID:fgXllc68d64デフォルトの名無しさん (ワッチョイ 1549-x4Or)
2018/02/23(金) 13:51:39.54ID:lIelkvwO0 >>60
可変引数?
void func(double);
void (*ptr)() = func;
ptr(1); //1.0で渡すべきところ1が渡される
void func(double arg) //スタック構造の不一致が起きる
{
//全然関係ねえだろ
}
可変引数?
void func(double);
void (*ptr)() = func;
ptr(1); //1.0で渡すべきところ1が渡される
void func(double arg) //スタック構造の不一致が起きる
{
//全然関係ねえだろ
}
>>63
8 bit 幅分だけ &(and) 演算子で切り取っているのではないですか?
8 bit 幅分だけ &(and) 演算子で切り取っているのではないですか?
66デフォルトの名無しさん (ワッチョイ 2a23-x4Or)
2018/02/23(金) 14:21:37.49ID:vnQpXFI50 >>60
可変引数なら可変引数として書かないとだめでしょ
可変引数なら可変引数として書かないとだめでしょ
68デフォルトの名無しさん (ブーイモ MM5a-g8a7)
2018/02/23(金) 14:35:58.87ID:uhME+YqbM69デフォルトの名無しさん (アウアウカー Sa0a-sySv)
2018/02/23(金) 14:59:14.82ID:0k9d4/ABa >>63
君が何を言っているのかよくわからない。
君が何を言っているのかよくわからない。
70デフォルトの名無しさん (ワッチョイ 1549-x4Or)
2018/02/23(金) 15:09:04.10ID:lIelkvwO071デフォルトの名無しさん (ワッチョイ c361-MTlB)
2018/02/23(金) 15:44:15.83ID:0SE2Ag1M0 ID:fgXllc68d は必要な情報書かな過ぎ。
72デフォルトの名無しさん (ワッチョイ d0ea-a3bs)
2018/02/23(金) 15:47:17.83ID:V7qyvSbE0 可変個引数は va_start() するときに番兵となる引数が必要なので
最低でも1個は固定の引数が欲しいんだよね
func(int , ...) とかになる
最低でも1個は固定の引数が欲しいんだよね
func(int , ...) とかになる
73デフォルトの名無しさん (アウアウカー Sa0a-sySv)
2018/02/23(金) 16:06:00.23ID:0k9d4/ABa 可変長引数なんて認めなければよかったのにな。
またはJavaみたいにシンタックスシュガーにしておいて実は配列に変換して要素数と共に渡すみたいにしておけばもっとましな感じになったのに。
またはJavaみたいにシンタックスシュガーにしておいて実は配列に変換して要素数と共に渡すみたいにしておけばもっとましな感じになったのに。
74デフォルトの名無しさん (ワッチョイ 1549-x4Or)
2018/02/23(金) 16:43:48.45ID:lIelkvwO0 Bの頃からあったprintfの実装テクニックだし
だいいちCは簡潔さを売りにしてたんで
理想論に走って複雑さを増すようなことを嫌ったんだよ
だいいちCは簡潔さを売りにしてたんで
理想論に走って複雑さを増すようなことを嫌ったんだよ
75デフォルトの名無しさん (ブーイモ MMfd-g8a7)
2018/02/23(金) 16:48:19.38ID:yeKpu5OYM76デフォルトの名無しさん (ワッチョイ 1549-x4Or)
2018/02/23(金) 17:03:04.90ID:lIelkvwO0 void func(int, double);
void (*ptr)() = func;
ptr(1, 1); //1.0で渡すべきところ1が渡される
void func(int top, double arg) //スタック構造の不一致が起きる
{
va_list ap;
va_start(ap, top);
assert(va_arg(ap, double) == arg); //通るわけねえだろ
va_end(ap);
}
void (*ptr)() = func;
ptr(1, 1); //1.0で渡すべきところ1が渡される
void func(int top, double arg) //スタック構造の不一致が起きる
{
va_list ap;
va_start(ap, top);
assert(va_arg(ap, double) == arg); //通るわけねえだろ
va_end(ap);
}
77デフォルトの名無しさん (ワッチョイ d0ea-a3bs)
2018/02/23(金) 17:11:03.17ID:V7qyvSbE0 >>75 いいや ポインタだけじゃ片手落ち
(キャストじゃだめで)関数の実体側の引数も同じ引数で実装しなければならない
(キャストじゃだめで)関数の実体側の引数も同じ引数で実装しなければならない
78デフォルトの名無しさん (ワッチョイ 969f-hFc/)
2018/02/23(金) 17:26:46.79ID:UgOkn/Bq0 スタートアップは argc,argvをスタックに積んで _mainを呼ぶ
_mainが int main(void)だとしても問題ない
_mainが int main(void)だとしても問題ない
7955 (ワッチョイ 2f93-IXLF)
2018/02/23(金) 17:49:49.55ID:Ska5zxPe0 >>67 はエラーなくコンパイル・実行できてるようだから、もう少し検証。
ideone.com でなくローカルのgccで実験。
どうやら func() 定義の引数リストに制限があるみたい。
void f(double x) ... エラーなし ( >>67 の例と同じ)
void f(int x) ... エラーなし
void f(void* x) ... エラーなし
void f(char x) ... 警告:「互換性のないポインタ型」
void f(short x) ... 警告:「互換性のないポインタ型」
void f(float x) ... 警告:「互換性のないポインタ型」
警告は void (*pfunc)() = f; の行で発生。
実引数の自動拡張よりも狭い幅の仮引数の型を使おうとすると警告かな?
コンパイラによって動作が異なる部分で、深追いする価値は無いのかも。
ideone.com でなくローカルのgccで実験。
どうやら func() 定義の引数リストに制限があるみたい。
void f(double x) ... エラーなし ( >>67 の例と同じ)
void f(int x) ... エラーなし
void f(void* x) ... エラーなし
void f(char x) ... 警告:「互換性のないポインタ型」
void f(short x) ... 警告:「互換性のないポインタ型」
void f(float x) ... 警告:「互換性のないポインタ型」
警告は void (*pfunc)() = f; の行で発生。
実引数の自動拡張よりも狭い幅の仮引数の型を使おうとすると警告かな?
コンパイラによって動作が異なる部分で、深追いする価値は無いのかも。
80デフォルトの名無しさん (ブーイモ MMfd-g8a7)
2018/02/23(金) 18:00:16.52ID:yeKpu5OYM >>77
78が正解。更に言えばmainの引数には envp もある
78が正解。更に言えばmainの引数には envp もある
81デフォルトの名無しさん (ワッチョイ 969f-hFc/)
2018/02/23(金) 18:25:51.38ID:UgOkn/Bq0 envpはANSI C 標準に対する Microsoft の拡張機能
https://msdn.microsoft.com/ja-jp/library/k104fy6h.aspx
https://msdn.microsoft.com/ja-jp/library/k104fy6h.aspx
>>81
posix にもある、推奨されているわけではないが
posix にもある、推奨されているわけではないが
8355 (ワッチョイ 2f93-IXLF)
2018/02/23(金) 19:10:50.73ID:Ska5zxPe084デフォルトの名無しさん (ブーイモ MM5e-1x+Q)
2018/02/23(金) 20:24:30.86ID:mFkXyQ34M void*でええやん
85デフォルトの名無しさん (アウアウウー Sa83-x4Or)
2018/02/23(金) 21:15:05.64ID:JKrDz8Gza ヘ_ヘ
ミ・・ ミ
( )〜
ミ・・ ミ
( )〜
86デフォルトの名無しさん (ワッチョイ 3fb3-a3bs)
2018/02/23(金) 21:32:39.13ID:my0767Fs0 void から ヘミ猫 て fj かよ
87デフォルトの名無しさん (アウアウウー Sab5-Oo+E)
2018/02/24(土) 00:57:58.46ID:ar5NnKGja88デフォルトの名無しさん (ワッチョイ 2f93-IXLF)
2018/02/24(土) 06:40:32.39ID:agv5rOmv0 >>87
param には「long幅の共用体3要素の配列」が含まれるから、
値渡しすればスタックに (sizeof(long) * 3) byteのデータが積まれるはず。
というか、main()でparamの各要素をlong解釈で表示させたら
見事にaやbの上位ビットにゴミが入っていた。
param には「long幅の共用体3要素の配列」が含まれるから、
値渡しすればスタックに (sizeof(long) * 3) byteのデータが積まれるはず。
というか、main()でparamの各要素をlong解釈で表示させたら
見事にaやbの上位ビットにゴミが入っていた。
89デフォルトの名無しさん (ワッチョイ 749e-2pQG)
2018/02/24(土) 09:43:12.88ID:uX3sJRXI0 structにstaticつけ忘れてましたとか
90デフォルトの名無しさん (アウアウウー Sab5-Oo+E)
2018/02/24(土) 15:58:01.09ID:dhHE2VyNa9188 (ワッチョイ 2f93-IXLF)
2018/02/24(土) 16:57:25.47ID:agv5rOmv0 >>88 に「期待の6」と書いたせいで誤解させてしまった。
もちろん実際の動作で6が表示されると思っていたわけじゃないのだ。
この流れの発端の質問 >>25 と、それに追加された >>52 の、
「実行結果も期待通りだった」て記述を受けての「期待の6」でね。
むしろ共用体への代入で、
param.u[0].a = 1; // charの代入 byte転送命令
param.u[1].b = 2; // shortの代入 word転送命令
param.u[2].c = 3; // longの代入 dword転送命令
てな具合にアセンブルされ a, b の上位ビットに未初期化のゴミが残り、
関数に実引数の値として渡されるときもゴミごとコピーされるのは当然。
>>52 で期待通りに動いたのは、paramの未初期化での状態が
たまたま全部ビットで0だったんだなぁ、というお話。
>>25 のリストで、関数 func() の仮引数 a, b, c の型と、
共用体の要素 a, b, c の型が食い違ってる点にも注目して頂きたい。
…長々と失礼。誤解の余地なく説明しようとするとクドくなってしまう。
もちろん実際の動作で6が表示されると思っていたわけじゃないのだ。
この流れの発端の質問 >>25 と、それに追加された >>52 の、
「実行結果も期待通りだった」て記述を受けての「期待の6」でね。
むしろ共用体への代入で、
param.u[0].a = 1; // charの代入 byte転送命令
param.u[1].b = 2; // shortの代入 word転送命令
param.u[2].c = 3; // longの代入 dword転送命令
てな具合にアセンブルされ a, b の上位ビットに未初期化のゴミが残り、
関数に実引数の値として渡されるときもゴミごとコピーされるのは当然。
>>52 で期待通りに動いたのは、paramの未初期化での状態が
たまたま全部ビットで0だったんだなぁ、というお話。
>>25 のリストで、関数 func() の仮引数 a, b, c の型と、
共用体の要素 a, b, c の型が食い違ってる点にも注目して頂きたい。
…長々と失礼。誤解の余地なく説明しようとするとクドくなってしまう。
92デフォルトの名無しさん (スップ Sdc4-7IFu)
2018/02/24(土) 18:41:41.80ID:7mL/bBDwd #include <stdio.h>
#include <string.h>
#define BUF_SIZE 80
void* my_realloc( void* p, size_t bytes, int line ) {
if( (p = realloc(p, bytes)) == NULL ) {
fprintf(stderr, "realloc failure called at line %d\n", line);
exit(EXIT_FAILURE);
}
return p;
}
int main () {
FILE *fp;
char *file = "data.csv";
char buf[BUF_SIZE], input[BUF_SIZE], format[20];
char **result, *s;
int i, size = 50, count = 0;
if( (fp = fopen(file, "r")) == NULL ) {
perror(file);
exit(EXIT_FAILURE);
}
sprintf(format, "%%%ds%%*[^\n]%%*c", sizeof(input) - 1);
scanf(format, input);
result = my_realloc(NULL, sizeof(*result) * size, __LINE__);
while( (fgets(buf, sizeof buf, fp)) != NULL) {
if( strstr(buf, input) == NULL ) continue;
#include <string.h>
#define BUF_SIZE 80
void* my_realloc( void* p, size_t bytes, int line ) {
if( (p = realloc(p, bytes)) == NULL ) {
fprintf(stderr, "realloc failure called at line %d\n", line);
exit(EXIT_FAILURE);
}
return p;
}
int main () {
FILE *fp;
char *file = "data.csv";
char buf[BUF_SIZE], input[BUF_SIZE], format[20];
char **result, *s;
int i, size = 50, count = 0;
if( (fp = fopen(file, "r")) == NULL ) {
perror(file);
exit(EXIT_FAILURE);
}
sprintf(format, "%%%ds%%*[^\n]%%*c", sizeof(input) - 1);
scanf(format, input);
result = my_realloc(NULL, sizeof(*result) * size, __LINE__);
while( (fgets(buf, sizeof buf, fp)) != NULL) {
if( strstr(buf, input) == NULL ) continue;
93デフォルトの名無しさん (スップ Sdc4-7IFu)
2018/02/24(土) 18:42:06.22ID:7mL/bBDwd s = my_realloc(NULL, strlen(buf) + 1, __LINE__);
strcpy(s, buf);
result[count++] = s;
if( count >= size ) result =my_realloc(result, sizeof(*result) * (size += 20), __LINE__);
}
for( i = 0; i < count; i++ ) {
printf(result[i]);
free(result[i]);
}
free(result);
return 0;
}
strcpy(s, buf);
result[count++] = s;
if( count >= size ) result =my_realloc(result, sizeof(*result) * (size += 20), __LINE__);
}
for( i = 0; i < count; i++ ) {
printf(result[i]);
free(result[i]);
}
free(result);
return 0;
}
94デフォルトの名無しさん (スップ Sdc4-7IFu)
2018/02/24(土) 18:45:40.89ID:7mL/bBDwd 上記のコードから追加でしたいことが2つあります。
@検索単語を2つにしたい。
Aフォルダないの全ての.csvファイルを検索かけたい。
sprintf(format, "%%%ds%%*[^\n]%%*c", sizeof(input) - 1);
scanf(format, input);
result = my_realloc(NULL, sizeof(*result) * size, __LINE__);
ここの文の意味が分かりません。
@検索単語を2つにしたい。
Aフォルダないの全ての.csvファイルを検索かけたい。
sprintf(format, "%%%ds%%*[^\n]%%*c", sizeof(input) - 1);
scanf(format, input);
result = my_realloc(NULL, sizeof(*result) * size, __LINE__);
ここの文の意味が分かりません。
95片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-uTGm)
2018/02/24(土) 21:35:03.63ID:h1W1dcA8d >>94
クソコードだ。あまり参考にせず、自分で考えた方がいい。
my_reallocはreallocをラップした関数形式マクロのようだ。リファレンスのreallocを参照。
__LINE__は現在の行番号を表し、デバッグなどに使う。
sprintfはprintfを文字列出力にしたものだ。%%は%になって出力される。
クソコードだ。あまり参考にせず、自分で考えた方がいい。
my_reallocはreallocをラップした関数形式マクロのようだ。リファレンスのreallocを参照。
__LINE__は現在の行番号を表し、デバッグなどに使う。
sprintfはprintfを文字列出力にしたものだ。%%は%になって出力される。
96片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-uTGm)
2018/02/24(土) 21:47:22.04ID:h1W1dcA8d sprintfで出力した文字列をscanfに書式として渡している。でもこのようなscanfの使い方はオススメできない。
97片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-uTGm)
2018/02/24(土) 21:56:26.92ID:h1W1dcA8d %dは整数を表す文字列になるので、%%%dsは%(何らかの整数)sになる。これは文字列出力の幅指定だ。
幅指定には、別の直接的な方法があるので、こんなことしなくてもいい。
scanfの使い方は引数の個数がちょっと間違っているように見える。
幅指定には、別の直接的な方法があるので、こんなことしなくてもいい。
scanfの使い方は引数の個数がちょっと間違っているように見える。
98片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-uTGm)
2018/02/24(土) 21:59:21.39ID:h1W1dcA8d バグや不具合の元になるscanfなんて使うな。fgetsとsscanf使えば充分で分かりやすくて確実だ。
99デフォルトの名無しさん (ブーイモ MM5e-1x+Q)
2018/02/24(土) 22:25:03.02ID:tEhbLaK5M100デフォルトの名無しさん (ワッチョイ 0e81-snzV)
2018/02/24(土) 22:45:22.29ID:PDjCLuF50 特定のフォルダ(dir)内のファイルを順次処理したいときは
Unix系ならばopendir()、readdir()、closedir()を使う。
VCならばFindFirstFile()、 FindNextFile()、FindClose()を使う。
Unix系ならばopendir()、readdir()、closedir()を使う。
VCならばFindFirstFile()、 FindNextFile()、FindClose()を使う。
たしかに realloc() はいろいろまずいところがあって、
一番悪いのは、やり直しができない、ということ
一番悪いのは、やり直しができない、ということ
102デフォルトの名無しさん (ワッチョイ 0e81-snzV)
2018/02/24(土) 23:34:03.13ID:PDjCLuF50 一致した行をそのままファイルに書き出す方が簡単な気がする
103デフォルトの名無しさん (ワッチョイ df9f-x4Or)
2018/02/25(日) 01:42:29.02ID:XjF3qDop0104デフォルトの名無しさん (ワッチョイ df9f-x4Or)
2018/02/25(日) 01:43:39.45ID:XjF3qDop0 >>101
てか、やり直しができないってどういう意味?幾らでもできると思うが。
てか、やり直しができないってどういう意味?幾らでもできると思うが。
105デフォルトの名無しさん (ワッチョイ 0e81-snzV)
2018/02/25(日) 01:50:49.81ID:I4H7O+d10 1バイトでもメモリ消費量を節約する事が求められた世代と
湯水の如く無尽蔵にメモリが使える世代のバトルが始まる?
湯水の如く無尽蔵にメモリが使える世代のバトルが始まる?
106デフォルトの名無しさん (ワッチョイ df9f-IDeO)
2018/02/25(日) 03:25:39.33ID:XjF3qDop0 >>105
そういうことなの?w
そういうことなの?w
107デフォルトの名無しさん (ワッチョイ 2f93-IXLF)
2018/02/25(日) 06:04:48.57ID:Jqo0wCIZ0 >>92 >>94
sprintf(format, "%%%ds%%*[^\n]%%*c", sizeof(input) - 1);
の行では input[BUF_SIZE] で BUF_SIZE が80であることから
format[] に "%79s%*[^\n]%*c" (\nは改行コード) が格納される。
よって scanf(format, input); は scanf("%79s%*[^\n]%*c", input); の動作。
変換指定の "%79s%*[^\n]%*c" の意味や妥当性は別のお話。
>>96
scanf() の変換指定文字列を sprintf() で生成するやり方は
『プログラミング作法』(カーニハン&パイク)に載ってる。
BUF_SIZE の定義を変えたときにscanf()の変換指定の文字数指定部分も
自動的に追随させる便法(片方だけ修正忘れの防止)として、悪くないかと。
バッファサイズは固定なのに変換指定を動的に作るのは非効率だ、
という気持ちも分かるけどね。
sprintf(format, "%%%ds%%*[^\n]%%*c", sizeof(input) - 1);
の行では input[BUF_SIZE] で BUF_SIZE が80であることから
format[] に "%79s%*[^\n]%*c" (\nは改行コード) が格納される。
よって scanf(format, input); は scanf("%79s%*[^\n]%*c", input); の動作。
変換指定の "%79s%*[^\n]%*c" の意味や妥当性は別のお話。
>>96
scanf() の変換指定文字列を sprintf() で生成するやり方は
『プログラミング作法』(カーニハン&パイク)に載ってる。
BUF_SIZE の定義を変えたときにscanf()の変換指定の文字数指定部分も
自動的に追随させる便法(片方だけ修正忘れの防止)として、悪くないかと。
バッファサイズは固定なのに変換指定を動的に作るのは非効率だ、
という気持ちも分かるけどね。
108デフォルトの名無しさん (ワッチョイ 8a15-x4Or)
2018/02/25(日) 07:37:51.66ID:HIxgC6KA0 片山氏はscanfがまともに使えず
自分のミスを道具のせいにする手合いか
自分のミスを道具のせいにする手合いか
109デフォルトの名無しさん (ブーイモ MM5e-1x+Q)
2018/02/25(日) 08:49:08.43ID:vTPpNH4CM110デフォルトの名無しさん (ワッチョイ 2f93-IXLF)
2018/02/25(日) 09:18:29.86ID:Jqo0wCIZ0 >>109 「冪等性がない」の意味を補足してくれまいか。
realloc()に冪等性がない、結果整合性はある、という意味が分からないのだ。
realloc()に冪等性がない、結果整合性はある、という意味が分からないのだ。
111デフォルトの名無しさん (ワッチョイ 3fb3-a3bs)
2018/02/25(日) 09:35:20.85ID:miEl51/Z0 失敗したとき NULL を返しつつ 「引数で渡したポインタは開放されない」
あたりに引っかかりを感じてるんでない?
NULL 返すなら 引数で渡したポインタを開放しろと?
※ 使いにくいかもなぁ…
あたりに引っかかりを感じてるんでない?
NULL 返すなら 引数で渡したポインタを開放しろと?
※ 使いにくいかもなぁ…
112デフォルトの名無しさん (ワッチョイ df9f-x4Or)
2018/02/25(日) 11:58:37.90ID:XjF3qDop0 俺も意味がわからん。
113デフォルトの名無しさん (ワッチョイ df9f-x4Or)
2018/02/25(日) 12:17:48.32ID:XjF3qDop0 >>111
それはメモリ確保に失敗してるんだから解放したらダメだよね。
自分で malloc() 使って新規にメモリ確保しようとした場合でも NULL 返されたら元の方は free() しないだろう。
それはメモリ確保に失敗してるんだから解放したらダメだよね。
自分で malloc() 使って新規にメモリ確保しようとした場合でも NULL 返されたら元の方は free() しないだろう。
114デフォルトの名無しさん (ブーイモ MM5e-1x+Q)
2018/02/25(日) 12:28:06.03ID:vTPpNH4CM115デフォルトの名無しさん (ワッチョイ df9f-x4Or)
2018/02/25(日) 12:33:20.87ID:XjF3qDop0 あ、もしや >>109 の言ってる冪等性がないって引数で渡したポインタとは違うポインタを返してくることがあるって意味?
あまりにも当たり前すぎて思いつかなかったが。
しかし malloc() の実装にもよるだろうがこれを許さないと効率は悪くなるのではないか?
あまりにも当たり前すぎて思いつかなかったが。
しかし malloc() の実装にもよるだろうがこれを許さないと効率は悪くなるのではないか?
116デフォルトの名無しさん (ブーイモ MM5e-1x+Q)
2018/02/25(日) 13:13:10.59ID:vTPpNH4CM >>115
そう
違うアドレスを返して初めて発現するバグをボケナスビがやらかしてから俺は戒律で禁じた
他にも初期化やアライメントの点もある
メモリ効率を重視するなら自分で管理構造作るべきだと思ってる
冪等性を最重視する俺はこのスレじゃ少数派みたいだからあまり気にせんでくれ
そう
違うアドレスを返して初めて発現するバグをボケナスビがやらかしてから俺は戒律で禁じた
他にも初期化やアライメントの点もある
メモリ効率を重視するなら自分で管理構造作るべきだと思ってる
冪等性を最重視する俺はこのスレじゃ少数派みたいだからあまり気にせんでくれ
117デフォルトの名無しさん (ワッチョイ 019f-SJjx)
2018/02/25(日) 13:20:16.07ID:L5EpKLxx0118デフォルトの名無しさん (ワッチョイ 0e81-snzV)
2018/02/25(日) 13:22:50.04ID:I4H7O+d10 (流れが質問者を放置しているように感じる)
119デフォルトの名無しさん (ワッチョイ c2f9-2orQ)
2018/02/25(日) 13:26:41.23ID:qARxqxts0120デフォルトの名無しさん (ブーイモ MM5e-1x+Q)
2018/02/25(日) 13:38:08.00ID:vTPpNH4CM >>103 >>104
c++ には realloc() は取り入れられなかった
ちょっと例が悪いが
concat3(char *a, char *b, cha *c) 文字列a と 文字列b と文字列c を連結して文字列a に返す関数を書こうとする
ここで 2 回の realloc() を行うとする
1 回目の realloc() は成功するが、2回目の realloc() は失敗したとする
このとき「関数 concat3() が失敗したときは状態は不変、成功したときだけ状態を変更する」という原則を満たせない
我ながらちょっと例が悪いとは思うが、
realloc() を暢気に使っていると、エラー処理が一手ばったりになってしまう。
c++ には realloc() は取り入れられなかった
ちょっと例が悪いが
concat3(char *a, char *b, cha *c) 文字列a と 文字列b と文字列c を連結して文字列a に返す関数を書こうとする
ここで 2 回の realloc() を行うとする
1 回目の realloc() は成功するが、2回目の realloc() は失敗したとする
このとき「関数 concat3() が失敗したときは状態は不変、成功したときだけ状態を変更する」という原則を満たせない
我ながらちょっと例が悪いとは思うが、
realloc() を暢気に使っていると、エラー処理が一手ばったりになってしまう。
122デフォルトの名無しさん (ワッチョイ 019f-SJjx)
2018/02/25(日) 13:49:23.19ID:L5EpKLxx0 >>120
俺はいいと思うぞ。
むしろ無理に「質問者様が神様だ」的にしたがるゆとりは死ねと思うが。
そもそも質問には回答つきまくってるし、質問者側が何らかの反応しないと話は進まないだろ。
流れも読めない癖に流れを主張するゆとりは殺すしかない。
俺はいいと思うぞ。
むしろ無理に「質問者様が神様だ」的にしたがるゆとりは死ねと思うが。
そもそも質問には回答つきまくってるし、質問者側が何らかの反応しないと話は進まないだろ。
流れも読めない癖に流れを主張するゆとりは殺すしかない。
123デフォルトの名無しさん (ワッチョイ df9f-x4Or)
2018/02/25(日) 14:39:52.01ID:XjF3qDop0 なるほど。まあ確かに使い方や使い所を間違えればハマるものではあるな。
そういや以前 realloc() で渡すポインターがNULLではなくサイズの指定が0だとfree()されるってのでハマったことがあった。w
そういや以前 realloc() で渡すポインターがNULLではなくサイズの指定が0だとfree()されるってのでハマったことがあった。w
124片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-uTGm)
2018/02/25(日) 14:51:26.22ID:nm5odapXd ANSI準拠のreallocは、mallocとfreeの代わりになる。
125デフォルトの名無しさん (ワッチョイ 8a6e-x4Or)
2018/02/25(日) 15:46:21.99ID:s5td7qK+0 未だにANSIの規格票を読んでる日本人いたのか
126デフォルトの名無しさん (ワッチョイ 6e23-Rch6)
2018/02/25(日) 15:51:12.25ID:DMbXpP0c0 俺も読んでる
127デフォルトの名無しさん (アウアウカー Sa11-CD0d)
2018/02/25(日) 15:59:51.76ID:NsuolzGja 未だにANSI使う理由って何だろう?
128デフォルトの名無しさん (ワッチョイ 8a6e-x4Or)
2018/02/25(日) 16:00:08.18ID:s5td7qK+0 ISOではなくANSIか?
129デフォルトの名無しさん (ドコグロ MM02-Y1mi)
2018/02/25(日) 18:48:53.57ID:bdk82RzyM >>121
それはプログラムの組み方が悪いだけでrealloc()のせいじゃないだろ
それはプログラムの組み方が悪いだけでrealloc()のせいじゃないだろ
130デフォルトの名無しさん (ワッチョイ 0e81-snzV)
2018/02/25(日) 18:55:32.39ID:I4H7O+d10 >>121
最初から文字列3つ分の領域確保すれば良いんでないの?
最初から文字列3つ分の領域確保すれば良いんでないの?
131デフォルトの名無しさん (ワッチョイ 019f-SJjx)
2018/02/25(日) 19:23:06.76ID:L5EpKLxx0 >>121
reallocではなく、自前でmalloc+memcpy+freeでやればいいだけ。
ただその前に、指摘されているとおり、
3つの「同時に変更される」生ポインタを掴ませるのが問題。
その場合には普通は一つの構造体に入れてそれ経由で使い、
「同時に変更される」という条件が外部に見えないようにする。(隠蔽)
勘違いしている奴も多いが、OOPは文法の話ではない。
reallocではなく、自前でmalloc+memcpy+freeでやればいいだけ。
ただその前に、指摘されているとおり、
3つの「同時に変更される」生ポインタを掴ませるのが問題。
その場合には普通は一つの構造体に入れてそれ経由で使い、
「同時に変更される」という条件が外部に見えないようにする。(隠蔽)
勘違いしている奴も多いが、OOPは文法の話ではない。
132デフォルトの名無しさん (ワッチョイ 0637-rG1w)
2018/02/25(日) 20:09:18.52ID:fbPK05Px0 reallocをmallocとmemcpyでやろうとするともとのメモリサイズわからずに詰まない?
133デフォルトの名無しさん (スップ Sdc4-7IFu)
2018/02/25(日) 20:41:49.10ID:p0obWBJzd 結果何をどうすればいいんですか?レベルが高すぎて何を言ってるのかさっぱりです
134デフォルトの名無しさん (アウアウウー Sab5-Oo+E)
2018/02/25(日) 20:48:37.39ID:Fc1MjilIa135デフォルトの名無しさん (アウアウウー Sab5-Oo+E)
2018/02/25(日) 20:58:36.53ID:H8bVBKR7a >>133
reallocに関してはひとまず気にしなくて良いかと
reallocに関してはひとまず気にしなくて良いかと
136デフォルトの名無しさん (ワッチョイ 0e81-snzV)
2018/02/25(日) 21:15:09.00ID:I4H7O+d10 >>133
見つかった行の保持ってメモリー上でやりたいの?
見つかった行の保持ってメモリー上でやりたいの?
137デフォルトの名無しさん (ワッチョイ fc9b-7IFu)
2018/02/25(日) 21:58:18.03ID:EC2T/8ze0138デフォルトの名無しさん (ワッチョイ 0e81-snzV)
2018/02/25(日) 22:15:41.07ID:I4H7O+d10 メモリ上に保持しなくても良いなら、検索して見つかった行をそのままファイルに書き出してしまう方が簡単だと思う。
あと、どういう環境で実行するか分からないんだが、もしも正規現が使えるなら、それを利用する方が簡単だと思う。
複数のキーワードで探したいときは一括で指定できるし。
あと、どういう環境で実行するか分からないんだが、もしも正規現が使えるなら、それを利用する方が簡単だと思う。
複数のキーワードで探したいときは一括で指定できるし。
139デフォルトの名無しさん (ワッチョイ 019f-SJjx)
2018/02/25(日) 22:23:36.04ID:L5EpKLxx0 >>139
>用途でC使うとか正気じゃねえ。メモリ上でゴリゴリやるにしても普通はスクリプト言語。
その判断をするのには、一定の C での経験が必要だと思います
python なんかでやったほうがいい仕事をあえて C で書く経験はあったほうがいいでしょう
>用途でC使うとか正気じゃねえ。メモリ上でゴリゴリやるにしても普通はスクリプト言語。
その判断をするのには、一定の C での経験が必要だと思います
python なんかでやったほうがいい仕事をあえて C で書く経験はあったほうがいいでしょう
141デフォルトの名無しさん (ワッチョイ fc9b-7IFu)
2018/02/25(日) 23:44:30.89ID:EC2T/8ze0 VBでは出来るんですがCの勉強をかねてトライしてます。
いろいろとありがとうございました!明日頑張ってみます!
いろいろとありがとうございました!明日頑張ってみます!
142デフォルトの名無しさん (ワッチョイ aab3-Y1mi)
2018/02/26(月) 11:24:56.97ID:0MjsGOBH0143デフォルトの名無しさん (ワッチョイ 66e1-imWJ)
2018/02/26(月) 12:24:58.22ID:4Dp3S/v30 >>142
concat3とかいうQZのボケたろくでもない例のことは忘れろ
concat3とかいうQZのボケたろくでもない例のことは忘れろ
144デフォルトの名無しさん (ワッチョイ 8a05-x4Or)
2018/02/26(月) 12:38:44.35ID:lxlU26hn0145デフォルトの名無しさん (ドコグロ MM36-Y1mi)
2018/02/26(月) 13:29:20.63ID:zI4VKzz4M >>143
お前は何を言ってるんだ?
お前は何を言ってるんだ?
146デフォルトの名無しさん (ワントンキン MMb8-Clm8)
2018/02/26(月) 17:32:30.23ID:e+KVEn7XM K&Rで説明されている筈なんだが
147デフォルトの名無しさん (スップ Sd00-7IFu)
2018/02/26(月) 17:41:14.36ID:vVA9DKIbd 結果出来ませんでした...
148デフォルトの名無しさん (ワッチョイ 0637-rG1w)
2018/02/26(月) 20:20:31.75ID:4PPe6ndQ0 >>144
reallocの作者がmallocの作者と違う場合なんだが
reallocの作者がmallocの作者と違う場合なんだが
149デフォルトの名無しさん (アウアウカー Sa0a-sySv)
2018/02/26(月) 20:38:25.45ID:9Qy36xi2a 違うかなあ?まあ、ソース公開されてれば違う人が書くことは楽だが。
150デフォルトの名無しさん (ワッチョイ 0e81-snzV)
2018/02/26(月) 22:00:57.86ID:Z8+ASG310 >>147
どの辺がどうできなかったかを書いてみて
どの辺がどうできなかったかを書いてみて
151デフォルトの名無しさん (ワッチョイ 8a05-x4Or)
2018/02/26(月) 22:08:57.21ID:lxlU26hn0152デフォルトの名無しさん (ワッチョイ fc9b-7IFu)
2018/02/26(月) 23:37:18.28ID:Il2cKkTC0 >>150
単純に自分でやってみようと思い一から書き始めたんですけど
CSVファイルのカンマ区切りで、行は日々増える形式で、13列の固定。それぞれ数字だったり文字だったり混合。
ファイルを開いて読み込んで一行ずつ検索文字列と比較して一致したら表示列を指定して表示させ、一致しなかったら次へを繰り返していこうと思って始めたんですけど。
配列に入らずうまいこといきませんでしたね。ネットの参考もいいのが見つからなくて...
前載せたコードを読みといた方が近道ですかね?
単純に自分でやってみようと思い一から書き始めたんですけど
CSVファイルのカンマ区切りで、行は日々増える形式で、13列の固定。それぞれ数字だったり文字だったり混合。
ファイルを開いて読み込んで一行ずつ検索文字列と比較して一致したら表示列を指定して表示させ、一致しなかったら次へを繰り返していこうと思って始めたんですけど。
配列に入らずうまいこといきませんでしたね。ネットの参考もいいのが見つからなくて...
前載せたコードを読みといた方が近道ですかね?
153デフォルトの名無しさん (ワッチョイ c2f9-2orQ)
2018/02/26(月) 23:49:55.49ID:KRl4xBEA0 >>151
もともと標準mallocやfreeを使って自前realloc作るならという話の流れだっただろ
もともと標準mallocやfreeを使って自前realloc作るならという話の流れだっただろ
154デフォルトの名無しさん (ワッチョイ 0e81-snzV)
2018/02/26(月) 23:57:50.74ID:Z8+ASG310 >>152
CSVファイルを読み込むプログラムは作った事ありますが
CSVの仕様をどの位受け入れるかで複雑さも変わると思います。
この辺は汎用的に作るか、自分が処理したいCSVの仕様の範囲にするかで違うとは思います。
scanf系の処理はとても癖が強く、
よっぽど仕様に精通していないと填まります
私ならその道を行くのはやめます
CSVファイルを読み込むプログラムは作った事ありますが
CSVの仕様をどの位受け入れるかで複雑さも変わると思います。
この辺は汎用的に作るか、自分が処理したいCSVの仕様の範囲にするかで違うとは思います。
scanf系の処理はとても癖が強く、
よっぽど仕様に精通していないと填まります
私ならその道を行くのはやめます
155デフォルトの名無しさん (ワッチョイ 019f-SJjx)
2018/02/27(火) 00:01:01.54ID:uYnnRgds0156デフォルトの名無しさん (ワッチョイ 3fb3-a3bs)
2018/02/27(火) 00:04:33.43ID:vDZ6bRaj0 "と , のエスケープと 1要素の中に改行を含む文字列周辺 RFCみて頭いたくなった
157デフォルトの名無しさん (ブーイモ MM5a-1x+Q)
2018/02/27(火) 00:13:39.83ID:euQ4hghrM158デフォルトの名無しさん (アークセー Sx5f-jcVR)
2018/02/27(火) 07:16:02.83ID:pdRg+OHax 配列とかポインタとか難しいと聞いていたから心配していたけど
とりあえず基礎の解説書レベルなら分かった。やれやれ。
とりあえず基礎の解説書レベルなら分かった。やれやれ。
159デフォルトの名無しさん (ワッチョイ 7c8a-Clm8)
2018/02/27(火) 09:21:35.76ID:uskldtVs0 指定したサイズの2次元配列を確保する関数を設計してくれまいか?
160デフォルトの名無しさん (ワッチョイ 8a32-x4Or)
2018/02/27(火) 10:07:05.72ID:XfJ/ct090 >>159
無理じゃね?
char (*dim_alloc(size_t width, size_t height))[width];
最後の[width]がエラーになる[*]にしてもあかん
[]にすると通るには通るが、今度は
char (*a)[3][4] = dim_alloc(3, 4); //型の不一致になる
無理じゃね?
char (*dim_alloc(size_t width, size_t height))[width];
最後の[width]がエラーになる[*]にしてもあかん
[]にすると通るには通るが、今度は
char (*a)[3][4] = dim_alloc(3, 4); //型の不一致になる
161デフォルトの名無しさん (ワッチョイ 8a32-x4Or)
2018/02/27(火) 10:08:23.25ID:XfJ/ct090 あ、失礼
char (*a)[4][3] = dim_alloc(3, 4);
結果は同じだけど
char (*a)[4][3] = dim_alloc(3, 4);
結果は同じだけど
162デフォルトの名無しさん (ワッチョイ 8a32-x4Or)
2018/02/27(火) 10:55:55.07ID:XfJ/ct090 できた
void dim_alloc(size_t, size_t, char (**b)[*]);
int main(void)
{
size_t width = 3, height = 4;
char (*a)[width];
dim_alloc(width, height, &a);
}
void dim_alloc(size_t width, size_t height, char (**b)[width])
{
*b = (char (*)[width])malloc(width * height);
}
これならおk
void dim_alloc(size_t, size_t, char (**b)[*]);
int main(void)
{
size_t width = 3, height = 4;
char (*a)[width];
dim_alloc(width, height, &a);
}
void dim_alloc(size_t width, size_t height, char (**b)[width])
{
*b = (char (*)[width])malloc(width * height);
}
これならおk
163デフォルトの名無しさん (アウアウカー Sa0a-sySv)
2018/02/27(火) 11:45:45.08ID:r7ed+pq5a ポインタの配列使っちゃえばいいじゃん。free()する時注意が必要だがアクセスがa[y][x]形式なのは同じだし。
164デフォルトの名無しさん (ワッチョイ 0e81-snzV)
2018/02/27(火) 11:48:09.27ID:w9pRJ3lK0 二次元配列とポインタの配列だと、使い方が違うでしょう
165デフォルトの名無しさん
2018/02/27(火) 12:21:42.40 mallocされたサイズが分からんとか何言ってるの?
gccもVCも確保サイズを返す関数を提供してるだろ
gccもVCも確保サイズを返す関数を提供してるだろ
166デフォルトの名無しさん (アウアウカー Sa0a-sySv)
2018/02/27(火) 12:27:42.17ID:r7ed+pq5a >>164
確保時と解放時が違うが読み書きアクセスする時の表現は同じにできる。
確保時と解放時が違うが読み書きアクセスする時の表現は同じにできる。
>>159
gcc6 では一筋縄ではいかなくなっているね…
gcc6 では一筋縄ではいかなくなっているね…
168デフォルトの名無しさん (ワッチョイ 8a32-x4Or)
2018/02/27(火) 12:35:33.45ID:XfJ/ct090 >>165
非標準のね
非標準のね
171デフォルトの名無しさん (アウアウウー Sa83-x4Or)
2018/02/27(火) 18:07:21.76ID:BEzsaLeta ああ。先頭にポインタを詰め込んで一発で全部free()できるようにしたのか。
172デフォルトの名無しさん (ドコグロ MM2e-Y1mi)
2018/02/27(火) 19:24:56.97ID:LuvO3mbWM >>165
非標準だし、そもそもそんなものを使う必要は滅多にない
非標準だし、そもそもそんなものを使う必要は滅多にない
173デフォルトの名無しさん
2018/02/27(火) 19:27:39.38 >>168,172
上の方でmalloc作者じゃなきゃrealloc作れないっていう主張があったから、普通は処理系で専用関数を提供してるだろって話
上の方でmalloc作者じゃなきゃrealloc作れないっていう主張があったから、普通は処理系で専用関数を提供してるだろって話
174デフォルトの名無しさん (ワッチョイ 2f93-IXLF)
2018/02/27(火) 19:47:16.45ID:jvpYfXKk0 >>159
わざわざ関数を設計しなくても、例えば3次元配列なら
int ary[dim_z][dim_y][dim_x];
int (*ptr)[dim_y][dim_x] = malloc(sizeof(int) * dim_z * dim_y * dim_x);
とやれば ary と ptr は同等に扱えないかな。
ptrはfree()する必要があること、sizeofの対象にしたとき同じ値を返さないことは
別関数を作っても同じだし。
わざわざ関数を設計しなくても、例えば3次元配列なら
int ary[dim_z][dim_y][dim_x];
int (*ptr)[dim_y][dim_x] = malloc(sizeof(int) * dim_z * dim_y * dim_x);
とやれば ary と ptr は同等に扱えないかな。
ptrはfree()する必要があること、sizeofの対象にしたとき同じ値を返さないことは
別関数を作っても同じだし。
175デフォルトの名無しさん
2018/02/27(火) 19:54:46.22 >>159は二次元配列を確保とは言っているがインタフェースは特に注文ないんだからxとyと型サイズを掛けて(必要ならアラインメント考慮も入れて)mallocしてvoidポインタを返せばいいよな
176デフォルトの名無しさん (ワッチョイ 8a32-x4Or)
2018/02/27(火) 20:35:43.21ID:XfJ/ct090 >>174
別関数を作っても同じとは思わないな
void dim_alloc(size_t, size_t, char (**)[*]);
void dim_free(size_t width, char const volatile (*head)[width])
{
free((void *)head);
}
dim_allocが内部的に割り付けに使っている手段を
dim_freeに隠蔽する意味はあるんだから
別関数を作っても同じとは思わないな
void dim_alloc(size_t, size_t, char (**)[*]);
void dim_free(size_t width, char const volatile (*head)[width])
{
free((void *)head);
}
dim_allocが内部的に割り付けに使っている手段を
dim_freeに隠蔽する意味はあるんだから
177デフォルトの名無しさん (ドコグロ MM2e-Y1mi)
2018/02/27(火) 20:42:39.05ID:LuvO3mbWM178デフォルトの名無しさん (アウアウウー Sab5-Oo+E)
2018/02/27(火) 21:38:07.83ID:ejzPWrTva >>177
だから、その主張はおかしいって話の流れだったろ
だから、その主張はおかしいって話の流れだったろ
179デフォルトの名無しさん (アークセー Sx10-jcVR)
2018/02/27(火) 23:15:01.44ID:7DMjjd1qx テトリスのプログラムって難しい方なの?
180デフォルトの名無しさん (ワッチョイ 0e81-snzV)
2018/02/27(火) 23:18:17.42ID:w9pRJ3lK0 そんなには難しくはないと思う
作る人がグラフィック処理を理解していて
キー入力のリアルタイム処理をこなせればね
作る人がグラフィック処理を理解していて
キー入力のリアルタイム処理をこなせればね
182デフォルトの名無しさん (アークセー Sx10-jcVR)
2018/02/27(火) 23:26:02.43ID:7DMjjd1qx PetiteTech にあるテトリス
ブロックパズルの作り方 だと これはどうなの?
ブロックパズルの作り方 だと これはどうなの?
183デフォルトの名無しさん (アークセー Sx10-jcVR)
2018/02/27(火) 23:31:30.01ID:7DMjjd1qx 高校生ぐらいが無理なく取り組めるゲームプログラムって
無いですかね?もちろん初心者。
無いですかね?もちろん初心者。
184デフォルトの名無しさん (ワッチョイ d023-MTlB)
2018/02/27(火) 23:54:04.69ID:8YslYmAQ0 パズル系は楽そうに見えるけど、判定部分を作るのがキツいと思う
まずは固定画面でブロック崩し
次は横スクロール画面でスーパーマリオもどきぐらい
描画ライブラリを自作出来なかったら dxlib とかのフリーライブラリが使える
2Dに慣れたらUnityのフリー版で3Dゲーム作ってみるのもいい
まずは固定画面でブロック崩し
次は横スクロール画面でスーパーマリオもどきぐらい
描画ライブラリを自作出来なかったら dxlib とかのフリーライブラリが使える
2Dに慣れたらUnityのフリー版で3Dゲーム作ってみるのもいい
185デフォルトの名無しさん (ワッチョイ 019f-SJjx)
2018/02/28(水) 00:04:51.75ID:8c8qszi40 ここに来て何でこんなに初心者が沸いているのか分からんが、
スレ分けた方がいいんじゃないか?
というか、上級者用のスレがあったら紹介してくれ。俺がそっち行くから。
>>183
高校生なら学校の勉強しとけ。特に数学。
俺はゲーム畑ではないが、今ですらエンジンは統合されつつあり、
フレームワーク化は今後ますます進む。というか、そうならない理由がない。
そのとき、中途半端にCが出来ても使い物にならない。
ゲームプログラミングは上位のフレームワーク上の部分と
下位のゲームエンジンの部分に分離され、Cが担当するのは後者で、
当たり前のように座標を使いこなし、ゴリゴリにチューニングすることが求められる。
つっても通じないだろうが、多分高校生の考えるゲームプログラミングなら、
C#でunity使うのが今風なんじゃね?そっちやっとけよ。
スレ分けた方がいいんじゃないか?
というか、上級者用のスレがあったら紹介してくれ。俺がそっち行くから。
>>183
高校生なら学校の勉強しとけ。特に数学。
俺はゲーム畑ではないが、今ですらエンジンは統合されつつあり、
フレームワーク化は今後ますます進む。というか、そうならない理由がない。
そのとき、中途半端にCが出来ても使い物にならない。
ゲームプログラミングは上位のフレームワーク上の部分と
下位のゲームエンジンの部分に分離され、Cが担当するのは後者で、
当たり前のように座標を使いこなし、ゴリゴリにチューニングすることが求められる。
つっても通じないだろうが、多分高校生の考えるゲームプログラミングなら、
C#でunity使うのが今風なんじゃね?そっちやっとけよ。
186デフォルトの名無しさん (ワッチョイ d023-MTlB)
2018/02/28(水) 00:42:29.18ID:QXjyWHPf0 そもそも枯れた技術のC言語スレで上級者なんているのかな・・・?
188デフォルトの名無しさん (ワッチョイ 019f-SJjx)
2018/02/28(水) 01:07:30.80ID:8c8qszi40 >>186
むしろお前含めて一通りも使えない馬鹿が沸きまくっていることが問題だ。
それでも初心者は初心者同士で好きにやればいいが、
元々居た連中は逃げるしかない。
大体、>>184も間違いだ。
そもそもプログラミングすら出来ない奴がCから始めることが間違っている。
今は昔みたいにCしかない状況ではない。他に適した言語がいくらでもある。
だから「C初心者」は許容するとして、「プログラミング初心者」はお帰りください、でいい。
というか、それが本人の為だ。
「判定部分」は言語に依らない。
だから「判定部分を作るのがキツい」のなら、まずその程度簡単に出来るまで他言語で鍛えろ、でしかない。
それで、速度的に問題がある場合はそこをCに切り替えていくわけでさ。
(俺は使ったこと無いから推測だが、)普通の当たり判定ならエンジン側で当然持ってるだろ。
落ちゲーもそれなりの歴史はあるし、判定ルーチンがエンジンにあってもおかしくない。
そもそもテトリスの判定(一列埋め)が難しいという時点で論外だし。
お前は>>184が本人の為になるとでも思ってるのか?
高校生なら学校のお勉強しとけ、がよっぽどマシだろ。
そもそも高校生が2chするのが間違っていると思うし。
むしろお前含めて一通りも使えない馬鹿が沸きまくっていることが問題だ。
それでも初心者は初心者同士で好きにやればいいが、
元々居た連中は逃げるしかない。
大体、>>184も間違いだ。
そもそもプログラミングすら出来ない奴がCから始めることが間違っている。
今は昔みたいにCしかない状況ではない。他に適した言語がいくらでもある。
だから「C初心者」は許容するとして、「プログラミング初心者」はお帰りください、でいい。
というか、それが本人の為だ。
「判定部分」は言語に依らない。
だから「判定部分を作るのがキツい」のなら、まずその程度簡単に出来るまで他言語で鍛えろ、でしかない。
それで、速度的に問題がある場合はそこをCに切り替えていくわけでさ。
(俺は使ったこと無いから推測だが、)普通の当たり判定ならエンジン側で当然持ってるだろ。
落ちゲーもそれなりの歴史はあるし、判定ルーチンがエンジンにあってもおかしくない。
そもそもテトリスの判定(一列埋め)が難しいという時点で論外だし。
お前は>>184が本人の為になるとでも思ってるのか?
高校生なら学校のお勉強しとけ、がよっぽどマシだろ。
そもそも高校生が2chするのが間違っていると思うし。
189デフォルトの名無しさん (アウアウカー Sa11-CD0d)
2018/02/28(水) 01:09:56.20ID:3MQnmRRma190デフォルトの名無しさん (ワッチョイ 0e81-snzV)
2018/02/28(水) 01:15:14.33ID:m1ANm8An0 上級者かそうで無いかは、どの辺で分けるの?
もしかして年齢?
もしかして年齢?
191デフォルトの名無しさん (ワッチョイ d023-MTlB)
2018/02/28(水) 01:20:42.25ID:QXjyWHPf0 ここにいる自称上級者の人達は、C++やC#なら標準で使える様な物を何で再発明しているんだろう?
ポインタ返すだけの関数だとメモリオーバーランが検知出来ないから業務では危なくて使えないし、
バッファへのポインタは別ソース内にstaticで隠蔽してintとかのハンドルだけ返して、
引数範囲チェック付きのget,setと、ハンドルでfreeする関数まで作らないと正解とは言えない
ポインタ返すだけの関数だとメモリオーバーランが検知出来ないから業務では危なくて使えないし、
バッファへのポインタは別ソース内にstaticで隠蔽してintとかのハンドルだけ返して、
引数範囲チェック付きのget,setと、ハンドルでfreeする関数まで作らないと正解とは言えない
192デフォルトの名無しさん (ワッチョイ 019f-SJjx)
2018/02/28(水) 01:45:42.72ID:8c8qszi40 とりあえず他の人の反応見て週末にでも俺が立てるよ。
テンプレは>>1踏襲だが、以下に変える予定。
スレタイ:C言語相談室
C言語の話題のみ取り扱います C++の話題はC++スレへ
上級者専用です。
10,000行程度のソースを取り扱ったことがない人は以下スレへどうぞ。
(このスレ)
>>190他
Cなら10k行で切っても人数集まるんじゃないかな?と思っている。
ゆずって5k行くらいにしとくか?
或いはC++も混ぜとくか?C++スレも「上級者専用にしていいんじゃないか」って話も出てたし。
ポシャったけど。
>>191
そもそもそういう思想ではないし、C++やC#がいいと思うのならそれらを使えばいいだけ。
個人的にはC使いは無駄に頑張りすぎていて、
もうちょっと上手く手抜きをすることも覚えるべきだとは思うが、
わざわざCスレで「何回目だよそれ?」をぶちかますお前も頭おかしいと思う。
テンプレは>>1踏襲だが、以下に変える予定。
スレタイ:C言語相談室
C言語の話題のみ取り扱います C++の話題はC++スレへ
上級者専用です。
10,000行程度のソースを取り扱ったことがない人は以下スレへどうぞ。
(このスレ)
>>190他
Cなら10k行で切っても人数集まるんじゃないかな?と思っている。
ゆずって5k行くらいにしとくか?
或いはC++も混ぜとくか?C++スレも「上級者専用にしていいんじゃないか」って話も出てたし。
ポシャったけど。
>>191
そもそもそういう思想ではないし、C++やC#がいいと思うのならそれらを使えばいいだけ。
個人的にはC使いは無駄に頑張りすぎていて、
もうちょっと上手く手抜きをすることも覚えるべきだとは思うが、
わざわざCスレで「何回目だよそれ?」をぶちかますお前も頭おかしいと思う。
>>192
1万行ですか…気が遠くなりますね…
こんなのなら書いたことがありますが…
https://code.hackerearth.com/431130T
https://code.hackerearth.com/7b7b82s
1万行ですか…気が遠くなりますね…
こんなのなら書いたことがありますが…
https://code.hackerearth.com/431130T
https://code.hackerearth.com/7b7b82s
194デフォルトの名無しさん (ワッチョイ df9f-x4Or)
2018/02/28(水) 01:54:28.86ID:ifAjmiIg0195デフォルトの名無しさん (ワッチョイ df9f-x4Or)
2018/02/28(水) 01:57:04.78ID:ifAjmiIg0 あ、ごめん。リロードしてなかった。そういうテンプレは入れてないな。
じゃあ俺の作った方は放置でいいよ。新しいのできたら削除依頼しとこう。
じゃあ俺の作った方は放置でいいよ。新しいのできたら削除依頼しとこう。
196デフォルトの名無しさん (ワッチョイ 0e81-snzV)
2018/02/28(水) 02:06:17.61ID:m1ANm8An0 >>192
1CU1ソースって仕事を昔してた。
モジュール分割すら認めてないサイトだった
ソースはそれぞれ1万行越えてたな
最大2万行あったと思う
1日に600行書いたことはある
でも自分を上級者だとは思っていない
そんな自信はありません
書くソースは500行程度だな
どんなに詰め込んでも2000行が限界だわ
1CU1ソースって仕事を昔してた。
モジュール分割すら認めてないサイトだった
ソースはそれぞれ1万行越えてたな
最大2万行あったと思う
1日に600行書いたことはある
でも自分を上級者だとは思っていない
そんな自信はありません
書くソースは500行程度だな
どんなに詰め込んでも2000行が限界だわ
197デフォルトの名無しさん (ワッチョイ 019f-SJjx)
2018/02/28(水) 02:13:49.37ID:8c8qszi40 >>193
これ何故コードに展開したんだ?何かの実験か?
それにしても意味があるとは思えないが。
さすがに手打ちとは思えないから、当然自動コード生成として、
その場合は入力は木データなのだから、歩くのが普通だろ。
100行程度で済む内容だと思うが。
これ何故コードに展開したんだ?何かの実験か?
それにしても意味があるとは思えないが。
さすがに手打ちとは思えないから、当然自動コード生成として、
その場合は入力は木データなのだから、歩くのが普通だろ。
100行程度で済む内容だと思うが。
199デフォルトの名無しさん (ワッチョイ 019f-SJjx)
2018/02/28(水) 02:38:51.42ID:8c8qszi40 >>198
どういう課題かは知らんが、
データとして処理するべき案件をcase文にしてしまうという発想が間違っていると思うけどな。
普通は bool flags[6] でありなしを管理し、10行程度で書ける内容だぞこれは。
どういう課題かは知らんが、
データとして処理するべき案件をcase文にしてしまうという発想が間違っていると思うけどな。
普通は bool flags[6] でありなしを管理し、10行程度で書ける内容だぞこれは。
>>199
ああ、それは説明が必要でしたね
確かにこの課題内容の「縛り」は理解不能でしたが、当時、それに知恵を絞った者も複数いたようです、宿題スレ、粘着の嵐でもう見る影もなく廃墟になってしまったんですが
課題内容
C言語で、
#include <stdio.h>
int main(void){
char n;
/*
ここを埋める。変数の新たな定義
や,printf,scanf以外の関数の呼び出しは禁止
*/
}
な場合で、
1から6までの数字をキーボードから最小で5回受ける
(同じ文字の入力や範囲外の文字の入力は
「無視しました」と出力)
残り一つの数字がわかる場合はキーボード入力
を待たずに決めてよい
最終的に、入力された順番とは逆順に入力
された文字を出力
ああ、それは説明が必要でしたね
確かにこの課題内容の「縛り」は理解不能でしたが、当時、それに知恵を絞った者も複数いたようです、宿題スレ、粘着の嵐でもう見る影もなく廃墟になってしまったんですが
課題内容
C言語で、
#include <stdio.h>
int main(void){
char n;
/*
ここを埋める。変数の新たな定義
や,printf,scanf以外の関数の呼び出しは禁止
*/
}
な場合で、
1から6までの数字をキーボードから最小で5回受ける
(同じ文字の入力や範囲外の文字の入力は
「無視しました」と出力)
残り一つの数字がわかる場合はキーボード入力
を待たずに決めてよい
最終的に、入力された順番とは逆順に入力
された文字を出力
201デフォルトの名無しさん (ワッチョイ 019f-SJjx)
2018/02/28(水) 03:11:31.80ID:8c8qszi40 >>200
クソ問題はやるだけ無駄だぞ。
大体そういうのを考えた奴は実際はプログラマではないことが多い。
だからどういう事が実際に必要なのか分かってないのさ。
K&Rにしても禿本にしても、演習課題付けてくれてるだろ。あれをやる方が1万倍マシ。
或いはテトリスなりを実際に自分で作った方がいい。
少なくともそこでは「実際に必要なこと」しか要求されないわけでさ。
スタックを1バイトも使ってはいけない状態で、
展開したコードならどれだけ大きくてもいいとか、あり得ないよ。
スタックは128バイトまでな、とかならまだ分かるが。
クソ問題はやるだけ無駄だぞ。
大体そういうのを考えた奴は実際はプログラマではないことが多い。
だからどういう事が実際に必要なのか分かってないのさ。
K&Rにしても禿本にしても、演習課題付けてくれてるだろ。あれをやる方が1万倍マシ。
或いはテトリスなりを実際に自分で作った方がいい。
少なくともそこでは「実際に必要なこと」しか要求されないわけでさ。
スタックを1バイトも使ってはいけない状態で、
展開したコードならどれだけ大きくてもいいとか、あり得ないよ。
スタックは128バイトまでな、とかならまだ分かるが。
>>201
あはは…そのとおりですね
非常識・無常識でウケを狙ったりもして楽しかったんですが
今残っているスレとしては、ここが雰囲気が似ていますね
https://mevius.5ch.net/test/read.cgi/tech/1514772904/
C 言語の宿題に対して執拗に prolog で書いていた人もいました、いつも凄いとおもっていました
あはは…そのとおりですね
非常識・無常識でウケを狙ったりもして楽しかったんですが
今残っているスレとしては、ここが雰囲気が似ていますね
https://mevius.5ch.net/test/read.cgi/tech/1514772904/
C 言語の宿題に対して執拗に prolog で書いていた人もいました、いつも凄いとおもっていました
203デフォルトの名無しさん (ワッチョイ 969f-7+Pf)
2018/02/28(水) 04:52:04.37ID:u7A4CcwO0 >>199 bool ?
204デフォルトの名無しさん (ワッチョイ d061-POFq)
2018/02/28(水) 05:21:30.33ID:sJxURYwy0 普通の有限オートマトンやんな
205デフォルトの名無しさん (ワッチョイ 2a23-x4Or)
2018/02/28(水) 08:56:58.23ID:57y2KSxK0 無限オートマトン ってどんななの?
206デフォルトの名無しさん (ブーイモ MMfd-m/r1)
2018/02/28(水) 09:12:27.49ID:MJOJ5lH0M 状態数が有限じゃないってことだけど、解析できないし分類上も有用じゃないので、現実には扱わないよ
207デフォルトの名無しさん (ワッチョイ 1651-x4Or)
2018/02/28(水) 09:52:53.28ID:eOQjYTv40208デフォルトの名無しさん (ワッチョイ 2f93-IXLF)
2018/02/28(水) 11:17:44.41ID:A9USqIB/0209デフォルトの名無しさん (アウアウカー Sa0a-sySv)
2018/02/28(水) 12:31:00.24ID:ZStODBz1a キーボードを壁に吊るしてって、斬新なアイディアだな。
210デフォルトの名無しさん (アウアウカー Sa0a-sySv)
2018/02/28(水) 12:47:25.24ID:ZStODBz1a そういや昨日秋葉に行ったらUSB接続で反対側が何にも繋がってないやつで、自分でスイッチ繋げて入力用の何かを自作できるっていうの売ってたな。(確か東映無線にあった)
一応ハードウェア工作を含んで尚且つOS経由でUSBからの入力をしなければならないが、キーボードを壁に吊るすぐらいでは飽き足らない人はやってみたらどうかな。
一応ハードウェア工作を含んで尚且つOS経由でUSBからの入力をしなければならないが、キーボードを壁に吊るすぐらいでは飽き足らない人はやってみたらどうかな。
211デフォルトの名無しさん (アウアウカー Sa11-2orQ)
2018/02/28(水) 14:13:55.34ID:nUmzOd5xa212デフォルトの名無しさん (アウアウカー Sa11-2orQ)
2018/02/28(水) 14:15:02.50ID:nUmzOd5xa213デフォルトの名無しさん (ワッチョイ 749e-2pQG)
2018/02/28(水) 20:10:01.78ID:DO+q01hP0 getch使ってザッザッザッザッザカリテ
214デフォルトの名無しさん (アウアウウー Sa83-x4Or)
2018/02/28(水) 21:12:07.60ID:sIMYGGyya cursesだな。
215デフォルトの名無しさん (ワッチョイ 0104-je3A)
2018/02/28(水) 22:05:24.10ID:5kf5T6va0 テトリスとぷよはそんなに難しくなかったなぁ。
省メモリで作ると果てしなく大変だけど、富豪的に作れば大したことない。
オセロとかもそうやな。富豪的に作れば難易度は各段に下がる。
省メモリで作ると果てしなく大変だけど、富豪的に作れば大したことない。
オセロとかもそうやな。富豪的に作れば難易度は各段に下がる。
216デフォルトの名無しさん (ワッチョイ eff2-x4Or)
2018/02/28(水) 22:10:23.35ID:LDTKKB+20 >>208
高校生というか中学生レベルかもしれんが、パソコン買ってBASICで最初に作る定番だな。懐かしい。
ヒット・アンド・ブロウ(マスターマインド)って簡単な割に意外と遊べるんだよな。
あとブラックボックスなんかも。
高校生というか中学生レベルかもしれんが、パソコン買ってBASICで最初に作る定番だな。懐かしい。
ヒット・アンド・ブロウ(マスターマインド)って簡単な割に意外と遊べるんだよな。
あとブラックボックスなんかも。
217デフォルトの名無しさん (ワッチョイ 0104-je3A)
2018/02/28(水) 23:46:39.93ID:5kf5T6va0 対戦マスターマインドとか簡単で面白いカモな。
伏せられた一つの答えを解きあう感じの。
敵作る経験にもなるし。
伏せられた一つの答えを解きあう感じの。
敵作る経験にもなるし。
218デフォルトの名無しさん (アークセー Sxdb-TGtH)
2018/03/01(木) 00:11:06.23ID:Ajqb03Rpx それぞれありがとうございます。ヒットアンドブロウって初めて聞きました。
確かに学校の勉強も大事ですね。数学検定準2も終わったので(多分合格)
中3・高1のメンバーですが。2級までの間、AO入試にプログラム使えないかと
思って(将来的にも使えるようにしたい)勉強し始めています。
(立命館のあいちゃれとか参加してみたいとか・・・)まあそんな感じ。
確かに学校の勉強も大事ですね。数学検定準2も終わったので(多分合格)
中3・高1のメンバーですが。2級までの間、AO入試にプログラム使えないかと
思って(将来的にも使えるようにしたい)勉強し始めています。
(立命館のあいちゃれとか参加してみたいとか・・・)まあそんな感じ。
219デフォルトの名無しさん (アウアウウー Sa2b-m1UI)
2018/03/01(木) 09:43:11.48ID:O9YoI3Ipa >>216
BASICで・・・30年以上前の話かな・・・
BASICで・・・30年以上前の話かな・・・
220デフォルトの名無しさん (ワッチョイ 474c-m1UI)
2018/03/01(木) 09:57:54.68ID:KMinam3V0 BASICか。。。
始めて作ったのは
敵がいないパックマンに
バック走行のレーシング
マシン語おぼえて任意方向のスクロールができるようになったら
ボスコニアンとかゼビウス
敵キャラはマシン語より難しい
完全にランダムな動きはすぐできるが
自機を狙ってくるやつの思考ルーチンは奥深い
始めて作ったのは
敵がいないパックマンに
バック走行のレーシング
マシン語おぼえて任意方向のスクロールができるようになったら
ボスコニアンとかゼビウス
敵キャラはマシン語より難しい
完全にランダムな動きはすぐできるが
自機を狙ってくるやつの思考ルーチンは奥深い
221デフォルトの名無しさん (ドコグロ MM9f-9Bkh)
2018/03/01(木) 13:15:16.58ID:vHclpfSxM ハングマンはわりと簡単に作れてわりと楽しめるよ
英語の勉強にもなる(かもしれない)
英語の勉強にもなる(かもしれない)
222デフォルトの名無しさん (ワッチョイ 6793-fJrP)
2018/03/01(木) 13:42:17.24ID:EAWoI55s0 >>220
「バック走行のレーシング」て発想はなかった。
俺は「風船を背負って縦穴を落下する」という設定だった。
…そういや、今のプログラム初心者は「とりあえずスター・トレック」で
ゲーム作り始めないのね。
真面目な話、BASICでINPUT命令を使うのに比べると
Cでユーザーからのキーボード入力を受け取るのは面倒なんだよね。
そのせいで同じネタでもプログラム課題としての難度がいくらか上がる。
「バック走行のレーシング」て発想はなかった。
俺は「風船を背負って縦穴を落下する」という設定だった。
…そういや、今のプログラム初心者は「とりあえずスター・トレック」で
ゲーム作り始めないのね。
真面目な話、BASICでINPUT命令を使うのに比べると
Cでユーザーからのキーボード入力を受け取るのは面倒なんだよね。
そのせいで同じネタでもプログラム課題としての難度がいくらか上がる。
223デフォルトの名無しさん (ワッチョイ 6704-PLqx)
2018/03/01(木) 14:39:39.65ID:pSYCUqTH0 conio.hを発見して非標準に絶望するまでが一セット。
俺、発見するのに数年かかったんだぜ。
BASICで3日でできたことがなんでできんのじゃーって悶えたわ。
俺、発見するのに数年かかったんだぜ。
BASICで3日でできたことがなんでできんのじゃーって悶えたわ。
224デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/01(木) 15:52:58.39ID:AvQj/v1Qa cursesライブラリの方が対応している端末が多くてほぼ標準なんじゃないかな
225デフォルトの名無しさん (ワッチョイ 474c-m1UI)
2018/03/01(木) 16:10:34.41ID:KMinam3V0 非標準ておまえら。。。
// basic_like.h
int inkey(void);
こんなん一発作っときゃ終わりだろうがよ
// basic_like.h
int inkey(void);
こんなん一発作っときゃ終わりだろうがよ
226デフォルトの名無しさん (ワッチョイ 7fea-poP5)
2018/03/01(木) 17:04:57.73ID:3FNdba4V0 自分の使ってるコンパイラの枠組みの中だけで実装できればまだいいんだが…
めんどくさいので既存のものを探すことにになる
めんどくさいので既存のものを探すことにになる
227デフォルトの名無しさん (ワッチョイ df9d-wl/W)
2018/03/01(木) 18:26:02.35ID:AzZlAoZA0 CよりC++使うべきでは?
228デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/01(木) 18:33:42.83ID:AvQj/v1Qa 今さらC++使う気にはなれないな
229デフォルトの名無しさん (アウアウエー Sa9f-NBPA)
2018/03/01(木) 18:46:09.21ID:5P8YUW6ka マスターマインドは
正解にたどり着くまでの
最短最速最適な質問の仕方
を次の一手で出すアルゴリズム考えたな
4列だったら最大7手未満とかそんなやつ
正解にたどり着くまでの
最短最速最適な質問の仕方
を次の一手で出すアルゴリズム考えたな
4列だったら最大7手未満とかそんなやつ
230デフォルトの名無しさん (ワッチョイ 6704-PLqx)
2018/03/01(木) 21:26:58.79ID:pSYCUqTH0231デフォルトの名無しさん (ワッチョイ 6704-PLqx)
2018/03/01(木) 21:28:15.90ID:pSYCUqTH0 マスターマインドのAIはダサいのは作ったことある。
正解にはたどりつけるけど、パーミテーションでグルグル回す奴だから回答がキモイ。
そして遅い・・・。
正解にはたどりつけるけど、パーミテーションでグルグル回す奴だから回答がキモイ。
そして遅い・・・。
232デフォルトの名無しさん (ワッチョイ df5d-W8CT)
2018/03/02(金) 05:26:58.29ID:btKfsNEv0 >>230
まあ、非標準だから仕方ない。そういうのは条件コンパイルとか、たくさんあるなら環境ごとに別のソースファイルにしてビルド時に選択とか。
そういうことをちゃんとやってるオープンソースソフトウェアが参考になるかも。
まあ、非標準だから仕方ない。そういうのは条件コンパイルとか、たくさんあるなら環境ごとに別のソースファイルにしてビルド時に選択とか。
そういうことをちゃんとやってるオープンソースソフトウェアが参考になるかも。
233デフォルトの名無しさん (ワッチョイ df52-m1UI)
2018/03/02(金) 06:44:50.16ID:bNTu0vGw0 待機なしの1キャラ入力は標準に欲しいね
234デフォルトの名無しさん (ワッチョイ 078a-Jyeh)
2018/03/02(金) 07:35:26.90ID:Ht5IxdGD0 日本語どうやって入力するんだ?
235デフォルトの名無しさん (ワッチョイ ff23-m1UI)
2018/03/02(金) 09:02:00.75ID:7oxMlhUX0 >>225
にいさんむむむ でキーリピート解除
にいさんむむむ でキーリピート解除
236デフォルトの名無しさん (ワッチョイ 679f-3iyT)
2018/03/02(金) 22:53:07.31ID:PBdn8yjo0 >>192
立てた。
C言語相談室(上級者専用)
https://mevius.5ch.net/test/read.cgi/tech/1519998483
老害が来てもウザイので「10,000行程度のソースを扱えない人は」と現在状態に変更した。
上級者には一朝一夕では成れない。
初心者は文法事項にばかりに目が行きがちだが、
今日覚えれば明日から使える文法事項で練度を測るのはナンセンスだ。
これを含めて、意見については新スレで受け付ける。
>>195
削除よろ
立てた。
C言語相談室(上級者専用)
https://mevius.5ch.net/test/read.cgi/tech/1519998483
老害が来てもウザイので「10,000行程度のソースを扱えない人は」と現在状態に変更した。
上級者には一朝一夕では成れない。
初心者は文法事項にばかりに目が行きがちだが、
今日覚えれば明日から使える文法事項で練度を測るのはナンセンスだ。
これを含めて、意見については新スレで受け付ける。
>>195
削除よろ
237デフォルトの名無しさん (ワッチョイ 6704-PLqx)
2018/03/02(金) 23:05:02.75ID:Wy5zsGfp0 >>234
UTF-8型というものはない。
wchar_tにウニコードかOSの文字コードが入ってることを期待しよう。
まぁ、stdinをgetchで読んで解析とかかな。またはfgetsで全部読むとか。
世知辛いのじゃー。
UTF-8型というものはない。
wchar_tにウニコードかOSの文字コードが入ってることを期待しよう。
まぁ、stdinをgetchで読んで解析とかかな。またはfgetsで全部読むとか。
世知辛いのじゃー。
238デフォルトの名無しさん
2018/03/03(土) 19:55:40.33 >>237
一定のchunk sizeでreadして1byteずつ解析やな
一定のchunk sizeでreadして1byteずつ解析やな
239デフォルトの名無しさん (ワッチョイ 6704-PLqx)
2018/03/03(土) 20:06:25.92ID:B47zIri70 あ、そうか。
UTF-8って生バイトfreadしないといけないのか。
失念してた。
UTF-8って生バイトfreadしないといけないのか。
失念してた。
240デフォルトの名無しさん (ワッチョイ e79f-m1UI)
2018/03/03(土) 20:54:25.83ID:usZqppoC0 >>236
削除依頼出して誘導の書き込みしておいた。
削除依頼出して誘導の書き込みしておいた。
241デフォルトの名無しさん (アウアウウー Sa2b-OZjy)
2018/03/04(日) 09:51:40.56ID:/AI+3Uf1a おまいらってすごいね
C検定の1級とか余裕なんだろね
C検定の1級とか余裕なんだろね
242デフォルトの名無しさん (ワッチョイ 7f5f-m1UI)
2018/03/04(日) 17:53:13.34ID:9DD6RFWE0 いやいや、これでもISO/IEC 9899:2011のつまみ食いをしてるだけですよ
昔のCと違い、今のCは付き合ってらんないところが結構あるんで
昔のCと違い、今のCは付き合ってらんないところが結構あるんで
243デフォルトの名無しさん (アークセー Sxdb-TGtH)
2018/03/04(日) 23:51:40.13ID:8NE8Y0sUx 10,000行程度のプログラムで何ができるのか想像が出来ん。
244デフォルトの名無しさん
2018/03/05(月) 00:51:13.54 10000行程度を書いた経験だろ
全体だと30万行とかだろ
全体だと30万行とかだろ
245デフォルトの名無しさん (ワッチョイ 6704-PLqx)
2018/03/05(月) 01:04:58.69ID:FpxBMBRn0 一プロジェクトで1万行はないな。趣味だから。
トータルならそれ以上書いてるけど。
トータルならそれ以上書いてるけど。
246デフォルトの名無しさん (ワッチョイ e79f-m1UI)
2018/03/05(月) 01:26:13.77ID:LCMEVuoA0 >>241
それってここに書いてある一級?
https://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%83%BD%E5%8A%9B%E8%AA%8D%E5%AE%9A%E8%A9%A6%E9%A8%93
だったら特に検定受かってなくてもそういう人だらけじゃないかな。
それってここに書いてある一級?
https://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%83%BD%E5%8A%9B%E8%AA%8D%E5%AE%9A%E8%A9%A6%E9%A8%93
だったら特に検定受かってなくてもそういう人だらけじゃないかな。
247デフォルトの名無しさん (ワッチョイ e79f-m1UI)
2018/03/05(月) 01:35:06.01ID:LCMEVuoA0 一万行ねえ。しかしあまりに行数が多くなるとするとC言語を使うこと自体が適切ではなかった可能性も出てくるよな。
あるいは何か設計がまずいか、書き方がまずいか。
何れにしてもプログラムが多くなればなるほど人間がバグを作り込んでしまう率が高くなり更に全体の把握が困難になってくる。
あるいは何か設計がまずいか、書き方がまずいか。
何れにしてもプログラムが多くなればなるほど人間がバグを作り込んでしまう率が高くなり更に全体の把握が困難になってくる。
248デフォルトの名無しさん (ワッチョイ 6704-PLqx)
2018/03/05(月) 02:35:53.76ID:FpxBMBRn0 最高効率で1万行ってやりたくないなぁ。
ぜったゲシュタルト崩壊起こす。
ぜったゲシュタルト崩壊起こす。
249デフォルトの名無しさん (ワッチョイ 4781-atej)
2018/03/05(月) 02:49:21.31ID:udBqLrh50 普段から1万行程度書いてる上級プログラマが
今から模範演技を見せてくれそうな予感
今から模範演技を見せてくれそうな予感
250デフォルトの名無しさん (ワッチョイ 7f9f-Xchi)
2018/03/05(月) 06:35:47.20ID:wW3xLIx70 int
MyFunc
(
int param
)
{
return param * param;
}
MyFunc
(
int param
)
{
return param * param;
}
251デフォルトの名無しさん (ワッチョイ bfe7-PLqx)
2018/03/05(月) 07:59:23.92ID:DUciPmz40 一万行パクった事がある。
252デフォルトの名無しさん (ワッチョイ 0723-wl/W)
2018/03/05(月) 09:53:37.62ID:9If1UATd0 行数で評価とかいまだにあるのかcobolの習慣持ち込むな
253デフォルトの名無しさん (ワッチョイ ff23-m1UI)
2018/03/05(月) 10:35:59.73ID:6dt0Sqct0 生涯ではたぶん 書いた行数より消した行数の方が多い
254デフォルトの名無しさん (アウアウカー Sabb-pjv1)
2018/03/05(月) 10:56:09.00ID:vC0ni0wma >>249
一万行の上級者様は上級者様専用スレに行ったみたいだから、実演はしてくれないだろう
一万行の上級者様は上級者様専用スレに行ったみたいだから、実演はしてくれないだろう
255デフォルトの名無しさん (ワッチョイ 2761-wl/W)
2018/03/05(月) 16:04:50.85ID:/FWFrph00 voidポインターの足し算は未定義なんだってね。
charのポインターみたいに1バイトずつ増えるからつかえると思ってた。
charのポインターみたいに1バイトずつ増えるからつかえると思ってた。
256デフォルトの名無しさん (アウウィフ FF2b-wl/W)
2018/03/05(月) 16:10:41.91ID:QTTd7ohZF どうせキャストして使うんだし
257デフォルトの名無しさん (ワッチョイ a7b3-5Piu)
2018/03/05(月) 17:54:44.07ID:V+sS+FxI0 C言語初心者向けのスレって結局ここでいいんだろうか?
258デフォルトの名無しさん (ワッチョイ 4781-atej)
2018/03/05(月) 17:59:13.03ID:udBqLrh50 いいとも
259デフォルトの名無しさん (スップ Sd7f-C52f)
2018/03/05(月) 18:07:26.38ID:VG/uZnqZd フォルダ内の複数のエクセルシートの決まったシートをtext形式1つにまとめるのって出来ます?
260デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/05(月) 18:10:45.91ID:qBuz+lExa261デフォルトの名無しさん (スププ Sdff-mvGf)
2018/03/05(月) 19:32:31.91ID:cQ8T6f3ad プリプロセッサで
#define foo(n) foo_##__typeof__(n)(n)
double a;
foo(a);
って展開したら
foo_double(a)
になって欲しかったのに
foo___typeof__(n)(n)
になりました
良い方法はないでしょうか?
#define foo(n) foo_##__typeof__(n)(n)
double a;
foo(a);
って展開したら
foo_double(a)
になって欲しかったのに
foo___typeof__(n)(n)
になりました
良い方法はないでしょうか?
262片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-dixK)
2018/03/05(月) 20:05:03.11ID:N7KbDTrZd >>261
型名の解釈は、プリプロセッサのレイヤーでは無理です。
型名の解釈は、プリプロセッサのレイヤーでは無理です。
263デフォルトの名無しさん (ワッチョイ 67b3-poP5)
2018/03/05(月) 20:09:24.78ID:SJt3Y40r0 __typeof__ って 演算子っぽいけど
(プリプロセッサ処理の段階では解釈されない:sizeof と同じで
リテラルの整数に展開されているわけではない)
(プリプロセッサ処理の段階では解釈されない:sizeof と同じで
リテラルの整数に展開されているわけではない)
264デフォルトの名無しさん (スププ Sdff-mvGf)
2018/03/05(月) 20:10:41.84ID:cQ8T6f3ad がーん
_Genericも二箇所に分けて書こうとするとredefineって言われて先に定義したほうが消えるし、ジェネリックは結構厳しいんですね……
ありがとうございます
_Genericも二箇所に分けて書こうとするとredefineって言われて先に定義したほうが消えるし、ジェネリックは結構厳しいんですね……
ありがとうございます
265デフォルトの名無しさん (ササクッテロレ Spdb-ON3X)
2018/03/05(月) 22:18:31.83ID:gAM47Ihup 1万行なんて、きちんと設計してないんじゃね?
266デフォルトの名無しさん (ワッチョイ 6704-PLqx)
2018/03/05(月) 22:28:13.08ID:FpxBMBRn0 sizeof(void)って未定義?
未定義ならそのポインタの加算幅も未定義だな。
void* p = (((void*)(&i))++);
未定義ならそのポインタの加算幅も未定義だな。
void* p = (((void*)(&i))++);
267デフォルトの名無しさん (ワッチョイ 47dc-m1UI)
2018/03/05(月) 23:16:20.23ID:THwFwnSk0 キミは正しい
268デフォルトの名無しさん (ワッチョイ e79f-8pbW)
2018/03/06(火) 03:28:05.03ID:ln7SJGum0 本当は void * に対しては足すことも引くこともできない。
269デフォルトの名無しさん (ワッチョイ 6793-fJrP)
2018/03/06(火) 06:45:37.01ID:r6wtBatS0 今ならuintptr_tにキャストして足し算引き算した後でvoid*に戻すのかな。
uintptr_t以前はchar*へのキャストだったかも知れんけど。
しかし実際のところvoid*に対してポインタを進めたり戻したりしたいって、
どういう場面で必要になるんじゃろうか?
uintptr_t以前はchar*へのキャストだったかも知れんけど。
しかし実際のところvoid*に対してポインタを進めたり戻したりしたいって、
どういう場面で必要になるんじゃろうか?
270デフォルトの名無しさん (ワッチョイ dfe3-k3ZN)
2018/03/06(火) 09:29:43.76ID:vOSWGXrq0 char *でいいじゃん
構造がわからないものはバイト列って認識でしょ?
構造がわからないものはバイト列って認識でしょ?
271デフォルトの名無しさん (ワッチョイ 4781-atej)
2018/03/06(火) 10:18:02.26ID:5/zKekdl0 分からない物を適当に扱うって、すごいな
272デフォルトの名無しさん (アウアウカー Sabb-JHL/)
2018/03/06(火) 12:31:29.65ID:aP2GFEvqa しかも符号まであると決めつけてるな
273デフォルトの名無しさん (ガックシ 068f-mvGf)
2018/03/06(火) 12:40:00.86ID:KV/wZ8PJ6 GCCとかchar*と同じ挙動じゃなかったっけ?
274デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/06(火) 12:50:23.18ID:Hdg+O/12a gccはね。
275デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/06(火) 12:54:06.75ID:Hdg+O/12a そういやポインタ演算と言うと8086用のCコンパイラはfarとか拡張キーワード作ったりして面倒だったな。TurboCだったか。
ああいうなんとも言えないCPUコンパイラだと特殊な決まりがあったりするから要注意だ。
まあ、二度とあんなの市場に出ないような気はするけどな。
ああいうなんとも言えないCPUコンパイラだと特殊な決まりがあったりするから要注意だ。
まあ、二度とあんなの市場に出ないような気はするけどな。
276デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/06(火) 12:54:48.33ID:Hdg+O/12a 用のが抜けた。CPU用の、な。
277デフォルトの名無しさん (ワッチョイ 078a-Jyeh)
2018/03/06(火) 12:56:39.10ID:3EYe6qQ70 ハーバードアーキテクチャだとdmとかpm修飾なんてのも
278デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/06(火) 13:31:13.79ID:PuW1uuBL0 farはTurbo Cに限ったことじゃない
8086用である限り必要になる
8086用である限り必要になる
279デフォルトの名無しさん (アウウィフ FF2b-wl/W)
2018/03/06(火) 14:52:33.73ID:03FKlPoEF tinyモデルでも使えるfar最強
>>279
でもコード64KBの制限はどうしようもない
でもコード64KBの制限はどうしようもない
281デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/06(火) 16:57:53.89ID:PuW1uuBL0 64KBしかいらないときに使うのがtiny
tiny使いながら64KBじゃきついとか発想が逆
だったら端っからlarge使えつーの
tiny使いながら64KBじゃきついとか発想が逆
だったら端っからlarge使えつーの
282デフォルトの名無しさん (アウウィフ FF2b-wl/W)
2018/03/06(火) 17:18:40.34ID:03FKlPoEF283デフォルトの名無しさん (ドコグロ MMff-qUXR)
2018/03/06(火) 21:11:42.80ID:0OC43do0M284デフォルトの名無しさん (ワッチョイ 67b3-poP5)
2018/03/06(火) 21:46:56.01ID:7Z5LV7MX0 整数の差分じゃなくてポインタの差分じゃろ?
285デフォルトの名無しさん (ワッチョイ df80-zeCZ)
2018/03/06(火) 21:52:27.71ID:GCrMS1Np0 char は、符号付き・符号なしの、どちらか分からないから使うな!
エラーに、-1 を使っていたら、0〜255 しか表現できない事もある
エラーに、-1 を使っていたら、0〜255 しか表現できない事もある
286デフォルトの名無しさん (ワッチョイ 078a-Jyeh)
2018/03/06(火) 21:58:50.50ID:3EYe6qQ70 >>285
9bitなの?(T_T)
9bitなの?(T_T)
287デフォルトの名無しさん (ササクッテロレ Spdb-ON3X)
2018/03/06(火) 22:17:46.38ID:3SdWrwMmp 例外を範囲外の値で判定する様なインターフェースが悪い。
はっきり戻り値は動作結果、値は出力用の引数に入れる。
みたいな設計にすべき。
ちな、C#みたいに戻り値を構造体にするって手もあるぞ。
はっきり戻り値は動作結果、値は出力用の引数に入れる。
みたいな設計にすべき。
ちな、C#みたいに戻り値を構造体にするって手もあるぞ。
288デフォルトの名無しさん (ワッチョイ df80-zeCZ)
2018/03/06(火) 23:01:01.51ID:GCrMS1Np0 素人が、char型の-1 を、エラー値に使っていると、
OS・コンパイラが変わって、その環境では、char型が0〜255 になってる
char型は、符号付き・符号なしの、どちらか分からない
OS・コンパイラが変わって、その環境では、char型が0〜255 になってる
char型は、符号付き・符号なしの、どちらか分からない
>>288
言語内の話と環境(シェルやOS)の話を混同してはならない
言語内の話と環境(シェルやOS)の話を混同してはならない
290デフォルトの名無しさん (ワッチョイ 4781-atej)
2018/03/06(火) 23:46:04.03ID:5/zKekdl0 signed char って書けば?
291デフォルトの名無しさん (ワッチョイ dff9-5eZn)
2018/03/07(水) 02:24:03.38ID:Tq6bvCAq0 >>288
charの使い方が間違っていることが問題なのであって、charを使うこと自体が悪いのではない。
charの使い方が間違っていることが問題なのであって、charを使うこと自体が悪いのではない。
292デフォルトの名無しさん (ワッチョイ 6704-jpR6)
2018/03/07(水) 02:45:29.86ID:kGjiUMXW0 はいー。
1バイト整数を使いたかったら、stdintを使いましょう。
int8_tは内部がcharかもしれないけど便宜上charではありません。
ハイ、復唱。int8_tはcharではありません。
ちなみにC++でバイト表現専用のstd::byteが入りました。すごく使いにくいけど。
1バイト整数を使いたかったら、stdintを使いましょう。
int8_tは内部がcharかもしれないけど便宜上charではありません。
ハイ、復唱。int8_tはcharではありません。
ちなみにC++でバイト表現専用のstd::byteが入りました。すごく使いにくいけど。
293デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 10:31:28.26ID:ylRgY7un0 >>282
どこか間違っているか?
どこか間違っているか?
294デフォルトの名無しさん (ワッチョイ 2761-wl/W)
2018/03/07(水) 12:28:33.48ID:maM/8pnG0 gets_sのsは何の略か教えてください。
295デフォルトの名無しさん (ワッチョイ 078a-Jyeh)
2018/03/07(水) 12:31:25.66ID:/Jrz1mw60 secure
296デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/07(水) 12:53:17.89ID:vftXHA5La297デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/07(水) 12:53:35.53ID:vftXHA5La >>295
あ、それか。
あ、それか。
298デフォルトの名無しさん (アウアウエー Sa9f-wl/W)
2018/03/07(水) 12:59:49.73ID:L+d1J7Rsa stopper
299デフォルトの名無しさん (ワッチョイ 0761-k3ZN)
2018/03/07(水) 13:42:40.79ID:r9zWShH00 昔はpc-98DOS用に作ったソフトがハード依存コードが無ければ
DOS/V機やTOWNSでも動くって聞いて驚いた。
DOS/V機やTOWNSでも動くって聞いて驚いた。
300デフォルトの名無しさん (スップ Sd7f-b+My)
2018/03/07(水) 13:49:17.29ID:9HCtzU4sd safe
301デフォルトの名無しさん (ワッチョイ df5d-W8CT)
2018/03/07(水) 16:58:54.65ID:+xlstTJJ0 N5200 で LSI C-86 試食版を使ってた……ような気がする。昔のことだから記憶が曖昧だ。
302デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 17:13:49.35ID:ylRgY7un0 vz?
303デフォルトの名無しさん (ワッチョイ 4781-atej)
2018/03/07(水) 17:14:24.12ID:GwlIl+h20 MS-DOSが動作していれば使えるはず
304デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 17:17:05.15ID:ylRgY7un0 dispelしなきゃ無理じゃね?w
305デフォルトの名無しさん (ササクッテロレ Spdb-ON3X)
2018/03/07(水) 17:21:00.28ID:XsGIcGwmp secureじゃねーだろ。
暗号化だってされてねーんだからw
safetyくらいな感じじゃね?
暗号化だってされてねーんだからw
safetyくらいな感じじゃね?
306デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/07(水) 17:25:48.32ID:Rf3JBuAda DOSのシステムコール(なんて言うんだっけ?DOSコール?忘れた)だけを呼び出しているプログラムならハードウェアが違っても動く。
しかしMS-DOSはCUIしかサボートしてないのでグラフィックスは使えない。
当時のプログラムはみんな勝手にOS無視してグラフィックスのVRAMに直接アクセスして絵を出していた。
すると当然他の機種に持っていくと意図した通りに動かない。
しかしMS-DOSはCUIしかサボートしてないのでグラフィックスは使えない。
当時のプログラムはみんな勝手にOS無視してグラフィックスのVRAMに直接アクセスして絵を出していた。
すると当然他の機種に持っていくと意図した通りに動かない。
307デフォルトの名無しさん (アウアウエー Sa9f-wl/W)
2018/03/07(水) 17:26:24.22ID:L+d1J7Rsa int21
308デフォルトの名無しさん (ワッチョイ 7fea-poP5)
2018/03/07(水) 17:27:45.62ID:rG21M89G0 INT 21H なら ファンクションコールだったかの
309デフォルトの名無しさん (ワッチョイ 4781-atej)
2018/03/07(水) 17:28:50.29ID:GwlIl+h20 伝統のCALL 5
310デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 17:29:37.78ID:ylRgY7un0 DOSCALLS.DLLてのもあったなあw
311デフォルトの名無しさん (アウアウエー Sa9f-wl/W)
2018/03/07(水) 17:55:21.18ID:L+d1J7Rsa CP/M か
0066 とかもあったっけ
0066 とかもあったっけ
312デフォルトの名無しさん (ドコグロ MM6b-qUXR)
2018/03/07(水) 19:19:15.79ID:Zw7oeE4wM313デフォルトの名無しさん (アウアウウー Sa2b-m1UI)
2018/03/07(水) 21:48:34.17ID:mAtFjoDLa super man
314デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/08(木) 05:46:05.86ID:Eav/q7cG0 #define a(b) c##b##d
というマクロでcdを出力したいのですが
a()を呼び出すとエラーになります
解決策ありますでしょうか?
というマクロでcdを出力したいのですが
a()を呼び出すとエラーになります
解決策ありますでしょうか?
315デフォルトの名無しさん (ワッチョイ fb93-ao9L)
2018/03/08(木) 07:45:03.75ID:/HWAGXcB0 >>314 俺のところはエラー出ないみたい。環境によるのかな。
コンパイラのバージョンを示せば詳しい人が現れるかも。
コンパイラのバージョンを示せば詳しい人が現れるかも。
316デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/08(木) 07:52:57.57ID:Eav/q7cG0 ありがとうございます。
解決しました。
解決しました。
317デフォルトの名無しさん (ブーイモ MM8a-7yGo)
2018/03/08(木) 08:09:34.78ID:Ed7uI0ohM どう解決したか書くのが礼儀ってもんだ。
318デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/08(木) 08:29:41.94ID:Eav/q7cG0 コンパイラーのエラーが出ないという意見をきいて
試してみたら別のところ―がエラーになっていたということでした。
そして自分が悪質なコンパイラーに騙されていたことに気づきました。
試してみたら別のところ―がエラーになっていたということでした。
そして自分が悪質なコンパイラーに騙されていたことに気づきました。
319デフォルトの名無しさん (ササクッテロレ Sp33-Y2nf)
2018/03/08(木) 09:10:26.22ID:lHBKoGy1p エラーの文章くらい読めよ。
320デフォルトの名無しさん (アウウィフ FF1f-0aB1)
2018/03/08(木) 10:10:36.36ID:ue18PqKiF Cのエラーはエラーの発生個所を教えてくれるけど原因個所は教えてくれない
321デフォルトの名無しさん (ワッチョイ cb5b-uQtz)
2018/03/08(木) 10:25:51.65ID:0lNTHbnP0 おそらく警告とエラーを混同していると思われ
> warning C4003: マクロ 'a' に指定された実引数の数が少なすぎます。
> warning C4003: マクロ 'a' に指定された実引数の数が少なすぎます。
322デフォルトの名無しさん (ワッチョイ fb93-ao9L)
2018/03/08(木) 17:10:32.81ID:/HWAGXcB0 関数型マクロの使用時、カッコの内側が空の場合に、
「引数が指定されていない」と解釈して警告を出すか、
「1個の引数(内容はヌルストリング)が指定されている」と解釈するか、
そういう問題みたいね。
「引数が指定されていない」と解釈して警告を出すか、
「1個の引数(内容はヌルストリング)が指定されている」と解釈するか、
そういう問題みたいね。
323デフォルトの名無しさん (ワッチョイ bbf2-uQtz)
2018/03/08(木) 23:40:10.76ID:nwTnwFPU0324デフォルトの名無しさん (ワッチョイ 4a5d-uQtz)
2018/03/09(金) 00:58:31.73ID:U4YZHGfl0 そういう一般仕様から外れるコンパイラの使用を強制させられたことあるの?
325デフォルトの名無しさん (ワッチョイ cb5b-uQtz)
2018/03/09(金) 06:39:09.84ID:K2/JY7Cc0 cout << typeid(__int8).name(); //char
326デフォルトの名無しさん (ササクッテロレ Sp33-Y2nf)
2018/03/09(金) 10:59:36.49ID:rlkWp7/Ip 誰だよCの話題に別言語持ち出してんの。
327デフォルトの名無しさん (ワンミングク MMda-GEnZ)
2018/03/09(金) 12:10:45.59ID:WqdE+VIZM いやらCね
328デフォルトの名無しさん (アウアウカー Sa7b-vvOV)
2018/03/09(金) 12:13:57.64ID:LlK9d7kba 頭おかC
329デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/09(金) 16:36:39.04ID:AbBnYUJz0 符号なし64ビット整数を64ビット右シフトすると
0にならないでそのままの時や変な別の値になるときがあるんですけど
コンパイラーのバグですか?
0にならないでそのままの時や変な別の値になるときがあるんですけど
コンパイラーのバグですか?
330デフォルトの名無しさん (アウアウウー Sa1f-whik)
2018/03/09(金) 17:10:28.27ID:aCtfd81Na331デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/09(金) 17:10:41.68ID:AbBnYUJz0 http://fast-uploader.com/file/7076138459666/
2つのファイルが無いと再現できなかったのでソースファイルを
アップロードしました
コンパイルしてなぜ0にならないのか教えてください。
2つのファイルが無いと再現できなかったのでソースファイルを
アップロードしました
コンパイルしてなぜ0にならないのか教えてください。
332デフォルトの名無しさん (ワッチョイ fb93-ao9L)
2018/03/09(金) 17:11:34.80ID:er4JdT2d0333デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/09(金) 17:12:19.58ID:AbBnYUJz0 コンパイラーは
gcc version 7.3.0 (Rev1, Built by MSYS2 project)
で試しました。
悪質なコンパイラーに騙されているのかもしれませんね。
gcc version 7.3.0 (Rev1, Built by MSYS2 project)
で試しました。
悪質なコンパイラーに騙されているのかもしれませんね。
334デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/09(金) 17:25:01.13ID:AbBnYUJz0 ファイル1
#include<stdio.h>
#include<stdint.h>
uint64_t f(uint8_t a,uint64_t b){
printf("%llx\n", b>>(64-a));
return b>>64-a;}
void e(uint8_t a){ f(0,0x8318318318318318);}
void g(uint8_t a){ f(a,0x8318318318318318);}
ファイル2
#include<stdint.h>
uint64_t f(uint8_t a,uint64_t b);
void g(uint8_t a);
void e(uint8_t a);
int main(void) {
g(0);
e(0);
return 0;
}
この二つのファイルをコンパイルして実行してみてください。
よろしくお願いします。
#include<stdio.h>
#include<stdint.h>
uint64_t f(uint8_t a,uint64_t b){
printf("%llx\n", b>>(64-a));
return b>>64-a;}
void e(uint8_t a){ f(0,0x8318318318318318);}
void g(uint8_t a){ f(a,0x8318318318318318);}
ファイル2
#include<stdint.h>
uint64_t f(uint8_t a,uint64_t b);
void g(uint8_t a);
void e(uint8_t a);
int main(void) {
g(0);
e(0);
return 0;
}
この二つのファイルをコンパイルして実行してみてください。
よろしくお願いします。
335デフォルトの名無しさん (ワッチョイ cb5b-uQtz)
2018/03/09(金) 17:27:15.48ID:K2/JY7Cc0 その昔、CPUのバグで16bitレジスタを32bitシフトすると0にならないとかいうのなかったっけ
336デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/09(金) 17:45:47.23ID:AbBnYUJz0 これからは64ビットのシフト使ってるコードは全てバグの温床になるな。
337デフォルトの名無しさん (ブーイモ MMd6-7yGo)
2018/03/09(金) 18:10:27.57ID:Z9n7UPH0M C11の6.5.7の3より。
If the value of the right operand is negative or is greater than or equal to the width of the promoted left operand, the behavior is undefined.
If the value of the right operand is negative or is greater than or equal to the width of the promoted left operand, the behavior is undefined.
338332 (ワッチョイ fb93-ao9L)
2018/03/09(金) 20:12:23.00ID:er4JdT2d0 >>337 フォローありがとう。この部分ですわ。
6.5.7 Bitwise shift operators ビットシフト演算子 の項。
もしも右オペランドの値が負、または汎整数拡張後の左オペランドの(ビット)幅より
大きいか等しい場合、振る舞いは未定義である。
と言った感じかな。
promoted left operand の部分が「汎整数拡張後の左オペランド」で
合ってるのか自信ないけど。
6.5.7 Bitwise shift operators ビットシフト演算子 の項。
もしも右オペランドの値が負、または汎整数拡張後の左オペランドの(ビット)幅より
大きいか等しい場合、振る舞いは未定義である。
と言った感じかな。
promoted left operand の部分が「汎整数拡張後の左オペランド」で
合ってるのか自信ないけど。
339デフォルトの名無しさん (ワッチョイ 6a80-csLy)
2018/03/09(金) 21:17:55.13ID:ysNVe5/v0 64bit 符号なしを、64bit シフトするって、そもそも無意味だろ
元のビットが残っていない。
全部のビットが変わっている!
意味があるのは、63bit まで
元のビットが残っていない。
全部のビットが変わっている!
意味があるのは、63bit まで
340デフォルトの名無しさん
2018/03/09(金) 22:22:53.87 >>339
0になってくれれば余計な分岐やら演算やらを省けるかもしれないだろ
0になってくれれば余計な分岐やら演算やらを省けるかもしれないだろ
341デフォルトの名無しさん (ワッチョイ be81-6YPG)
2018/03/09(金) 22:57:22.97ID:dpc+cSNT0 0クリアする最適な方法なの?
342デフォルトの名無しさん (ワッチョイ 6a80-csLy)
2018/03/09(金) 23:23:40.83ID:ysNVe5/v0 1010 XOR
1010
----
0000
n は任意のビットで、n XOR n で、全ビット0にできる
1010
----
0000
n は任意のビットで、n XOR n で、全ビット0にできる
343デフォルトの名無しさん
2018/03/09(金) 23:25:22.45 >>342
そんなん全ビット読まなきゃいけないじゃん
そんなん全ビット読まなきゃいけないじゃん
344デフォルトの名無しさん (ワッチョイ cf8a-GEnZ)
2018/03/09(金) 23:29:26.36ID:9IZd/e860 n and 030 とかで任意ビットのonはわからないか?
345デフォルトの名無しさん (ワッチョイ 4a5d-uQtz)
2018/03/09(金) 23:47:39.35ID:U4YZHGfl0 >0クリア
つ ゼロレジスタ
つ ゼロレジスタ
346デフォルトの名無しさん (ワッチョイ 0b9f-uQtz)
2018/03/10(土) 00:03:47.54ID:a2p+alti0 1 bit づつじわじわシフトするなら何とかなるんだけどな。
https://paiza.io/projects/D9KFwMa77ifp6AOgAaO2PQ
https://paiza.io/projects/D9KFwMa77ifp6AOgAaO2PQ
347デフォルトの名無しさん (ワッチョイ fb04-Osi7)
2018/03/10(土) 05:55:47.17ID:jel/5KgH0 定数リテラルにullって使ってなくてもだいじょうぶなんだっけ?
348デフォルトの名無しさん (ワッチョイ 3fac-3aOH)
2018/03/10(土) 12:12:18.84ID:Z1L9sOVC0 >>343
xor は少サイクルなのが利点ですね。
xor は少サイクルなのが利点ですね。
349デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/10(土) 13:08:59.94ID:qojMr6PP0 アセンブリコードの0にする方法はxorやのう
350デフォルトの名無しさん (ワッチョイ 1780-7yGo)
2018/03/10(土) 13:24:16.81ID:+HpaswK40 CPU依存すぎる
351デフォルトの名無しさん (ワッチョイ 6ab3-3fsH)
2018/03/10(土) 13:47:45.54ID:f+B2oLbA0 Z80時代の爺だろ、放置してやれ
352デフォルトの名無しさん (ワッチョイ be81-6YPG)
2018/03/10(土) 14:18:47.85ID:J/EnQN8G0 パチンコ屋さん
353デフォルトの名無しさん (ワッチョイ 6baa-Y2nf)
2018/03/10(土) 15:25:43.76ID:ps/htySn0 今じゃ乗除演算さえワンサイクルの時代に何アホな話してんだ?
354デフォルトの名無しさん (アウアウカー Sa7b-joIP)
2018/03/10(土) 16:20:41.72ID:HvD6qwC3a アセンブラについてはどうしても自分でアセンブリ言語で書かねばならない事態に陥らない限り書くことはないだろうなあ。
>>354
そうそう、printf デバッグでは力不足でもう否が応でも gdb に行くのを逃げ回っているのと同じです
そうそう、printf デバッグでは力不足でもう否が応でも gdb に行くのを逃げ回っているのと同じです
356デフォルトの名無しさん (ワッチョイ 0b9f-RK0z)
2018/03/10(土) 17:18:49.50ID:a2p+alti0 gdb は普通に使うなあ。
357デフォルトの名無しさん (アウウィフ FF1f-0aB1)
2018/03/10(土) 17:35:13.89ID:5pXC+BOTF printfなめたらいかん
358デフォルトの名無しさん (ワッチョイ 6baa-Y2nf)
2018/03/10(土) 17:41:43.93ID:ps/htySn0 割り込みん中でprintf使って暴走してデバッグが出来なかった思い出。
359デフォルトの名無しさん (ワッチョイ 0b9f-uQtz)
2018/03/10(土) 18:10:52.64ID:a2p+alti0 俺はシグナルハンドラの中でログ出力しようとして FILE * 経由で fprintf() 等で出力したら
そのライブラリの中でデッドロックしてハマった。 kill -ABRT で core dump させて gdb
で core ファイルと共に読ませてようやっと停止箇所がわかった。
そのライブラリの中でデッドロックしてハマった。 kill -ABRT で core dump させて gdb
で core ファイルと共に読ませてようやっと停止箇所がわかった。
360デフォルトの名無しさん (ブーイモ MMd6-KXGk)
2018/03/10(土) 20:11:43.97ID:fNi+2/6HM gdbマスターしてからprintデバッグバカにしてたけど
printデバッグ自動化してからprintデバッグ信者になった
無論レアケースデバッグはgdb使うけどね
printデバッグ自動化してからprintデバッグ信者になった
無論レアケースデバッグはgdb使うけどね
361デフォルトの名無しさん (ワッチョイ 0b9f-uQtz)
2018/03/11(日) 01:20:23.17ID:ry5KQfC80 printf() をデバッグで使う時はバッファリングを考慮していないとハマる事がある。
それと stdout と stderr と両方に出る可能性がある場合にその順序が食い違う可能性もある。
シグナルハンドラ内やマルチスレッドプログラムで使ってうまく行かない事もある。
その辺を全て考慮するならいいだろうが、しかし、それなら初めからログファイルに出力される
ように作った方が良いような気もする。
それと stdout と stderr と両方に出る可能性がある場合にその順序が食い違う可能性もある。
シグナルハンドラ内やマルチスレッドプログラムで使ってうまく行かない事もある。
その辺を全て考慮するならいいだろうが、しかし、それなら初めからログファイルに出力される
ように作った方が良いような気もする。
362デフォルトの名無しさん (ブーイモ MMd6-KXGk)
2018/03/11(日) 02:00:44.19ID:22CnVBlaM printデバッグなら専用モジュール作るべきだな
俺は時刻、関数名、コンテキストIDを付けて
標準出力かファイルにはかせてる
俺は時刻、関数名、コンテキストIDを付けて
標準出力かファイルにはかせてる
363デフォルトの名無しさん (ワッチョイ 8f23-0aB1)
2018/03/11(日) 09:19:44.59ID:zWe+i43K0 そこまでするならsyslog
364デフォルトの名無しさん (ワッチョイ 2e23-uQtz)
2018/03/11(日) 10:20:33.73ID:szqHStkk0 >>361
setvbuf忘れなければ済む話だよパパ
setvbuf忘れなければ済む話だよパパ
365デフォルトの名無しさん (ワッチョイ 0b9f-uQtz)
2018/03/11(日) 14:10:54.85ID:ry5KQfC80366デフォルトの名無しさん (ワッチョイ 2e23-uQtz)
2018/03/11(日) 15:06:05.16ID:szqHStkk0 >>365
ロケールがCならprintfだってスレッドセーフだしぎりぎりシグナルセーフだよパパ
ロケールがCならprintfだってスレッドセーフだしぎりぎりシグナルセーフだよパパ
367デフォルトの名無しさん (ワッチョイ 0bb5-Y2nf)
2018/03/11(日) 15:33:10.91ID:UYIqocxw0 世の中には完全なCライブラリを実装していないタイニーなマシン用のサブセットだってあるんだよ坊や。
368デフォルトの名無しさん (ワッチョイ 23b3-lJdD)
2018/03/11(日) 16:08:45.67ID:sEfAJdP70 それはCじゃないから、このスレで話し合っても無駄では。
369デフォルトの名無しさん (ワッチョイ 0bb5-Y2nf)
2018/03/11(日) 16:12:01.01ID:UYIqocxw0 Cは言語仕様であって、ライブラリ仕様は別枠だろ?
370デフォルトの名無しさん (ワッチョイ be81-uQtz)
2018/03/11(日) 16:46:35.93ID:iUqzSqql0 30年以上前だったかな、あるメーカーのプリンタファーム開発用Cコンパイラが配列要素上限が255だった
当時アスキーネットでこれを聞いたvoid氏が呆れていたようだ。
当時アスキーネットでこれを聞いたvoid氏が呆れていたようだ。
371デフォルトの名無しさん (ワッチョイ 23b3-lJdD)
2018/03/11(日) 17:10:10.38ID:sEfAJdP70 インストラクションに8ビットまでの即値を組み込めるなら、その制限によって(そのような最適化が必要なプロセッサにとって)強烈な最適化をかけられるから、アリやナシやと問われればアリのような感がある。
372デフォルトの名無しさん (ワッチョイ 7e32-uQtz)
2018/03/11(日) 17:20:27.39ID:Dtt3qpb50 Cライクって言っときゃいいのにCと名乗ってしまうから
イチャモンつけたいヤツの標的になる
イチャモンつけたいヤツの標的になる
373デフォルトの名無しさん (ワッチョイ 23b3-lJdD)
2018/03/11(日) 17:33:57.41ID:sEfAJdP70 本場ドイツ直輸入ポークソーセージを買ったら魚肉ソーセージだったような感じですね。
つまり詐欺です。
つまり詐欺です。
374デフォルトの名無しさん (ワッチョイ 2e23-uQtz)
2018/03/11(日) 17:36:14.99ID:szqHStkk0 >>369
それ言ったらバッファリングの話題もCの話にならないだろぉオヤジィ
それ言ったらバッファリングの話題もCの話にならないだろぉオヤジィ
375デフォルトの名無しさん (ワッチョイ be81-uQtz)
2018/03/11(日) 17:37:59.08ID:iUqzSqql0 何が正当な教義かについて議論したければ、上級者スレでやってね
376デフォルトの名無しさん (ワッチョイ 23b3-lJdD)
2018/03/11(日) 18:04:00.35ID:sEfAJdP70 こういう掲示板で宗教対決を規制したら過疎化するんじゃないだろか。
377デフォルトの名無しさん
2018/03/11(日) 18:26:39.19 >>370
まるでUvaみたいな制限だな(藁
まるでUvaみたいな制限だな(藁
378デフォルトの名無しさん (ワッチョイ cf8a-GEnZ)
2018/03/11(日) 18:45:46.67ID:QedwXA9H0379デフォルトの名無しさん (ワッチョイ cf8a-GEnZ)
2018/03/11(日) 18:48:04.93ID:QedwXA9H0380デフォルトの名無しさん (アウアウエー Sae2-0aB1)
2018/03/11(日) 20:24:48.92ID:1mhcZmSWa >>372
セントロニクス
セントロニクス
381デフォルトの名無しさん (ワッチョイ 7e32-uQtz)
2018/03/11(日) 21:13:40.31ID:Dtt3qpb50 5Vシングルエンドがそのままコネクタに出てるアレか
アレを基板に直付けするアフォが多くて頭クラクラした
アレを基板に直付けするアフォが多くて頭クラクラした
382デフォルトの名無しさん (ワッチョイ 6ac6-lLam)
2018/03/11(日) 23:26:14.78ID:3FTmPjnp0 for(i=0;i<10;i++)
scanf("%d",&num[i])
で入力した変数がiに入ってしまうことがあるのですがなぜですか?
scanf("%d",&num[i])
で入力した変数がiに入ってしまうことがあるのですがなぜですか?
383デフォルトの名無しさん (ブーイモ MM97-7yGo)
2018/03/11(日) 23:59:04.31ID:Sn9rQkOCM numのサイズが10ないとか。
384デフォルトの名無しさん (ワッチョイ eae3-hn8E)
2018/03/12(月) 00:02:45.79ID:9wDOvV2B0 ソース全部晒せ
385デフォルトの名無しさん (ワッチョイ 26e7-Osi7)
2018/03/12(月) 07:51:36.03ID:6B2Hj+UH0 do whileはいらない子?
386デフォルトの名無しさん (ブーイモ MM97-7yGo)
2018/03/12(月) 08:04:24.78ID:uoSNo/WDM アルゴリズムによってはdo whileの方が素直なときがある。まれだが。マクロを本当の関数っぽく使うのにdo while (0)使うハックがある。まれだが。
コンパイラによってはdo whileの方が速いコード出す。まれだが。
コンパイラによってはdo whileの方が速いコード出す。まれだが。
387デフォルトの名無しさん (ドコグロ MMbb-3fsH)
2018/03/12(月) 08:36:16.07ID:SpziwmuNM388デフォルトの名無しさん (ワッチョイ 2fe9-uQtz)
2018/03/12(月) 09:25:52.84ID:kO6Vn+sG0389デフォルトの名無しさん (ワッチョイ 0bb5-Y2nf)
2018/03/12(月) 09:30:32.07ID:Cd8AY8RG0 do〜whileは、必ず一回は処理してくれるから便利。
390デフォルトの名無しさん (ワッチョイ 2fe9-uQtz)
2018/03/12(月) 09:31:53.62ID:kO6Vn+sG0 繰り返し対象処理が実行される条件がブレるから気をつけないといけないけどね
391デフォルトの名無しさん (ワッチョイ fb04-Osi7)
2018/03/12(月) 10:16:52.94ID:Igle62xq0 do{continue;}while(false); で無限ループになるのウケる。
392デフォルトの名無しさん (ワッチョイ 2fe9-uQtz)
2018/03/12(月) 10:19:34.77ID:kO6Vn+sG0 391 error: undeclared symbol 'false'
393デフォルトの名無しさん (アウアウウー Sa1f-whik)
2018/03/12(月) 10:42:19.80ID:wLVR4ID4a >>389
女に見習わせたいな
女に見習わせたいな
394デフォルトの名無しさん (ワッチョイ 8f23-0aB1)
2018/03/12(月) 12:03:54.32ID:A4+OWJSs0 こんな書き方たまにする
do{
・・・
条件
break;
・・・
条件
break;
・・・
条件
continue;
・・・
条件
break;
・・・
条件
continue;
・・・
}while(0);
do{
・・・
条件
break;
・・・
条件
break;
・・・
条件
continue;
・・・
条件
break;
・・・
条件
continue;
・・・
}while(0);
395デフォルトの名無しさん (ワッチョイ be81-uQtz)
2018/03/12(月) 12:10:22.44ID:rLGzoMUT0396デフォルトの名無しさん (ワッチョイ fb04-Osi7)
2018/03/12(月) 12:11:48.84ID:Igle62xq0397デフォルトの名無しさん (ワッチョイ beea-mjGY)
2018/03/12(月) 15:52:19.83ID:bCYSOHOV0 B 判定 A B 判定 A B … みたいに
do { } while () のブロックの途中に飛び込んで開始するようなのが悩ましい
goto ENTER;
do {
A();
ENTER:
B();
} while(条件);
do { } while () のブロックの途中に飛び込んで開始するようなのが悩ましい
goto ENTER;
do {
A();
ENTER:
B();
} while(条件);
398デフォルトの名無しさん (JP 0H9b-7yGo)
2018/03/12(月) 17:04:49.51ID:Ro63JAiYH 出口が複数は可だけどエントリーポイントが変なとこにあるのは読みにくいからやめたほうがいい。
この例の場合はB Aの無限ループにして、Bのあとの条件で脱出するのが定石。
この例の場合はB Aの無限ループにして、Bのあとの条件で脱出するのが定石。
399デフォルトの名無しさん (ワッチョイ beea-mjGY)
2018/03/12(月) 17:15:21.51ID:bCYSOHOV0 for(;;) {
B();
if (条件) break;
A();
};
こんな感じですか。
やっぱり頭から入っていくほうが読みやすいし…
B();
if (条件) break;
A();
};
こんな感じですか。
やっぱり頭から入っていくほうが読みやすいし…
400デフォルトの名無しさん (ワッチョイ be81-uQtz)
2018/03/12(月) 17:24:28.52ID:rLGzoMUT0 処理内容がそうならそういうことなんだろうが、
見ていて気持ちが悪くなるロジックだな、すまん
見ていて気持ちが悪くなるロジックだな、すまん
401デフォルトの名無しさん (ワッチョイ 2fe9-uQtz)
2018/03/12(月) 17:31:42.39ID:kO6Vn+sG0 エントリーポイントが変なとこって、mainだって1行目にはまずならないしな
実装されることなく廃止になったキーワードにentryつーのがあって
そいつがおそらくは1行目に
entry main;
とか持ってこれるようにするつもりだったのかもな
実装されることなく廃止になったキーワードにentryつーのがあって
そいつがおそらくは1行目に
entry main;
とか持ってこれるようにするつもりだったのかもな
402デフォルトの名無しさん (アウアウカー Sa7b-joIP)
2018/03/12(月) 17:41:10.71ID:mlDQMbRTa >>397
昔の BASIC を思い起こさせる goto の使い方だなw
昔の BASIC を思い起こさせる goto の使い方だなw
403デフォルトの名無しさん (アウーイモ MM1f-swbP)
2018/03/12(月) 17:58:00.69ID:DBOT0xK9M gotoは禁止はしないが、異常系の終了処理にジャンプするパターンだけ許容だな。
404デフォルトの名無しさん (アウウィフ FF1f-0aB1)
2018/03/12(月) 18:04:50.67ID:FajbO2mAF exceptionさえあれば
405デフォルトの名無しさん (ワッチョイ beea-mjGY)
2018/03/12(月) 18:06:32.58ID:bCYSOHOV0 コンストラクター/デストラクターのような機構があれば
異常時の後始末は割と楽に書けるっすね
異常時の後始末は割と楽に書けるっすね
406デフォルトの名無しさん (アウウィフ FF1f-0aB1)
2018/03/12(月) 18:09:46.06ID:FajbO2mAF atexit()はあるぞ
407デフォルトの名無しさん (ワッチョイ be81-uQtz)
2018/03/12(月) 18:25:47.87ID:rLGzoMUT0 異常の場合は,例外処理をしてから続行したい
408デフォルトの名無しさん (ワッチョイ cf8a-GEnZ)
2018/03/12(月) 19:11:12.71ID:HQXq1VOq0 つ setjmp
409デフォルトの名無しさん (アウーイモ MM1f-swbP)
2018/03/12(月) 19:32:23.64ID:6OIrRNruM >>408
volatileをつけ忘れて最適化で暴走するなんてよくあること。
volatileをつけ忘れて最適化で暴走するなんてよくあること。
410デフォルトの名無しさん (ドコグロ MMbb-3fsH)
2018/03/12(月) 20:42:20.27ID:SpziwmuNM >>395
1995年頃でLBPだと16bitから32bit CPUに移行する頃だから配列サイズが最大255なんて言うのはさすがに見たことないわ
ちなみにうちはSH-2+独自モニタからR3000+VxWorksへの移行期だった
コンパイラもチップベンダーかOSベンダーのものを使ってた
1995年頃でLBPだと16bitから32bit CPUに移行する頃だから配列サイズが最大255なんて言うのはさすがに見たことないわ
ちなみにうちはSH-2+独自モニタからR3000+VxWorksへの移行期だった
コンパイラもチップベンダーかOSベンダーのものを使ってた
411デフォルトの名無しさん (ササクッテロレ Sp33-Y2nf)
2018/03/12(月) 21:14:21.91ID:hz29p2j/p gotoを後始末以外の使い方して変な所に飛ばしたりするから禁止って言われるんだよな。
412デフォルトの名無しさん (ワッチョイ 2fe9-uQtz)
2018/03/12(月) 22:09:38.43ID:kO6Vn+sG0 昔のBASICにはON ERROR GOTOとかON ERROR GOSUBつーのがあって
異常系から復帰できたんだよな、それがCやC++にはない
異常系から復帰できたんだよな、それがCやC++にはない
413デフォルトの名無しさん (ワッチョイ be81-uQtz)
2018/03/12(月) 22:12:32.16ID:rLGzoMUT0 setjmp longjmp
414デフォルトの名無しさん (ワッチョイ 2fe9-uQtz)
2018/03/12(月) 22:16:55.21ID:kO6Vn+sG0 RESUME NEXTに相当する処理はsetjmp.hにはない
415デフォルトの名無しさん (ワッチョイ 7ee9-NINk)
2018/03/12(月) 23:49:45.06ID:+NwoaeJY0 gfortranで言うところのfcheck=allを設定した時のように配列の範囲外アクセスを検知したいのですが、いい方法はありますか?
416デフォルトの名無しさん (ワッチョイ cf8a-GEnZ)
2018/03/13(火) 00:26:13.95ID:zisSqBer0 boundschecker 使えばよろし
417デフォルトの名無しさん (ワッチョイ 7ee9-NINk)
2018/03/13(火) 00:43:16.47ID:LMrPxj1+0 Linuxなので代用を探していたらvalgrindに辿り着きました
ありがとうございます
ありがとうございます
418デフォルトの名無しさん (ワッチョイ fb04-Osi7)
2018/03/13(火) 03:11:31.37ID:a0aOTtHi0 大域ジャンプはダメだ。
419デフォルトの名無しさん (ワッチョイ 8f61-hn8E)
2018/03/13(火) 07:50:52.88ID:H/7hRIr60 初期化
タイトル
...
GOTO 本編
GAME OVER
...
GOTO タイトル
ゲーム本編
...
GOTO GAME OVER
タイトル
...
GOTO 本編
GAME OVER
...
GOTO タイトル
ゲーム本編
...
GOTO GAME OVER
420デフォルトの名無しさん (ワッチョイ fb04-Osi7)
2018/03/13(火) 08:44:52.34ID:a0aOTtHi0 >>419
よくあるダメなゴトーさん。
よくあるダメなゴトーさん。
421デフォルトの名無しさん (アウアウカー Sa7b-joIP)
2018/03/13(火) 10:00:11.49ID:mZm9h8PZa >>412
まあ、ないけど、エラーになったら自分でif文使って分岐すれば良いだけでは?
C言語は単に言語レベルでのそういう便利機能が少ないってだけで実現する方法は内部的な動作まで考えたら結局は同じにしかならんと思うよ、
まあ、ないけど、エラーになったら自分でif文使って分岐すれば良いだけでは?
C言語は単に言語レベルでのそういう便利機能が少ないってだけで実現する方法は内部的な動作まで考えたら結局は同じにしかならんと思うよ、
422デフォルトの名無しさん (ササクッテロレ Sp33-Y2nf)
2018/03/13(火) 10:29:21.12ID:FbdkMN9Up C言語はマクロアセンブラから派生した感じなんで、言語体系はお世話にも良いとは言えないんだよな。
当時はマシン語で演算結果フラグで条件ジャンプや条件コールしてた煩わしさから開放されただけでも有り難かったんだ。
そんなチープな言語にオブジェクト指向だの例外処理だのとか求めて迷走したのがC++
ええい、いっそ作り直してしまえって出したのがJavaやC#
だからC言語使う時点で諦めれ。
当時はマシン語で演算結果フラグで条件ジャンプや条件コールしてた煩わしさから開放されただけでも有り難かったんだ。
そんなチープな言語にオブジェクト指向だの例外処理だのとか求めて迷走したのがC++
ええい、いっそ作り直してしまえって出したのがJavaやC#
だからC言語使う時点で諦めれ。
423デフォルトの名無しさん (ワッチョイ cb38-uQtz)
2018/03/13(火) 11:04:12.06ID:92t/zLSk0 >>421
そのif文でゴチャゴチャしだしたら「例外処理」を名乗れない
そのif文でゴチャゴチャしだしたら「例外処理」を名乗れない
424デフォルトの名無しさん (ワッチョイ fb04-Osi7)
2018/03/13(火) 11:54:23.49ID:a0aOTtHi0 基本的にウオーターフォールを守るのが大事やな。
そのうえでどこに飛びたいかって感じ。
そのうえでどこに飛びたいかって感じ。
425デフォルトの名無しさん
2018/03/13(火) 12:12:14.52 フォールウオーバー機構を言語レベルで用意すべき
426デフォルトの名無しさん (ワッチョイ fb04-Osi7)
2018/03/13(火) 12:16:24.04ID:a0aOTtHi0427デフォルトの名無しさん (アウーイモ MM1f-swbP)
2018/03/13(火) 12:26:22.54ID:CTGLDN6cM 漢字で書くと闘婆
428デフォルトの名無しさん (アウアウカー Sa7b-joIP)
2018/03/13(火) 13:00:28.56ID:5qOlO1LIa429デフォルトの名無しさん (ワッチョイ cb38-uQtz)
2018/03/13(火) 13:12:03.18ID:92t/zLSk0430デフォルトの名無しさん (ワンミングク MMda-GEnZ)
2018/03/13(火) 13:20:12.96ID:lXm9DcKjM SIGUSR1/2じゃ駄目なのか?
431デフォルトの名無しさん (アウアウカー Sa7b-joIP)
2018/03/13(火) 15:58:05.78ID:LC30GjQRa >>429
議論?何の?新言語の?
議論?何の?新言語の?
432デフォルトの名無しさん (ワッチョイ cb38-uQtz)
2018/03/13(火) 16:39:07.67ID:92t/zLSk0 >>431
いいよ、無理に話さなくて
いいよ、無理に話さなくて
433デフォルトの名無しさん (ブーイモ MM3f-KXGk)
2018/03/13(火) 19:35:09.64ID:WMMjj2eHM 聞く耳持たんらC
434デフォルトの名無しさん (ドコグロ MM22-3fsH)
2018/03/13(火) 20:04:26.12ID:/ChP+Vc3M 突っ込まれて遁走だろ w
435デフォルトの名無しさん (ワッチョイ 0b9f-uQtz)
2018/03/14(水) 02:09:35.30ID:IiyiuIPr0 ここで幾ら議論してもC言語は変わらない。
Cから派生した言語を新たに作るというのであれば議論することには意味があるだろうが、そうでないならそれはただの愚痴だ。
Cから派生した言語を新たに作るというのであれば議論することには意味があるだろうが、そうでないならそれはただの愚痴だ。
436デフォルトの名無しさん (ワッチョイ ea6e-uQtz)
2018/03/14(水) 06:44:38.33ID:4nqAllCK0 おまえさあCの例外処理が言語のビルトインとか思っているわけ?
Cは変わらないとか言っちゃってるけど、
その現状のCがわかってないのに変わったかどうか気付けるのか?
Cは変わらないとか言っちゃってるけど、
その現状のCがわかってないのに変わったかどうか気付けるのか?
437デフォルトの名無しさん (ワッチョイ fb04-Osi7)
2018/03/14(水) 07:02:59.95ID:M7iHvccR0 一応errnoだったかっていう、失敗理由を示す変数がある事はある。忘れられてるけど。
C言語で唯一トラブルシューティングに使える変数。
C言語で唯一トラブルシューティングに使える変数。
438デフォルトの名無しさん (ドコグロ MM22-3fsH)
2018/03/14(水) 08:03:51.30ID:ylQhqnt4M439デフォルトの名無しさん (ワッチョイ ea6e-uQtz)
2018/03/14(水) 08:15:23.77ID:4nqAllCK0 errnoだってwww あれが例外処理なのか
setjmpがどうとんでもないのか具体的には言えないんだろうな
だから聞かない
setjmpがどうとんでもないのか具体的には言えないんだろうな
だから聞かない
440デフォルトの名無しさん (ワッチョイ fb04-Osi7)
2018/03/14(水) 08:25:02.15ID:M7iHvccR0 >>439
大域ジャンプするとエラー処理したところが戻ったりして変数グチャグチャになることがあるからな。
まぁ、C++の例外も大域ジャンプだし。個人的には使わないな。
古き良き-1やら_boolであきらめる方が精神的には良い。
んで、趣味位のケースなら正常系だけ書いておけば大体問題ない。
エラー系は大体ロジックエラーだからデバッグで落とす。
大域ジャンプするとエラー処理したところが戻ったりして変数グチャグチャになることがあるからな。
まぁ、C++の例外も大域ジャンプだし。個人的には使わないな。
古き良き-1やら_boolであきらめる方が精神的には良い。
んで、趣味位のケースなら正常系だけ書いておけば大体問題ない。
エラー系は大体ロジックエラーだからデバッグで落とす。
441デフォルトの名無しさん (ドコグロ MM22-3fsH)
2018/03/14(水) 08:29:46.90ID:ylQhqnt4M442デフォルトの名無しさん (スフッ Sd8a-nIhD)
2018/03/14(水) 08:31:33.24ID:6wuH32OAd 高級アセンブラの名前は伊達ではないよね。
443デフォルトの名無しさん (ワッチョイ fb04-Osi7)
2018/03/14(水) 08:32:17.72ID:M7iHvccR0 あれジャンプじゃなくて、スタックロールバックだからな。どっちかっていうとリセットの類。
他の言語でこれは実装できない。というかやりたくはないだろう。
他の言語でこれは実装できない。というかやりたくはないだろう。
444デフォルトの名無しさん (ワッチョイ fb04-Osi7)
2018/03/14(水) 08:35:45.72ID:M7iHvccR0 大域ジャンプ+動的メモリアローケート。あぁおそろしい。
なので、大域ジャンプはやめましょう。
なので、大域ジャンプはやめましょう。
445デフォルトの名無しさん (ドコグロ MM22-3fsH)
2018/03/14(水) 08:37:30.11ID:ylQhqnt4M >>440
> 大域ジャンプするとエラー処理したところが戻ったりして変数グチャグチャになることがあるからな。
それはお前の能力が足りないだけの話だろ w
> まぁ、C++の例外も大域ジャンプだし。
C++はデストラクタとかの処理も要るからライブラリレベルでは実現できない
そう言う処理を全てプログラマに押し付けられるC言語だからできるってことでもある
> 大域ジャンプするとエラー処理したところが戻ったりして変数グチャグチャになることがあるからな。
それはお前の能力が足りないだけの話だろ w
> まぁ、C++の例外も大域ジャンプだし。
C++はデストラクタとかの処理も要るからライブラリレベルでは実現できない
そう言う処理を全てプログラマに押し付けられるC言語だからできるってことでもある
446デフォルトの名無しさん (ワッチョイ fb04-Osi7)
2018/03/14(水) 08:41:34.04ID:M7iHvccR0447デフォルトの名無しさん (ワッチョイ fb04-Osi7)
2018/03/14(水) 08:45:22.60ID:M7iHvccR0 C++のクラス機構をライブラリで実装するときは、構文糖入れたりとか、イベントモデル入れたりとか。
エネルギーばかりかかって収穫がない。
エネルギーばかりかかって収穫がない。
448デフォルトの名無しさん (アウアウウー Sa1f-uQtz)
2018/03/14(水) 09:25:24.96ID:ZphqLecba >>436
Cには言語レベルでの例外処理はないのでは?何のことを指してそう言っているのか?
Cには言語レベルでの例外処理はないのでは?何のことを指してそう言っているのか?
449デフォルトの名無しさん (ワッチョイ 0bb5-Y2nf)
2018/03/14(水) 09:28:14.80ID:ooB4nY3v0 Cにだって例外処理はある。
でもそれって、CPUの例外割り込みの事だけどね。
あー結局言語仕様じゃ無いじゃんw
でもそれって、CPUの例外割り込みの事だけどね。
あー結局言語仕様じゃ無いじゃんw
450デフォルトの名無しさん (アウアウウー Sa1f-uQtz)
2018/03/14(水) 09:29:50.23ID:ZphqLecba >>449
ほら。ないよな?
ほら。ないよな?
451デフォルトの名無しさん (アウアウウー Sa1f-uQtz)
2018/03/14(水) 09:32:49.61ID:ZphqLecba 割り込みっていうならシグナルがあるがしかしOSの問題だよな?
てか標準じゃないか。それにシグナルのために特別な言語仕様が作られてもいない。
てか標準じゃないか。それにシグナルのために特別な言語仕様が作られてもいない。
452デフォルトの名無しさん (ワッチョイ 0bb5-Y2nf)
2018/03/14(水) 09:35:13.20ID:ooB4nY3v0 所詮Cは高級アセンブラだからなぁ
453デフォルトの名無しさん (ワッチョイ ea6e-uQtz)
2018/03/14(水) 10:19:21.23ID:4nqAllCK0 >>441
現状のCの話じゃなかったのか?
なんで他の言語が出てくるんだ
俺はてっきりsetjmpの仕様がとんでもないと言っているのかと思ったが
実装方法がとんでもないと言っているのか?
あれか動作保証のないマイクロ診断命令でも使っていると言いたいの?
現状のCの話じゃなかったのか?
なんで他の言語が出てくるんだ
俺はてっきりsetjmpの仕様がとんでもないと言っているのかと思ったが
実装方法がとんでもないと言っているのか?
あれか動作保証のないマイクロ診断命令でも使っていると言いたいの?
454デフォルトの名無しさん (ワッチョイ ea6e-uQtz)
2018/03/14(水) 10:20:28.21ID:4nqAllCK0455デフォルトの名無しさん (ワッチョイ fb93-ao9L)
2018/03/14(水) 11:44:11.11ID:jowRUKsS0 何やら雰囲気が悪くなってるように感じるけど、カレンダー絡みかな。
456デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 12:08:39.92ID:L/3+Hz1H0 やたら突っかかってくるやつを構ってやっているだけだが
457デフォルトの名無しさん (アウアウカー Sa7b-joIP)
2018/03/14(水) 12:22:56.52ID:e7inwI4na >>454
知らんなあ。Cの例外処理ってなんなの?
知らんなあ。Cの例外処理ってなんなの?
458デフォルトの名無しさん (ワッチョイ be81-uQtz)
2018/03/14(水) 12:24:13.25ID:y6ADsCAy0 ここは遊び場ではありません
459デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 12:52:15.53ID:L/3+Hz1H0460デフォルトの名無しさん (アウアウカー Sa7b-joIP)
2018/03/14(水) 12:53:42.74ID:e7inwI4na >>459
何のことなのかぜひ書いてくれ。
何のことなのかぜひ書いてくれ。
461デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 12:53:55.90ID:L/3+Hz1H0 人の話の腰を折ることに専念せざるを得ない防戦一方なつまらんやつ
462デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 12:55:02.45ID:L/3+Hz1H0463デフォルトの名無しさん (ドコグロ MM22-3fsH)
2018/03/14(水) 12:55:16.50ID:x85VLsABM464デフォルトの名無しさん (ドコグロ MM22-3fsH)
2018/03/14(水) 12:58:38.88ID:x85VLsABM >>453
> 現状のCの話じゃなかったのか?
> なんで他の言語が出てくるんだ
どんだけ理解力がないんだよ...
> 俺はてっきりsetjmpの仕様がとんでもないと言っているのかと思ったが
> 実装方法がとんでもないと言っているのか?
だから他の言語ではライブラリでは実装しづらい機能って話な
> あれか動作保証のないマイクロ診断命令でも使っていると言いたいの?
背伸びしてマイクロ診断命令とか言い出すとか w
> 現状のCの話じゃなかったのか?
> なんで他の言語が出てくるんだ
どんだけ理解力がないんだよ...
> 俺はてっきりsetjmpの仕様がとんでもないと言っているのかと思ったが
> 実装方法がとんでもないと言っているのか?
だから他の言語ではライブラリでは実装しづらい機能って話な
> あれか動作保証のないマイクロ診断命令でも使っていると言いたいの?
背伸びしてマイクロ診断命令とか言い出すとか w
465デフォルトの名無しさん (アウアウカー Sa7b-joIP)
2018/03/14(水) 13:00:11.52ID:e7inwI4na もしやこんなやつの事を言ってるのか?
http://d.hatena.ne.jp/htz/touch/20090216/1234774418
http://d.hatena.ne.jp/htz/touch/20090216/1234774418
466デフォルトの名無しさん (アウアウカー Sa7b-joIP)
2018/03/14(水) 13:02:30.29ID:e7inwI4na 自作関数からのlongjmp()利用するなら似たようなものは作れるが、それは言語レベルで例外処理をサポートしている状態とは違う。
467デフォルトの名無しさん (アウアウカー Sa7b-joIP)
2018/03/14(水) 13:02:58.32ID:e7inwI4na >>462
言ったぞ。早く書け。
言ったぞ。早く書け。
468デフォルトの名無しさん (アウアウカー Sa7b-joIP)
2018/03/14(水) 13:04:49.57ID:e7inwI4na あ、関係ないけどホーキング博士が死んだという速報が入った。
469デフォルトの名無しさん (ワッチョイ fb04-Osi7)
2018/03/14(水) 13:35:20.49ID:M7iHvccR0 >>463
大域ジャンプなんぞつかわんので。GOTOくらいは使うけど。
戻った変数と戻ってない変数把握するの無駄すぎる。
んで、どうやってって関数かくときにifで入力要件位書くだろ。無駄な引数減らしたりとか。
大域ジャンプなんぞつかわんので。GOTOくらいは使うけど。
戻った変数と戻ってない変数把握するの無駄すぎる。
んで、どうやってって関数かくときにifで入力要件位書くだろ。無駄な引数減らしたりとか。
470デフォルトの名無しさん (ワッチョイ cf8a-GEnZ)
2018/03/14(水) 13:43:20.07ID:Ul+PcfeA0 HDLCの状態遷移を大域jump無しで書くのは大変だろうなぁ
471デフォルトの名無しさん (ワッチョイ fb04-Osi7)
2018/03/14(水) 13:48:42.43ID:M7iHvccR0 さぁ、未経験だからね。
>>468
うん、確認した
うん、確認した
473デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 14:51:40.09ID:L/3+Hz1H0 >>467
そんな約束してねえぞゲーハー
そんな約束してねえぞゲーハー
474デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 14:54:07.64ID:L/3+Hz1H0475デフォルトの名無しさん (アウウィフ FF1f-0aB1)
2018/03/14(水) 15:26:30.92ID:2cAisCwCF476デフォルトの名無しさん (アウアウカー Sa7b-joIP)
2018/03/14(水) 17:04:58.74ID:buZ+p9lOa >>473
早く書けよ。こっちゃあ昼からずっと回ってワンワン言いっぱなしなんだからよ。もう千回ぐらい回ったぞ。
早く書けよ。こっちゃあ昼からずっと回ってワンワン言いっぱなしなんだからよ。もう千回ぐらい回ったぞ。
477デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 17:08:34.94ID:L/3+Hz1H0478デフォルトの名無しさん (アウアウカー Sa7b-joIP)
2018/03/14(水) 17:14:31.52ID:buZ+p9lOa 他の人でこいつの言うことわかってるやつ居るのか?
479デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 17:24:39.97ID:L/3+Hz1H0 犬に邪魔されて説明どころではない状態だからなあ
480デフォルトの名無しさん (JP 0H9b-7yGo)
2018/03/14(水) 18:08:46.89ID:m9sKyebjH 情報持ってるふりして出し惜しみするのがマウンティングの基本
481デフォルトの名無しさん (アウウィフ FF1f-0aB1)
2018/03/14(水) 18:24:47.12ID:2cAisCwCF 朝日新聞ですねわかります
482デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 18:29:37.08ID:L/3+Hz1H0 煽れば出ると本気で思っているならやってみな
この程度の話、マジこの程度にも付いて来れないアホの泣き声は物笑いの種だぜ
この程度の話、マジこの程度にも付いて来れないアホの泣き声は物笑いの種だぜ
483デフォルトの名無しさん (ドコグロ MM22-3fsH)
2018/03/14(水) 18:30:37.68ID:uMO7yRavM484デフォルトの名無しさん (ドコグロ MM22-3fsH)
2018/03/14(水) 18:32:36.61ID:uMO7yRavM485デフォルトの名無しさん (アウアウカー Sa7b-joIP)
2018/03/14(水) 18:41:41.61ID:buZ+p9lOa ま、どうでもいいから>>436で書いたC言語の例外処理についてどういうものなのか書けよ。
486デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 18:52:07.48ID:L/3+Hz1H0487デフォルトの名無しさん (アウアウカー Sa7b-joIP)
2018/03/14(水) 19:21:46.36ID:buZ+p9lOa わかったわかった。もう書かなくていいよ。かわいそうなやつだな。合掌。
488デフォルトの名無しさん (ガックシ 06e6-NINk)
2018/03/14(水) 19:45:37.85ID:IogLKo4e6 ID:L/3+Hz1H0に構うな
489デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 21:53:59.94ID:L/3+Hz1H0 収穫ゼロで引き下がる、みじめなヤツw
490デフォルトの名無しさん (スップ Sdb7-fYnq)
2018/03/15(木) 06:38:35.49ID:z1/gBAj5d Cでエクセルの指定シートだけテキスト化できます?
491デフォルトの名無しさん
2018/03/15(木) 07:11:47.68 >>490
できますん
Excelがインストールされている環境で動かす前提であれば
COMコンポーネント (Microsoft Excel Object Library) を使えばいいが
C++じゃないとダメかも
自前でExcelフォーマットを解析して変換することも
膨大な工数を費やせば理論的にはできるだろうが
現実的には選択肢に入らないな
xlsx限定ならまだ楽かも知れんが
Excelを扱う部分は他の言語で開発してCからはそれを呼び出すのが普通かな
できますん
Excelがインストールされている環境で動かす前提であれば
COMコンポーネント (Microsoft Excel Object Library) を使えばいいが
C++じゃないとダメかも
自前でExcelフォーマットを解析して変換することも
膨大な工数を費やせば理論的にはできるだろうが
現実的には選択肢に入らないな
xlsx限定ならまだ楽かも知れんが
Excelを扱う部分は他の言語で開発してCからはそれを呼び出すのが普通かな
492デフォルトの名無しさん (ドコグロ MMeb-tgc5)
2018/03/15(木) 07:16:10.04ID:BwZLx9bwM493デフォルトの名無しさん (ワッチョイ 5b9f-SmQe)
2018/03/15(木) 07:53:33.32ID:/GlmcHqY0 Cにあっていると思う
バイナリを呼んでキャストして
キャスト後も分岐ルートが色々あって
構造体はほとんど可変長
細かいものを組み上げるのは、たぶん Cが最適
バイナリを呼んでキャストして
キャスト後も分岐ルートが色々あって
構造体はほとんど可変長
細かいものを組み上げるのは、たぶん Cが最適
494デフォルトの名無しさん (ササクッテロロ Spe9-N79+)
2018/03/15(木) 09:54:54.80ID:W95zVRhkp FIFO(名前付きパイプ)で、大量データを分割して送受信したいです。
送信側
---------------------------
buff=malloc(datalen);
len=512;
pos=0;
do{
w=write(fifo,buff+pos,len);
pos+=w
datalen-=w
len=datalen < 512 ? datalen : 512
}while(0<datalen)
---------------------
こんなんでok?
送信側
---------------------------
buff=malloc(datalen);
len=512;
pos=0;
do{
w=write(fifo,buff+pos,len);
pos+=w
datalen-=w
len=datalen < 512 ? datalen : 512
}while(0<datalen)
---------------------
こんなんでok?
495デフォルトの名無しさん (ワッチョイ d7ea-fr1+)
2018/03/15(木) 10:35:33.07ID:v5sVsR9k0 ・最初に飛び込んでくる段階で datalen が 分割サイズ(512) より小さい時の考慮
(ループ中と同じ記述で良いのでは?)
・書けなかった時(w=0 だったとき) の脱出をケアする
ぐらいでしょうか
(ループ中と同じ記述で良いのでは?)
・書けなかった時(w=0 だったとき) の脱出をケアする
ぐらいでしょうか
496デフォルトの名無しさん (ワッチョイ fbee-Iqdo)
2018/03/15(木) 10:45:14.98ID:lf1N2aO70 SIGPIPEで死ぬぽ。
497デフォルトの名無しさん (ササクッテロレ Sp6f-ywpa)
2018/03/15(木) 10:49:38.59ID:c+umNtGLp マジックナンバー使うな。
498デフォルトの名無しさん (ワッチョイ 1323-hKdO)
2018/03/15(木) 11:01:51.80ID:OczprsBK0 >>496
シグナルは悪い文明! 粉砕する!
シグナルは悪い文明! 粉砕する!
499デフォルトの名無しさん
2018/03/15(木) 12:00:46.26500デフォルトの名無しさん (アウアウカー Sad3-Y9Jj)
2018/03/15(木) 12:19:33.36ID:KGbgKLI3a >>494
エラー処理が抜けてる。
エラー処理が抜けてる。
501デフォルトの名無しさん (アウアウカー Sad3-Y9Jj)
2018/03/15(木) 12:21:39.25ID:KGbgKLI3a >>496
そうそう。しかしその辺はOSや接続先によって違うかも。
そうそう。しかしその辺はOSや接続先によって違うかも。
502デフォルトの名無しさん (ワッチョイ 25d4-N79+)
2018/03/15(木) 16:10:59.70ID:CR6uT/FI0 >>494
これの受信側read()のコードを求むm(__)m
これの受信側read()のコードを求むm(__)m
503デフォルトの名無しさん (ワッチョイ ddd2-0FUd)
2018/03/15(木) 16:16:36.38ID:umqIWKjV0 【守銭奴】 株・FX・トレーダー <キリストW再臨″> 史上初テレパシー演説 【救世主】
https://rosie.5ch.net/test/read.cgi/liveplus/1521080734/l50
https://rosie.5ch.net/test/read.cgi/liveplus/1521080734/l50
504デフォルトの名無しさん (ワッチョイ d7ea-fr1+)
2018/03/15(木) 17:42:18.79ID:v5sVsR9k0 プロトコルなんか無しに来たものを読みきるだけの話なら
allocsz = blocksz = 512
buff = malloc(allocsz);
use = 0;
for (;;) {
w = read(FIFO, buff+use, allocsz-use);
if (w == 0) { /* もう来ない */
break;
} else if (w > 0) {
use += w:
if (use >= allocsz) {
// 器が尽きた
allocsz += blocksz;
buff = realloc(buff, allocsz); // 手抜きで realloc
}
} else { /* エラーケアしてね */ }
}
buff に use バイトだけ収まってる
allocsz = blocksz = 512
buff = malloc(allocsz);
use = 0;
for (;;) {
w = read(FIFO, buff+use, allocsz-use);
if (w == 0) { /* もう来ない */
break;
} else if (w > 0) {
use += w:
if (use >= allocsz) {
// 器が尽きた
allocsz += blocksz;
buff = realloc(buff, allocsz); // 手抜きで realloc
}
} else { /* エラーケアしてね */ }
}
buff に use バイトだけ収まってる
505デフォルトの名無しさん (ワッチョイ fbee-Iqdo)
2018/03/15(木) 17:56:13.79ID:lf1N2aO70 >buff = realloc(buff, allocsz)
リークするからやめなよ。
リークするからやめなよ。
506デフォルトの名無しさん (ササクッテロレ Sp6f-ywpa)
2018/03/15(木) 18:05:35.40ID:c+umNtGLp ヒープなんか使わずに配列にして自己管理せい。
507デフォルトの名無しさん (アウアウカー Sad3-Y9Jj)
2018/03/15(木) 18:12:47.89ID:yyzFA25Ma ヒープに配列用のメモリを確保しているわけで・・・
>>505
ん?realloc() はリークするのか?
ん?realloc() はリークするのか?
509片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd2f-5vKF)
2018/03/15(木) 18:24:18.46ID:mTrAuuczd >>508
割り当てに失敗したらリークするよ。
割り当てに失敗したらリークするよ。
511デフォルトの名無しさん (ワッチョイ 21b3-fr1+)
2018/03/15(木) 18:43:54.61ID:T5+tR1ew0 戻りを別の変数で受けて確認してから代入
512片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd2f-5vKF)
2018/03/15(木) 18:51:29.92ID:mTrAuuczd 前、ANSI準拠のreallocは、mallocとfreeの代わりになるって話をしたよな。
だから、最初のmallocは、NULLに対するreallocで置き換えできるんだよ。
だから、最初のmallocは、NULLに対するreallocで置き換えできるんだよ。
513片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd2f-5vKF)
2018/03/15(木) 18:52:49.68ID:mTrAuuczd それから、この場合はintよりもsize_tを使った方がいい。
514デフォルトの名無しさん (アウアウカー Sad3-Y9Jj)
2018/03/15(木) 20:39:48.98ID:yyzFA25Ma >>512
最初だけ、な。
最初だけ、な。
515デフォルトの名無しさん (アウアウカー Sa09-agSD)
2018/03/15(木) 23:54:08.20ID:NmT4VXxza 素朴な疑問なんですが、Cでメンバ関数を関数ポインタで定義して、そのメンバ関数から引数なしにメンバ変数を参照することってできませんか?
516デフォルトの名無しさん (ワッチョイ e19f-hKdO)
2018/03/16(金) 00:14:09.63ID:LkWvbaD00 >>515
メンバ関数ってなんですか?
メンバ関数ってなんですか?
517デフォルトの名無しさん (ブーイモ MM3f-WReF)
2018/03/16(金) 01:02:32.36ID:w3tL3lE3M >>515
https://mevius.5ch.net/test/read.cgi/tech/1434079972/39
メンバ関数 h() を返す メンバ関数 g() を定義
メンバ関数へのポインタ f を定義
メンバ関数へのポインタ f にメンバ関数 g() の返り値を代入
ここでメンバ関数へのポインタ f にはメンバ関数 h() が格納されている
->* 演算子を使用してメンバ関数へのポインタ f が指すメンバ関数 h() を実行、 h() ではメンバ変数 C::a を出力する
https://mevius.5ch.net/test/read.cgi/tech/1434079972/39
メンバ関数 h() を返す メンバ関数 g() を定義
メンバ関数へのポインタ f を定義
メンバ関数へのポインタ f にメンバ関数 g() の返り値を代入
ここでメンバ関数へのポインタ f にはメンバ関数 h() が格納されている
->* 演算子を使用してメンバ関数へのポインタ f が指すメンバ関数 h() を実行、 h() ではメンバ変数 C::a を出力する
519デフォルトの名無しさん (ブーイモ MM3f-WReF)
2018/03/16(金) 02:08:17.17ID:w3tL3lE3M >>518
スレタイ見ろ
スレタイ見ろ
520デフォルトの名無しさん (ワッチョイ 4fb3-LmTb)
2018/03/16(金) 04:14:48.79ID:3pmuZEr10 ポインタ構造体変数をポインタ変数で扱いたい時って
&p(ポインタ変数構造体変数)-> member(メンバ名)
みたいにわざわざ一回通常変数に直してからアドレスになおさないかんの?
&p(ポインタ変数構造体変数)-> member(メンバ名)
みたいにわざわざ一回通常変数に直してからアドレスになおさないかんの?
521デフォルトの名無しさん (ワッチョイ 6102-hKdO)
2018/03/16(金) 05:57:40.20ID:PrpOQ5WH0 (&p)->memberなんてまずやらん
p.memberで同じことができる
p.memberで同じことができる
522デフォルトの名無しさん (ワッチョイ 4fb3-LmTb)
2018/03/16(金) 06:50:12.92ID:3pmuZEr10 >>521
それやったらコンパイラにそんな構造体変数ないぞって言われた
それやったらコンパイラにそんな構造体変数ないぞって言われた
523デフォルトの名無しさん (ブーイモ MM3f-WReF)
2018/03/16(金) 08:05:49.18ID:w3tL3lE3M >>522
質問するときは変数の宣言も使う文脈も省略せずに書け
質問するときは変数の宣言も使う文脈も省略せずに書け
524デフォルトの名無しさん (ブーイモ MM61-X854)
2018/03/16(金) 08:16:43.56ID:6+mGA4RRM525デフォルトの名無しさん (ササクッテロレ Sp6f-ywpa)
2018/03/16(金) 10:27:00.36ID:DfshN/+jp 型教えないと何やっても無理だろ。
あと。下手に型変換させると、奇数バイトからワード処理とかさせてしまい、石によっては例外処理が走るか暴走するよな。
あと。下手に型変換させると、奇数バイトからワード処理とかさせてしまい、石によっては例外処理が走るか暴走するよな。
526デフォルトの名無しさん (アウアウカー Sad3-+EIL)
2018/03/16(金) 11:29:31.94ID:07ayGtU0a cのコンパイラ作るのにアセンブラの知識は必要?
527デフォルトの名無しさん (ワッチョイ 9f8a-/CVT)
2018/03/16(金) 11:38:22.80ID:ObjPIdw20 今なら、LLVMがあるからコード生成はそちらに任せるという
選択肢があるね。
選択肢があるね。
>>526
コンパイルというくらいだから、最後に機械語に落とし込むのにアセンブラの知識は必要になるのではないか?
コンパイルというくらいだから、最後に機械語に落とし込むのにアセンブラの知識は必要になるのではないか?
529デフォルトの名無しさん (ワッチョイ d7ea-fr1+)
2018/03/16(金) 12:01:10.57ID:rupS10t30 C++ to C コンパイラとか 生成物が機械語で無いのもあるんじゃね?
(昔そういうの欲しかった)
(昔そういうの欲しかった)
530デフォルトの名無しさん (アウアウカー Sa09-agSD)
2018/03/16(金) 12:19:28.27ID:56A/2jiga532デフォルトの名無しさん (ワッチョイ d7ea-fr1+)
2018/03/16(金) 12:43:32.01ID:rupS10t30 C言語の範囲では 構造体のメンバ中に関数のポインタをもつまで
C++言語のメンバ関数の機構(暗に this ポインタが渡ってくる) のを
C言語でやりたけりゃ自前で引数に渡すしかない&その関数はポインタを引数で受けなきゃいけない
C++言語のメンバ関数の機構(暗に this ポインタが渡ってくる) のを
C言語でやりたけりゃ自前で引数に渡すしかない&その関数はポインタを引数で受けなきゃいけない
533デフォルトの名無しさん (アウアウカー Sad3-Y9Jj)
2018/03/16(金) 12:47:14.28ID:0ILmeguTa >>529
C++の初期のコンパイラはそういうやつだった。つまり、Cへのコンバータだった。
C++の初期のコンパイラはそういうやつだった。つまり、Cへのコンバータだった。
534デフォルトの名無しさん (ササクッテロレ Sp6f-ywpa)
2018/03/16(金) 13:59:12.95ID:DfshN/+jp ああ、各ファイルの先頭に構造体の領域宣言とか関数にいちいち構造体のポインタが追加されるんだよな。
535デフォルトの名無しさん (アウアウカー Sad3-Y9Jj)
2018/03/16(金) 14:00:33.86ID:ITdJ1YV3a そういや昔々のX68000のBASICにもCへのコンバータがあったな。
536デフォルトの名無しさん (ササクッテロレ Sp6f-ywpa)
2018/03/16(金) 14:26:36.05ID:DfshN/+jp 俺は、6502アセンブラコードをCに変えるコンバータ作ったけどな。
537デフォルトの名無しさん (ワッチョイ 4d04-Ue6H)
2018/03/16(金) 15:25:35.34ID:relEB8IL0 アセンブリをprintfにパースするのって大変なのかな。
538デフォルトの名無しさん (アウアウカー Sa09-agSD)
2018/03/16(金) 15:57:57.02ID:ScqC3AYEa >>531
ではどういう言葉なら齟齬なく伝わりましたか?
ではどういう言葉なら齟齬なく伝わりましたか?
539デフォルトの名無しさん (アウアウカー Sad3-Y9Jj)
2018/03/16(金) 16:00:12.76ID:HNnsk+Eya >>538
コード断片で示すのもよい、誰かがコードを補完してくれるだろう
コード断片で示すのもよい、誰かがコードを補完してくれるだろう
541デフォルトの名無しさん (エムゾネ FF2f-0FUd)
2018/03/16(金) 16:25:31.83ID:3ma6aQHvF アスペとの会話ってつかれるよな
542デフォルトの名無しさん (ワッチョイ 6102-hKdO)
2018/03/16(金) 16:57:51.61ID:PrpOQ5WH0 Cスレで「メンバ関数」だぜ?
それをアスペとか、どんだけボキャ貧なんだよ
それをアスペとか、どんだけボキャ貧なんだよ
543デフォルトの名無しさん (エムゾネ FF2f-0FUd)
2018/03/16(金) 16:59:08.32ID:3ma6aQHvF >> 542
おまえがアスペか
おまえがアスペか
544デフォルトの名無しさん (アウアウカー Sa09-agSD)
2018/03/16(金) 20:29:17.66ID:56A/2jiga >>544
・関数ポインタとは別に「メンバ関数」というテクニカルタームが C++ にあった
・C/C++ の区別がついていない人の質問も、ここではよくみかける
という背景があって小さな誤解が発生したまでのこと、気にするでない、苦しゅうないぞ
・関数ポインタとは別に「メンバ関数」というテクニカルタームが C++ にあった
・C/C++ の区別がついていない人の質問も、ここではよくみかける
という背景があって小さな誤解が発生したまでのこと、気にするでない、苦しゅうないぞ
546デフォルトの名無しさん (ドコグロ MMdf-tgc5)
2018/03/16(金) 21:13:51.61ID:nemrSVupM >>526
どうやってコード生成部分を作るつもりなんだよ...
どうやってコード生成部分を作るつもりなんだよ...
547デフォルトの名無しさん (アウアウカー Sad3-AQFW)
2018/03/16(金) 21:59:39.71ID:PPQOkRTja マシン語があれば充分のんじょのいこの
548デフォルトの名無しさん
2018/03/16(金) 22:33:58.96 Cコンパイラがマシン語を出力しなきゃいけないって誰が決めたの?🙄
549デフォルトの名無しさん (ワッチョイ 8781-hKdO)
2018/03/16(金) 22:51:53.37ID:SxfrRBUw0 ラノベ出力してくれるコンパイラってステキ
550デフォルトの名無しさん (ワッチョイ 13b3-tgc5)
2018/03/16(金) 22:53:03.55ID:d0lIgzUw0 誰も決めてないしマシン語じゃなくてアセンブラのソース出すコンパイラはいくらでもあるし
551デフォルトの名無しさん (ワッチョイ 9f8a-/CVT)
2018/03/16(金) 23:46:17.13ID:ObjPIdw20 VHDL出してもいいよね〜
552デフォルトの名無しさん
2018/03/17(土) 00:28:10.69 シェルスクリプトとまでは言わないからPerlスクリプトを出力して欲しい
553デフォルトの名無しさん (ワッチョイ 5b9f-JSsP)
2018/03/17(土) 03:07:05.34ID:ZFtG2t0c0 C++の非仮想関数 == Cの普通の関数
C++の仮想関数 == structの項(vtbl)の項
C++の仮想関数 == structの項(vtbl)の項
554デフォルトの名無しさん (アウアウエー Sa93-0FUd)
2018/03/17(土) 04:35:29.26ID:YYJgzE2Qa >>553
違うね
違うね
555デフォルトの名無しさん (ワッチョイ 9f8a-/CVT)
2018/03/17(土) 07:17:45.03ID:qzfhHg+K0 >>553
上の方の関数。普通の関数pointerで保持出来るの?
上の方の関数。普通の関数pointerで保持出来るの?
556デフォルトの名無しさん (ワッチョイ 6102-hKdO)
2018/03/17(土) 07:35:06.72ID:zYYcg2u/0 C++のextern "C"関数 == Cの関数
Cに普通じゃない関数ってあるんだっけ
Cに普通じゃない関数ってあるんだっけ
557デフォルトの名無しさん
2018/03/17(土) 07:51:22.83558デフォルトの名無しさん (ワッチョイ 9f8a-/CVT)
2018/03/17(土) 08:58:53.90ID:qzfhHg+K0559デフォルトの名無しさん
2018/03/17(土) 09:00:39.42 >>558
「上の方の関数」すなわち「Cの普通の関数」を
「普通の関数pointerで保持出来るの?」
→Cの普通の関数は、普通の関数ポインタで保持できます
質問文に忠実に答えただけだが、何か問題でも?
「上の方の関数」すなわち「Cの普通の関数」を
「普通の関数pointerで保持出来るの?」
→Cの普通の関数は、普通の関数ポインタで保持できます
質問文に忠実に答えただけだが、何か問題でも?
560デフォルトの名無しさん (ワッチョイ 11b5-ywpa)
2018/03/17(土) 13:08:05.54ID:8xjJdoU40 Cにゃメンバーって言語レベルの概念は無いから、そういうのはコーディング時に人様がメンバーのつもりになる書き方を明示的にやらないとならないんだよな。
561デフォルトの名無しさん (ワッチョイ 21b3-fr1+)
2018/03/17(土) 13:47:23.11ID:8tKqJ0BR0 namespace のことを脇においとけば
非仮想関数って FILE 構造体と その関数だべ
非仮想関数って FILE 構造体と その関数だべ
562デフォルトの名無しさん (ワッチョイ 4d04-Ue6H)
2018/03/17(土) 13:51:13.91ID:V9AqDEvW0 LLVMはまずパースレイヤーが中間言語出力して中間言語を解釈するレイヤーが各種コードに吐き分けるということができる。
3段階のコード最適化ができるはずだったが、ちょっと迷走してる。
3段階のコード最適化ができるはずだったが、ちょっと迷走してる。
563デフォルトの名無しさん (ワッチョイ a3e2-hKdO)
2018/03/17(土) 16:56:54.32ID:x+XAbvy+0 >>557
struct A
{
void func() {} //C++の非仮想関数
};
void (*ptr)(); //普通の関数pointer
ptr = &A::func; //まさかできると思った?
struct A
{
void func() {} //C++の非仮想関数
};
void (*ptr)(); //普通の関数pointer
ptr = &A::func; //まさかできると思った?
565片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdd7-5vKF)
2018/03/17(土) 18:25:10.24ID:6umCop+Md クラス内部の関数をstaticにすると、、、
566片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdd7-5vKF)
2018/03/17(土) 18:26:02.67ID:6umCop+Md 普通の関数みたいに参照できる。
567デフォルトの名無しさん (ワッチョイ a3e2-hKdO)
2018/03/17(土) 20:05:40.42ID:x+XAbvy+0 ここはCスレということをお忘れなく
568デフォルトの名無しさん (ワッチョイ 7761-7BQk)
2018/03/18(日) 08:12:11.88ID:5MZOkfmV0569デフォルトの名無しさん (ワッチョイ 7761-7BQk)
2018/03/18(日) 08:14:12.57ID:5MZOkfmV0 ちょっと間違えました。
上の投稿は無視してください
上の投稿は無視してください
570デフォルトの名無しさん (アウアウウー Sab1-hKdO)
2018/03/21(水) 22:30:20.44ID:Pk5+CKOYa ニキ
配列で array[i] と i[array] て同じナンスカ?
後者の違和感すげーあるんスけどこういう風に書くことのメリットってかどっちが普通なんでしょうか
配列で array[i] と i[array] て同じナンスカ?
後者の違和感すげーあるんスけどこういう風に書くことのメリットってかどっちが普通なんでしょうか
571デフォルトの名無しさん (ワッチョイ 4d04-Ue6H)
2018/03/21(水) 22:33:57.97ID:MsjTjvgF0 ポインターはINTに変換できる事もある。
んで、arrayはhogeっていうアドレス値を持ってる。
iはhageていう数字を持ってる。
生の数字でhoge+hage=i+arrayである。
まぁ、後者の書き方は普通しない。
んで、arrayはhogeっていうアドレス値を持ってる。
iはhageていう数字を持ってる。
生の数字でhoge+hage=i+arrayである。
まぁ、後者の書き方は普通しない。
572デフォルトの名無しさん (ワッチョイ 1ff3-hKdO)
2018/03/21(水) 22:34:54.75ID:DQv7yGEy0 アセンブラではオフセット[レジスタ]が普通
どっちが普通なんてくだらねえことだ
どっちが普通なんてくだらねえことだ
573デフォルトの名無しさん (ワンミングク MM7f-/CVT)
2018/03/21(水) 22:36:13.14ID:D2465Z9CM offsetofマクロの実装を見て見なされ
オフセット値の算出にポインタ使っているでしょ
オフセット値の算出にポインタ使っているでしょ
574デフォルトの名無しさん (ブーイモ MM7f-UjD3)
2018/03/22(木) 00:04:45.10ID:dLiR/Xt3M a[b] は *(a+b) のシンタックスシュガー
577デフォルトの名無しさん (ワッチョイ 9ab3-a4pf)
2018/03/22(木) 04:56:30.90ID:0SzB6c710578デフォルトの名無しさん (アウウィフ FFc7-OLeD)
2018/03/22(木) 09:40:57.08ID:Q2/ylW7bF BDS-Cとかあったな
579デフォルトの名無しさん (ササクッテロル Spbb-c/f+)
2018/03/22(木) 10:22:59.95ID:lT3wziJ7p >>570みたいなのは、キャストしないと使えねーだし。
580デフォルトの名無しさん (ワッチョイ 339f-zkh5)
2018/03/22(木) 13:44:55.99ID:suw09sJq0 >>579
え?使えるよ。単に *(i + array) になるだけだし。
え?使えるよ。単に *(i + array) になるだけだし。
582デフォルトの名無しさん (アウアウウー Sac7-zkh5)
2018/03/22(木) 14:36:34.98ID:tPQcb8ora SEHって何かと思ったらMS独自のやつか
583デフォルトの名無しさん (ドコグロ MM92-a4pf)
2018/03/22(木) 19:43:32.85ID:qO2s+USWM >>583
C と C++ は違う言語だろう?(棒読み)
C と C++ は違う言語だろう?(棒読み)
585デフォルトの名無しさん (ドコグロ MM92-a4pf)
2018/03/22(木) 21:06:38.53ID:qO2s+USWM >>584
そんなものまで持ち出さないと自我が壊れちゃうのか? w
そんなものまで持ち出さないと自我が壊れちゃうのか? w
586デフォルトの名無しさん (アウアウウー Sac7-zkh5)
2018/03/24(土) 19:49:48.79ID:wXlHUBLAa ニキやっぱFEぐらいのC過去問なら余裕の満点すか?
587デフォルトの名無しさん (ワッチョイ c779-AwYn)
2018/03/24(土) 22:33:50.23ID:glVyz9hR0 >>573
>オフセット値の算出にポインタ使っているでしょ
そうか?
offsetofの結果は整定数式になる必要があるが、
ポインタ演算を使った式が整定数になる保証がないので別の手段を使っている場合がある。
>オフセット値の算出にポインタ使っているでしょ
そうか?
offsetofの結果は整定数式になる必要があるが、
ポインタ演算を使った式が整定数になる保証がないので別の手段を使っている場合がある。
588デフォルトの名無しさん (ワンミングク MM8a-Gtgj)
2018/03/24(土) 22:37:51.52ID:M0MLze13M >>587
具体的に
具体的に
589デフォルトの名無しさん (ワッチョイ 339f-zkh5)
2018/03/25(日) 00:05:52.92ID:r2Id4T4+0 >>586
例えばどんなの?
例えばどんなの?
590デフォルトの名無しさん (ワッチョイ f397-zkh5)
2018/03/25(日) 07:25:18.09ID:S7OmeNGW0 Visual Studio 2017
#define offsetof(s,m) ((size_t)&(((s*)0)->m))
gcc 7.2.0
#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
clang 6.0.0
#define offsetof(t, d) __builtin_offsetof(t, d)
borland 5.5.1
#define offsetof( s_name, m_name ) (_SIZE_T)&(((s_name _FAR *)0)->m_name)
#define offsetof(s,m) ((size_t)&(((s*)0)->m))
gcc 7.2.0
#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
clang 6.0.0
#define offsetof(t, d) __builtin_offsetof(t, d)
borland 5.5.1
#define offsetof( s_name, m_name ) (_SIZE_T)&(((s_name _FAR *)0)->m_name)
591デフォルトの名無しさん (ブーイモ MMba-Gtgj)
2018/03/25(日) 15:04:40.75ID:9t80sXyiM592デフォルトの名無しさん (ワッチョイ 4e81-zkh5)
2018/03/25(日) 15:25:31.63ID:wNhLkN4j0 メモリーの仕切り壁に落書きするポインタ
9と3/4番線ホームから出発する列車を指し示すポインタ
あれば便利かも知れないが(何がだ)
9と3/4番線ホームから出発する列車を指し示すポインタ
あれば便利かも知れないが(何がだ)
593デフォルトの名無しさん (ワッチョイ f397-zkh5)
2018/03/25(日) 17:42:21.62ID:S7OmeNGW0 鉄道に例えるならポイント(線路の分岐)を制御するデコーダに与える信号がCのポインタだ
594デフォルトの名無しさん (アウウィフ FFc7-OLeD)
2018/03/25(日) 18:06:41.94ID:qleen6XJF それじゃ型が考慮されてない
595デフォルトの名無しさん (ワッチョイ c779-AwYn)
2018/03/25(日) 18:24:31.28ID:EKcNWVxa0 >>591
その前に、まずはポインタ演算を使った結果が整定数になることが保証されている例を出してくれ。
当然規格は読んでいるよね。6.6p6より
> An integer constant expression shall have integer type and shall only have operands
> that are integer constants, enumeration constants, character constants,
> sizeof expressions whose results are integer constants, and floating constants that are the
> immediate operands of casts.
その前に、まずはポインタ演算を使った結果が整定数になることが保証されている例を出してくれ。
当然規格は読んでいるよね。6.6p6より
> An integer constant expression shall have integer type and shall only have operands
> that are integer constants, enumeration constants, character constants,
> sizeof expressions whose results are integer constants, and floating constants that are the
> immediate operands of casts.
596デフォルトの名無しさん (ワッチョイ f397-zkh5)
2018/03/25(日) 18:28:29.51ID:S7OmeNGW0 汎整数型定数をポインタにキャストまたは暗黙に変換した式は定数式(たとえば空ポインタ定数は定数式)
その定数式を整数にキャストし直した式が定数式でなくなる根拠はない
その定数式を整数にキャストし直した式が定数式でなくなる根拠はない
597デフォルトの名無しさん
2018/03/25(日) 18:29:11.25598デフォルトの名無しさん (ワッチョイ c779-AwYn)
2018/03/25(日) 18:53:41.81ID:EKcNWVxa0 >>596
>その定数式を整数にキャストし直した式が定数式でなくなる根拠はない
でもそれは整定数式ではないよね。
規格にはキャスト前の型が算術型でなければならないとある。
> Cast operators in an integer constant expression shall only convert arithmetic types to integer types, except as part of an operand to the
> sizeof operator.
>その定数式を整数にキャストし直した式が定数式でなくなる根拠はない
でもそれは整定数式ではないよね。
規格にはキャスト前の型が算術型でなければならないとある。
> Cast operators in an integer constant expression shall only convert arithmetic types to integer types, except as part of an operand to the
> sizeof operator.
599デフォルトの名無しさん (ワッチョイ 03b3-/hfl)
2018/03/25(日) 19:02:02.77ID:z318xA/90 (配列等で)連続が保障されてるときには要素数が求まるようにはなってるけど
連続性のないポインタの差分は鼻から悪魔だったような
規格? みてない
連続性のないポインタの差分は鼻から悪魔だったような
規格? みてない
600デフォルトの名無しさん (ワッチョイ f397-zkh5)
2018/03/25(日) 19:05:21.84ID:S7OmeNGW0601デフォルトの名無しさん (ワッチョイ d78a-Gtgj)
2018/03/26(月) 07:31:09.27ID:Sl5sXtlN0 で、587は逃げたのか
602デフォルトの名無しさん (ワッチョイ 9ae9-YOip)
2018/03/26(月) 09:52:06.25ID:5fqWa8qC0 今日からC言語を始めたのでよろしくです
603デフォルトの名無しさん (ササクッテロル Spbb-c/f+)
2018/03/26(月) 10:39:34.46ID:9cQp/9Bmp ご愁傷様
604デフォルトの名無しさん (ワッチョイ 5b61-3KaU)
2018/03/26(月) 11:35:27.48ID:0ihjlnG/0 a[b*c];
のようにしてもassemblyコードがアドレッシングモードじゃなくて
掛け算してしまうんですけどどうしたらアドレッシングモードで計算するように
なりますか?
のようにしてもassemblyコードがアドレッシングモードじゃなくて
掛け算してしまうんですけどどうしたらアドレッシングモードで計算するように
なりますか?
605デフォルトの名無しさん (ワッチョイ ba60-fzSc)
2018/03/26(月) 11:54:06.58ID:dvRuSlEv0 >>604
b と c とを使って何をしたいのでしょうか?
b と c とを使って何をしたいのでしょうか?
606デフォルトの名無しさん (アウーイモ MMc7-APr9)
2018/03/26(月) 12:03:06.83ID:EmWkiz+YM607デフォルトの名無しさん (ワッチョイ 5b61-3KaU)
2018/03/26(月) 12:09:23.11ID:0ihjlnG/0 struct a{
int a;
int b;
};
struct a x[100];
void *v=x;
void *h(int n, int s){
return ((char *)v+n*s);
}
struct a *i(int n){
return &x[n];
}
同じことをしているのにhは掛け算するのにiは掛け算をアドレッシングモードでしているので
処理速度の差が生まれてしまいます。
int a;
int b;
};
struct a x[100];
void *v=x;
void *h(int n, int s){
return ((char *)v+n*s);
}
struct a *i(int n){
return &x[n];
}
同じことをしているのにhは掛け算するのにiは掛け算をアドレッシングモードでしているので
処理速度の差が生まれてしまいます。
608デフォルトの名無しさん (ワッチョイ 5b61-3KaU)
2018/03/26(月) 12:12:26.75ID:0ihjlnG/0 自己解決しました。
609デフォルトの名無しさん (アウーイモ MMc7-APr9)
2018/03/26(月) 12:12:50.68ID:EmWkiz+YM struct aにキャストしてから計算すればいいという話ではなくて?
610デフォルトの名無しさん (ワッチョイ 5b61-3KaU)
2018/03/26(月) 12:18:06.83ID:0ihjlnG/0 nかsは定数じゃないと駄目みたいでした。
611デフォルトの名無しさん (アウーイモ MMc7-APr9)
2018/03/26(月) 12:31:41.16ID:k+G5ovIGM sがなんだかわからないけど
void *h(int n, int s){
return ((struct a *)v+n*s);
}
じゃだめなん?
s=1ならi()と同じだと思うけど。
void *h(int n, int s){
return ((struct a *)v+n*s);
}
じゃだめなん?
s=1ならi()と同じだと思うけど。
612デフォルトの名無しさん (ワッチョイ 5b61-3KaU)
2018/03/26(月) 12:37:07.82ID:0ihjlnG/0 struct a *は8バイトなので8を入れればよいのです。
613デフォルトの名無しさん (アウーイモ MMc7-APr9)
2018/03/26(月) 12:40:49.01ID:v3bCx+j3M ブロックサイズみたいなイメージかな。
だったらsizeof(struct a)にしたほうがよいかと。
だったらsizeof(struct a)にしたほうがよいかと。
614デフォルトの名無しさん (アウアウカー Sac3-t4/V)
2018/03/26(月) 13:35:11.46ID:ioIbXl47a615デフォルトの名無しさん (ワッチョイ 8bb3-c/f+)
2018/03/26(月) 14:37:40.54ID:g7RAb+fM0 最適化されたらおんなじじゃね?
616片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-OUTG)
2018/03/26(月) 14:44:36.91ID:42MV7MT1d struct a*のサイズは32-bit 環境だと4だよな。64ビットだと8バイト。
617片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-OUTG)
2018/03/26(月) 14:47:59.15ID:42MV7MT1d ポインタを操作するなら、size_tとかptrdiff_t使った方がいいな。
618デフォルトの名無しさん (アウアウアー Sa06-APr9)
2018/03/26(月) 15:00:59.23ID:+d/fyZgca >>616
ここでは構造体の実体の配列だからsizeof(struct a)で大丈夫。
int1つのサイズは典型的には4byteだけど、IP64だのあまり見ない
データモデルでは8byteのこともあるから、構造体のサイズを使うときは
sizeofがよい(MAY)、ではなくてsizeofにすべき(ほぼMUSTのSHOULD)。
ここでは構造体の実体の配列だからsizeof(struct a)で大丈夫。
int1つのサイズは典型的には4byteだけど、IP64だのあまり見ない
データモデルでは8byteのこともあるから、構造体のサイズを使うときは
sizeofがよい(MAY)、ではなくてsizeofにすべき(ほぼMUSTのSHOULD)。
619デフォルトの名無しさん (ワッチョイ 3708-zkh5)
2018/03/26(月) 17:51:14.16ID:wby0cWXW0620デフォルトの名無しさん (ワッチョイ 9ae9-YOip)
2018/03/26(月) 17:52:53.38ID:5fqWa8qC0 本買うならどれがいい?
本より優れたサイトがあるならそれでもいいぞ
本より優れたサイトがあるならそれでもいいぞ
621デフォルトの名無しさん (ワンミングク MM8a-Gtgj)
2018/03/26(月) 19:16:37.53ID:b1dSvJWqM622デフォルトの名無しさん (ワッチョイ 5b61-3KaU)
2018/03/27(火) 07:05:39.20ID:VOv2iUaR0 struct a{
bool a:1;
uint32_t b:31;
uint16_t c;
};
struct a{
uint32_t b;
uint16_t c;
bool a;
};
上の構造体が12バイツでしたが8バイツの理由がわかりません、上を8バイツにしたいです。
bool a:1;
uint32_t b:31;
uint16_t c;
};
struct a{
uint32_t b;
uint16_t c;
bool a;
};
上の構造体が12バイツでしたが8バイツの理由がわかりません、上を8バイツにしたいです。
623デフォルトの名無しさん (ワッチョイ a304-h0dl)
2018/03/27(火) 07:14:25.16ID:6oSpwfuc0 C言語のboolって何バイト?
C++だとINTと等価なことがそれなりにあるんだけど。
C++だとINTと等価なことがそれなりにあるんだけど。
624デフォルトの名無しさん
2018/03/27(火) 07:32:57.91 >>622
よく分からないんだけど、2つ構造体を書いてるのは何を意図してるの?
よく分からないんだけど、2つ構造体を書いてるのは何を意図してるの?
625デフォルトの名無しさん (ワッチョイ a393-4ZrE)
2018/03/27(火) 07:57:42.10ID:tnecWY6M0 >>622
俺の環境ではどっちのsizeofの値も8バイツを返したから環境依存だろう。
#pragma か __attribute__ で詰め込めるかも知れんけど、
ビットフィールドを狙って使える指定方法があるかどうか。
詰めたら詰めたで6バイツや7バイツになっちゃう危険もあるし。
>>623
<stdbool.h> にどう書いてあるかだろうな。
これも試したら sizeof(bool) に1を返した。
<stdbool.h> の実体を思しきファイルを覗いたら
#define _Bool signed char
#define bool _Bool
の連鎖になってた。typedefでないのが少々意外。
#ifdef で定義済か未定義かを判定できるようにするためだろうか。
俺の環境ではどっちのsizeofの値も8バイツを返したから環境依存だろう。
#pragma か __attribute__ で詰め込めるかも知れんけど、
ビットフィールドを狙って使える指定方法があるかどうか。
詰めたら詰めたで6バイツや7バイツになっちゃう危険もあるし。
>>623
<stdbool.h> にどう書いてあるかだろうな。
これも試したら sizeof(bool) に1を返した。
<stdbool.h> の実体を思しきファイルを覗いたら
#define _Bool signed char
#define bool _Bool
の連鎖になってた。typedefでないのが少々意外。
#ifdef で定義済か未定義かを判定できるようにするためだろうか。
626デフォルトの名無しさん (ワッチョイ 9761-fzSc)
2018/03/27(火) 08:47:18.29ID:/RdC4ccn0 >622
uint32_t b; がバイト境界にひっかかったせいじゃね?
uint32_t b; がバイト境界にひっかかったせいじゃね?
627デフォルトの名無しさん (ワッチョイ 3e23-zkh5)
2018/03/27(火) 08:57:59.42ID:9ekvYNlc0 コレナンデ境界
628デフォルトの名無しさん (ワッチョイ d78a-Gtgj)
2018/03/27(火) 09:51:51.20ID:GW1/xmrB0 アライメント
629デフォルトの名無しさん (ワッチョイ 3708-zkh5)
2018/03/27(火) 10:02:58.62ID:i2YWXGc+0 alignment
Емельяненко
なんで日本人は「ん」を飛ばすかねえ
Емельяненко
なんで日本人は「ん」を飛ばすかねえ
630デフォルトの名無しさん (ワッチョイ 9761-fzSc)
2018/03/27(火) 10:04:40.74ID:/RdC4ccn0 間抜けな回答してるな>オレ
||
||
∧||∧
( / ⌒ヽ
| | |
∪ / ノ
| ||
∪∪
-━━-
||
||
∧||∧
( / ⌒ヽ
| | |
∪ / ノ
| ||
∪∪
-━━-
631デフォルトの名無しさん (ワッチョイ b6a1-fzSc)
2018/03/27(火) 10:37:30.96ID:UpIjn8oG0 >629
>なんで日本人は「ん」を飛ばすかねえ
「全て」の日本人が「ン」を飛ばすわけではありません。
「或る」日本人が「ン」を飛ばすだけです。
ところで、ロシア語の
Емельяненко(エメリャネンコ)
とはどういう意味ですか。手元の「ロ日辞典」をひいても
でていないので
>なんで日本人は「ん」を飛ばすかねえ
「全て」の日本人が「ン」を飛ばすわけではありません。
「或る」日本人が「ン」を飛ばすだけです。
ところで、ロシア語の
Емельяненко(エメリャネンコ)
とはどういう意味ですか。手元の「ロ日辞典」をひいても
でていないので
632デフォルトの名無しさん (ワッチョイ 5b61-3KaU)
2018/03/27(火) 11:17:02.05ID:VOv2iUaR0 struct a{
bool x:1;
uint32_t y:31;
};
しらべたらこれの大きさが8バイツでした
sizeof(struct a)とやったらそうなったのでアラインメントのもんだいではありません。
どうしても4バイツにしたいです
bool x:1;
uint32_t y:31;
};
しらべたらこれの大きさが8バイツでした
sizeof(struct a)とやったらそうなったのでアラインメントのもんだいではありません。
どうしても4バイツにしたいです
633デフォルトの名無しさん (ササクッテロル Spbb-c/f+)
2018/03/27(火) 11:20:50.14ID:949beg24p 型を揃えるか、ブラグマ指定する、
634デフォルトの名無しさん (ワッチョイ a304-h0dl)
2018/03/27(火) 11:22:01.11ID:6oSpwfuc0 もしかして変数を分解しようとしてる?
Unionってしってるかー?
Unionってしってるかー?
635デフォルトの名無しさん (ササクッテロル Spbb-c/f+)
2018/03/27(火) 11:24:10.52ID:949beg24p 構造体宣言に
__attribute__((packed))
を挟む
__attribute__((packed))
を挟む
636デフォルトの名無しさん (ワッチョイ a304-h0dl)
2018/03/27(火) 11:26:05.22ID:6oSpwfuc0 C++なら、無名うにおんとかつかえて楽なんだけど、Cは一々名前がつくので面倒。
637デフォルトの名無しさん (ササクッテロル Spbb-c/f+)
2018/03/27(火) 11:26:08.96ID:949beg24p 両方uint32_tにすりゃいいだろ。
638デフォルトの名無しさん (ワッチョイ 5b61-3KaU)
2018/03/27(火) 11:26:51.67ID:VOv2iUaR0 struct a{
uint32_t a:1;
uint32_t y:31;
};
こうやったらできました
ビットフィールドを勘違いしていたのが原因みたいです。
uint32_t a:1;
uint32_t y:31;
};
こうやったらできました
ビットフィールドを勘違いしていたのが原因みたいです。
639デフォルトの名無しさん (ワッチョイ a304-h0dl)
2018/03/27(火) 11:27:20.90ID:6oSpwfuc0 あら、そっちか。
640デフォルトの名無しさん (ワッチョイ 5b61-3KaU)
2018/03/27(火) 11:36:24.22ID:VOv2iUaR0 struct a{
union{
bool a:1;
struct{
uint32_t x:1;
uint32_t y:31;
};
};
};
つまりこうしたらよいのですね。
勉強になりました。ありがとうございます。
union{
bool a:1;
struct{
uint32_t x:1;
uint32_t y:31;
};
};
};
つまりこうしたらよいのですね。
勉強になりました。ありがとうございます。
641デフォルトの名無しさん
2018/03/27(火) 12:00:48.00642デフォルトの名無しさん (アウアウカー Sac3-t4/V)
2018/03/27(火) 12:36:27.71ID:NeN1yqDWa >>622
ビットフィールドって同じ型が並んでないとまとめてくれないのでは?
なので、
bool a:1;
uint32_t b:31;
ではなくて
uint32_t a:1;
uint32_t b:31;
にしたらできないか?
ビットフィールドって同じ型が並んでないとまとめてくれないのでは?
なので、
bool a:1;
uint32_t b:31;
ではなくて
uint32_t a:1;
uint32_t b:31;
にしたらできないか?
643デフォルトの名無しさん (アウアウカー Sac3-t4/V)
2018/03/27(火) 12:39:07.90ID:NeN1yqDWa 既に答えが出て解決していた
||
||
∧||∧
( / ⌒ヽ
| | |
∪ / ノ
| ||
∪∪
-━━-
||
||
∧||∧
( / ⌒ヽ
| | |
∪ / ノ
| ||
∪∪
-━━-
644デフォルトの名無しさん (ワッチョイ 3708-zkh5)
2018/03/27(火) 12:44:29.48ID:i2YWXGc+0645デフォルトの名無しさん (ワッチョイ 5b61-3KaU)
2018/03/27(火) 13:11:29.05ID:VOv2iUaR0646デフォルトの名無しさん (ワッチョイ 1ae1-TLa6)
2018/03/27(火) 13:53:29.94ID:KACb5w790 >>645
どこが正しくないのか説明してもらわないとたぶん誰も分からない
どこが正しくないのか説明してもらわないとたぶん誰も分からない
647デフォルトの名無しさん (ワッチョイ 5b61-3KaU)
2018/03/27(火) 15:15:12.36ID:VOv2iUaR0648片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-OUTG)
2018/03/27(火) 15:32:49.24ID:eCLpRZm+d unionにビットフィールドは使えないっしょ。
649デフォルトの名無しさん (ワッチョイ 638a-7K4Y)
2018/03/27(火) 15:42:37.68ID:jWaORT7c0650デフォルトの名無しさん (ワッチョイ 4eea-/hfl)
2018/03/27(火) 15:45:46.56ID:jMKP3TFv0 struct になってない単変数でのビットフィールドって
結局支持された型の空間をめいっぱい使って書いてるんでないの
結局支持された型の空間をめいっぱい使って書いてるんでないの
651デフォルトの名無しさん (ワッチョイ 5b61-3KaU)
2018/03/27(火) 16:45:45.41ID:VOv2iUaR0652デフォルトの名無しさん (ワッチョイ a393-4ZrE)
2018/03/27(火) 17:22:21.42ID:tnecWY6M0653デフォルトの名無しさん
2018/03/27(火) 17:46:09.15 >>647
unionの中にもう一つstruct
uint32_t b0:1; 〜 uint32_t b31:1;
を入れてみて、b0〜b31をオール0、その次はオール1にして
aやyに代入するたびにb0〜b31がどう変化するかを確かめればいいと思うよ。
unionの中にもう一つstruct
uint32_t b0:1; 〜 uint32_t b31:1;
を入れてみて、b0〜b31をオール0、その次はオール1にして
aやyに代入するたびにb0〜b31がどう変化するかを確かめればいいと思うよ。
654デフォルトの名無しさん (ベーイモ MMd2-OQu2)
2018/03/27(火) 18:48:56.23ID:lphBpvplM gotoは要らない子?
655デフォルトの名無しさん (アウアウカー Sac3-t4/V)
2018/03/27(火) 19:18:17.87ID:NeN1yqDWa >>652
コンパイラによっては型に関係なく並べるのもあるのか。知らなかった。
コンパイラによっては型に関係なく並べるのもあるのか。知らなかった。
656デフォルトの名無しさん (ワッチョイ 33b5-c/f+)
2018/03/28(水) 09:16:12.84ID:UsIzsSLh0 unionで共用関係作っても、詰め込み順が統一されてる保証は無いからなぁ。
んなトリッキーな処理は、移植ん時死ねるぞ。
んなトリッキーな処理は、移植ん時死ねるぞ。
657デフォルトの名無しさん (ワッチョイ 3e23-zkh5)
2018/03/28(水) 09:21:05.87ID:hD+ZgK6z0 ビットフィールドの順番がコンパイラによって違うのには参った
658デフォルトの名無しさん (アウアウウー Sac7-zkh5)
2018/03/28(水) 09:27:44.69ID:txGSPNwpa659デフォルトの名無しさん (ワッチョイ 3708-zkh5)
2018/03/28(水) 15:08:36.90ID:NO5LUaew0 いやあ、そんなドジ踏んだことないし
踏んだやつも見かけないなあ
unionなんか使うときはそういう危険性には
真っ向から対峙しているのでうっかり考え落とす
なんてことは起こりえない
ポインタをキャストするときのほうが危ないぞ
unionよりも遙かに使用頻度が高くて油断しがち
踏んだやつも見かけないなあ
unionなんか使うときはそういう危険性には
真っ向から対峙しているのでうっかり考え落とす
なんてことは起こりえない
ポインタをキャストするときのほうが危ないぞ
unionよりも遙かに使用頻度が高くて油断しがち
660デフォルトの名無しさん (ワッチョイ ba60-fzSc)
2018/03/28(水) 16:15:36.83ID:zOM5QtYn0 >>659
たしかに
たしかに
661デフォルトの名無しさん (ササクッテロル Spbb-c/f+)
2018/03/28(水) 20:45:19.82ID:inZxrYqzp 普段からアライメント気にしない石使ってると死ぬるw
662デフォルトの名無しさん (アウアウエー Sa23-HAdz)
2018/03/29(木) 00:01:16.65ID:ySkkjEPJa 野積み
663デフォルトの名無しさん (ブーイモ MMb3-vInS)
2018/03/29(木) 00:09:03.12ID:X8gSQriyM SIG11
664デフォルトの名無しさん (ワッチョイ 219f-kUw7)
2018/03/29(木) 00:30:03.68ID:HYrXjV+u0 >>654
出来の悪い子ほど可愛いものさ
出来の悪い子ほど可愛いものさ
665デフォルトの名無しさん (ワッチョイ 4104-2GNe)
2018/03/29(木) 02:58:45.40ID:Ng8O1HeK0 GOTOはその場所より基本上流に流しちゃいけない。
それだけ守ってればいいと思う。
それだけ守ってればいいと思う。
666デフォルトの名無しさん
2018/03/29(木) 03:06:08.42 if文とかfor文の中に飛ばすのもダメだろ
関数末尾以外に飛ばすのは基本アカンと思う
関数末尾以外に飛ばすのは基本アカンと思う
667デフォルトの名無しさん (ワッチョイ d180-3UCh)
2018/03/29(木) 07:24:44.79ID:+dX3Weor0 gotoとswitchの組み合わせはよくやる。
668デフォルトの名無しさん (ワッチョイ 219f-kUw7)
2018/03/29(木) 22:57:50.45ID:HYrXjV+u0 >>667
switch と goto と聞いて、はっもしやこんなこともできるのでは、と思ってやってみたら、できてしまったよ。どうしよう。
#include <stdio.h>
int main()
{
int i;
for (i = 0; i < 10; i++) {
if (i == 5)
goto hoge;
switch (i) {
case 1:
puts("いち");
break;
hoge:
puts("ご");
break;
}
}
return 0;
}
switch と goto と聞いて、はっもしやこんなこともできるのでは、と思ってやってみたら、できてしまったよ。どうしよう。
#include <stdio.h>
int main()
{
int i;
for (i = 0; i < 10; i++) {
if (i == 5)
goto hoge;
switch (i) {
case 1:
puts("いち");
break;
hoge:
puts("ご");
break;
}
}
return 0;
}
669デフォルトの名無しさん (アウアウウー Sa45-kUw7)
2018/03/30(金) 13:01:35.10ID:fkO+Wt7Ma 情報処理用にC頑張り始めたンスけど、初心者本は2冊くらい終えて、簡単なプログラムならあるていど作れるようにもなったんスけど、FEの過去問には全く歯がたたないっすw
670デフォルトの名無しさん (アウアウウー Sa45-kUw7)
2018/03/30(金) 13:03:50.38ID:fkO+Wt7Ma 初見の歯抜けプログラムみて選択肢与えられてもなんだかさっぱり読み切れん…
中級本の内容の方がまだ簡単なんスけどニキこれなんなんすか
中級本の内容の方がまだ簡単なんスけどニキこれなんなんすか
671デフォルトの名無しさん (ワッチョイ d161-HAdz)
2018/03/30(金) 13:04:58.91ID:n1WKWzHR0 Duff's deviceっていうスイッチの中にループがあるのもある
672デフォルトの名無しさん (ワッチョイ 5923-HAdz)
2018/03/30(金) 16:19:34.10ID:zQBQo8b30673デフォルトの名無しさん (ワッチョイ 4123-xai/)
2018/03/30(金) 16:22:11.93ID:bDuRGN0f0 >>668
goto default;
goto default;
674デフォルトの名無しさん (ワッチョイ d35d-2oNG)
2018/03/30(金) 16:55:37.88ID:InC0asnz0 あれにはそういう名前があったのか。ありがとう。
675デフォルトの名無しさん (ワッチョイ 1908-kUw7)
2018/03/30(金) 17:55:35.60ID:6y8tfNRe0 同じく
名前は知らんかった
名前は知らんかった
676デフォルトの名無しさん (ワッチョイ 59d8-0/ta)
2018/03/30(金) 19:36:36.57ID:FHOFausT0 値の入れ替え処理ってどう描けばいいんや
677片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/03/30(金) 19:38:47.12ID:9udtptfNd678デフォルトの名無しさん (ブーイモ MM85-vInS)
2018/03/30(金) 19:42:57.58ID:TqB3XhjJM a = a ^ b;
b = a ^ b;
a = a ^ b;
b = a ^ b;
a = a ^ b;
679デフォルトの名無しさん (ワッチョイ 59d8-0/ta)
2018/03/30(金) 19:46:21.82ID:FHOFausT0680片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/03/30(金) 19:47:24.27ID:9udtptfNd a ^= b;
b ^= a;
a ^= b;
b ^= a;
a ^= b;
681デフォルトの名無しさん (ワッチョイ 5360-uaFS)
2018/03/30(金) 19:49:14.07ID:sxHgkaP90 >>678
b の実体が a だと a = 0 になってしまう、とは頻繁に指摘されるところ
b の実体が a だと a = 0 になってしまう、とは頻繁に指摘されるところ
682片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/03/30(金) 19:49:30.92ID:9udtptfNd void myswap(int *pa, int *pb)
{
int tmp = *pa;
*pa = *pb;
*pb = tmp;
}
{
int tmp = *pa;
*pa = *pb;
*pb = tmp;
}
683デフォルトの名無しさん (アウアウカー Sadd-rlcN)
2018/03/30(金) 20:19:58.73ID:x2Z4e+RCa >>677
それC++だよね。
それC++だよね。
684デフォルトの名無しさん (ワッチョイ 2b81-kUw7)
2018/03/30(金) 20:29:07.56ID:zSEpPQDd0 ワザとだと思います
685デフォルトの名無しさん (ワッチョイ 5be9-VlFK)
2018/03/30(金) 20:32:46.73ID:3ziE5qsO0 値の入れ替えってどういう局面で使うの?
686片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/03/30(金) 20:35:46.51ID:9udtptfNd >>685
ソートとか、順番を変えるときとか、データの入れ替えなど。
ソートとか、順番を変えるときとか、データの入れ替えなど。
687デフォルトの名無しさん (ブーイモ MMf5-6v0Y)
2018/03/30(金) 20:37:07.43ID:N/erQ4tDM ソート
他では見かけない
他では見かけない
688片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/03/30(金) 20:42:10.63ID:9udtptfNd 音楽のシャッフルなんかもswap使っている。
689デフォルトの名無しさん (ワッチョイ 5be9-VlFK)
2018/03/30(金) 20:49:54.40ID:3ziE5qsO0 ああ、int aとかじゃなくて配列要素に使うのね
納得ありがとう
納得ありがとう
690片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/03/30(金) 20:53:18.14ID:9udtptfNd 配列要素やポインタにも使える。この入れ替えアルゴリズムを抽象化するとC++のstd::swapになる。
691デフォルトの名無しさん (ワッチョイ ab9f-psQl)
2018/03/30(金) 23:15:31.22ID:sWH8jgUv0 goto LABEL0;
{
int i = 1; /* 初期化 */
int j;
j = 1; /* 代入 */
LABEL0:
printf("%d %d\n", i, j);
}
{
int i = 1; /* 初期化 */
int j;
j = 1; /* 代入 */
LABEL0:
printf("%d %d\n", i, j);
}
692デフォルトの名無しさん (アウアウウー Sa45-fCoj)
2018/03/31(土) 01:54:40.82ID:OnKsCXxga Mapみたいな連想配列使いたいんだが何使えばええんや
693デフォルトの名無しさん (アウアウエー Sa23-HAdz)
2018/03/31(土) 03:57:34.23ID:2Z4gCLvWa switchのラベルって違うswitch(){}の中なら重複してても使えるやん?
それで goto HOGE; したらどっちに飛ぶ?
それで goto HOGE; したらどっちに飛ぶ?
694デフォルトの名無しさん (アウアウエー Sa23-HAdz)
2018/03/31(土) 03:58:50.47ID:2Z4gCLvWa >>681
ならねーよΩ
ならねーよΩ
695デフォルトの名無しさん (ワッチョイ 5360-uaFS)
2018/03/31(土) 07:10:32.62ID:1xZcLHDp0696デフォルトの名無しさん
2018/03/31(土) 07:17:07.25 if (a != b) {
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
697デフォルトの名無しさん (ワッチョイ 5360-uaFS)
2018/03/31(土) 07:19:42.34ID:1xZcLHDp0 >>696
それは対策になっていない
それは対策になっていない
698デフォルトの名無しさん
2018/03/31(土) 08:13:17.33 >>697
なんで?
なんで?
699デフォルトの名無しさん (ブーイモ MMb3-vInS)
2018/03/31(土) 08:15:52.05ID:NJrC8qbaM700デフォルトの名無しさん (ワッチョイ 5360-uaFS)
2018/03/31(土) 08:22:07.33ID:1xZcLHDp0701デフォルトの名無しさん (ワッチョイ 5961-uaFS)
2018/03/31(土) 08:47:25.82ID:EbDGZ0yc0 wikiより
void xorSwap(int *x, int *y)
{
if (x != y) {
*x ^= *y;
*y ^= *x;
*x ^= *y;
}
}
void xorSwap(int *x, int *y)
{
if (x != y) {
*x ^= *y;
*y ^= *x;
*x ^= *y;
}
}
702デフォルトの名無しさん (ワッチョイ 1908-kUw7)
2018/03/31(土) 08:59:46.96ID:15qJIIAA0 bの実体がaなんてことが参照のないCで起こりうるのか?
#define b aなんてアホなことぬかすなよ
#define b aなんてアホなことぬかすなよ
703デフォルトの名無しさん (ワッチョイ 4104-2GNe)
2018/03/31(土) 09:06:42.53ID:8va89mAu0 ヒューマンエラーは果てしないのじゃー。
704マクロでーとか言いそう w (ワッチョイ 93b3-PArs)
2018/03/31(土) 09:12:11.67ID:OaeapR1O0705デフォルトの名無しさん (ワッチョイ 5360-uaFS)
2018/03/31(土) 09:13:01.96ID:1xZcLHDp0 >>702
その #define マクロでうっかり、xor スワップを書いてしまう、とかは、可能性としてあり得りますね
あと、C++ テンプレートで書いてしまったり、とかね
https://ideone.com/NEeCNr
その #define マクロでうっかり、xor スワップを書いてしまう、とかは、可能性としてあり得りますね
あと、C++ テンプレートで書いてしまったり、とかね
https://ideone.com/NEeCNr
706デフォルトの名無しさん (ワッチョイ 5360-uaFS)
2018/03/31(土) 09:13:25.89ID:1xZcLHDp0707デフォルトの名無しさん (ワッチョイ 81b3-L1IY)
2018/03/31(土) 09:57:17.92ID:V7rzy3dc0 マクロで xor の入れ替えを書く
配列の操作で同じ要素の入れ替えも、都合上そのまま交換する方向で記述する
(配列を逆順に入れ替える時、要素数が奇数だと発生
配列の操作で同じ要素の入れ替えも、都合上そのまま交換する方向で記述する
(配列を逆順に入れ替える時、要素数が奇数だと発生
708デフォルトの名無しさん (ワッチョイ 93b3-PArs)
2018/03/31(土) 10:03:16.74ID:OaeapR1O0709デフォルトの名無しさん (ワッチョイ 5360-uaFS)
2018/03/31(土) 10:08:47.90ID:1xZcLHDp0 >>708
今どんな気持ち?どんな気持ち?AA略
今どんな気持ち?どんな気持ち?AA略
710デフォルトの名無しさん (ワッチョイ 5961-uaFS)
2018/03/31(土) 10:17:56.15ID:EbDGZ0yc0 マウント合戦うぜぇ。
711デフォルトの名無しさん (ワッチョイ 5360-uaFS)
2018/03/31(土) 10:24:01.94ID:1xZcLHDp0712デフォルトの名無しさん (ワッチョイ 93b3-PArs)
2018/03/31(土) 10:29:40.14ID:OaeapR1O0 名前欄ぐらい見とけよ w
713デフォルトの名無しさん (ワッチョイ 1908-kUw7)
2018/03/31(土) 10:32:21.69ID:15qJIIAA0 >>709
そのまま返す
そのまま返す
714デフォルトの名無しさん (ブーイモ MMb3-vInS)
2018/03/31(土) 10:34:30.68ID:NJrC8qbaM 678のメール欄もなw
715デフォルトの名無しさん (ワッチョイ 93b3-PArs)
2018/03/31(土) 10:40:28.44ID:OaeapR1O0 >>714
いや、さすがあれはメアド欄なんて見なくてもネタってわかるだろ w
いや、さすがあれはメアド欄なんて見なくてもネタってわかるだろ w
716デフォルトの名無しさん (ワッチョイ 1908-kUw7)
2018/03/31(土) 10:43:37.64ID:15qJIIAA0 >>705
templateにする必要ないのに無理しちゃって
void aho(int& a, int& b)
{
if(&a == &b) throw system_error{error_code{1xZcLHDp0_category(), 709}, R"(
ハァ・・・ ハァ・・・ ハァ・・・
: ∧ ∧ :
: / ヽ / ヽ :
: / >__/∴ ヽ :
: / ;;# ,∴∵; ヽ ∴\ :
: / -==、 ' 、==-∴∵丶 : き、きょうはこれくらいで勘弁してやるニダ…
: / "" _┃_ "" * ∵∴\ :
: \ #;∴ l/ニニ| ∵ / ∴∵/ :
: ヽ∵//;;.;`ー‐' # ∴#∵ノ :
>;;;: _ _ ;, _ ;_<
: / # ;∴ ∴ # \ :
)"};
}
templateにする必要ないのに無理しちゃって
void aho(int& a, int& b)
{
if(&a == &b) throw system_error{error_code{1xZcLHDp0_category(), 709}, R"(
ハァ・・・ ハァ・・・ ハァ・・・
: ∧ ∧ :
: / ヽ / ヽ :
: / >__/∴ ヽ :
: / ;;# ,∴∵; ヽ ∴\ :
: / -==、 ' 、==-∴∵丶 : き、きょうはこれくらいで勘弁してやるニダ…
: / "" _┃_ "" * ∵∴\ :
: \ #;∴ l/ニニ| ∵ / ∴∵/ :
: ヽ∵//;;.;`ー‐' # ∴#∵ノ :
>;;;: _ _ ;, _ ;_<
: / # ;∴ ∴ # \ :
)"};
}
717デフォルトの名無しさん (ワッチョイ 5360-uaFS)
2018/03/31(土) 10:44:13.72ID:1xZcLHDp0 >>678 メール欄
あれ、まあ?!‥‥‥自分<今どんな気持ち?どんな気持ち?
まあ鎬を削るのであれば、こっちが楽しいのではありまする
https://mevius.5ch.net/test/read.cgi/tech/1514772904/
あれ、まあ?!‥‥‥自分<今どんな気持ち?どんな気持ち?
まあ鎬を削るのであれば、こっちが楽しいのではありまする
https://mevius.5ch.net/test/read.cgi/tech/1514772904/
718デフォルトの名無しさん (アウウィフ FF45-HAdz)
2018/03/31(土) 11:07:01.32ID:c97ae/y4F719デフォルトの名無しさん (ワッチョイ 219f-kUw7)
2018/03/31(土) 16:34:53.19ID:4s7VNOk80 >>695
18行目がこうなっているわけだが
myswap(&a, &a);
これでは参考にならんよな。
a, b を同じ値にしてから &a, &b で呼び出さないと。
まあでも myswap() 側で調べて同じなら何もしないように作っとけばいいだけではあるが。
18行目がこうなっているわけだが
myswap(&a, &a);
これでは参考にならんよな。
a, b を同じ値にしてから &a, &b で呼び出さないと。
まあでも myswap() 側で調べて同じなら何もしないように作っとけばいいだけではあるが。
720デフォルトの名無しさん (ワッチョイ 5961-uaFS)
2018/03/31(土) 17:23:06.22ID:EbDGZ0yc0 つまりswap関数に必ず同じ変数orポインタアドレスを渡さないよう確認する人と
渡しても大丈夫な仕様にする人とが同じチームに居るとこうなると。
渡しても大丈夫な仕様にする人とが同じチームに居るとこうなると。
721デフォルトの名無しさん (アウウィフ FF45-HAdz)
2018/03/31(土) 17:38:31.63ID:c97ae/y4F 速度の問題あるから関数側でいちいち判定コード書くのは避けたいところ
722デフォルトの名無しさん (ワッチョイ 93b3-PArs)
2018/03/31(土) 17:53:31.86ID:OaeapR1O0 そのネタいつまで続けるの?
723デフォルトの名無しさん (ワッチョイ dbe7-0vFc)
2018/03/31(土) 18:24:11.53ID:wolthb3Z0 ちょっと聞きたいんだけど
char c = '5';
c -= '0';
int a = c*16;
こうゆうやり方ありなの?
char c = '5';
c -= '0';
int a = c*16;
こうゆうやり方ありなの?
724デフォルトの名無しさん (ワッチョイ 2b81-kUw7)
2018/03/31(土) 18:27:06.54ID:gYRRCVdX0 ある
725デフォルトの名無しさん (アウウィフ FF45-HAdz)
2018/03/31(土) 18:27:10.52ID:c97ae/y4F ありじゃね
unsigned char じゃいかんとか
unsigned char の方がいいとか
どうせ int になるんだしとか
ebcdic は?とか
↓
unsigned char じゃいかんとか
unsigned char の方がいいとか
どうせ int になるんだしとか
ebcdic は?とか
↓
726デフォルトの名無しさん (ワッチョイ 5360-uaFS)
2018/03/31(土) 18:49:12.37ID:1xZcLHDp0 >>718
xor スワップは、xor: ^ が
a^(a^b) == b
b^(a^b) == a
で、つまるところ、a, b, a^b の三種類の値のうち一種類が欠けても、残りの二つから欠けた一つを再生できる(RAID5と同じ)ところに着目しているわけで、
xor や同様に exclusive-nor だからできること
ちゃんと二種類の値をずっとキープできておればスワップは成功するが、
そうでない場合は失敗する
上記のことを考えると@ xor/xnor であることと、A現れるオブジェクトが別であることを保証することの両方が必要だと思うよ
>>719
まあ値が等しいときは@オブジェクトが同じ可能性があるAそもそもスワップする必要がない
から値が同じかどうかのチェックをかませば OK ではあるね、それは同意するよ
xor スワップは、xor: ^ が
a^(a^b) == b
b^(a^b) == a
で、つまるところ、a, b, a^b の三種類の値のうち一種類が欠けても、残りの二つから欠けた一つを再生できる(RAID5と同じ)ところに着目しているわけで、
xor や同様に exclusive-nor だからできること
ちゃんと二種類の値をずっとキープできておればスワップは成功するが、
そうでない場合は失敗する
上記のことを考えると@ xor/xnor であることと、A現れるオブジェクトが別であることを保証することの両方が必要だと思うよ
>>719
まあ値が等しいときは@オブジェクトが同じ可能性があるAそもそもスワップする必要がない
から値が同じかどうかのチェックをかませば OK ではあるね、それは同意するよ
727デフォルトの名無しさん (ワッチョイ 4193-zb+2)
2018/03/31(土) 20:38:17.63ID:xg3JkNB30 これなら安全じゃろ。
void xorSwap(int * restrict x, int * restrict y)
{ *x ^= *y;
*y ^= *x;
*x ^= *y;
}
無責任極まりないやり口だけどな。
void xorSwap(int * restrict x, int * restrict y)
{ *x ^= *y;
*y ^= *x;
*x ^= *y;
}
無責任極まりないやり口だけどな。
728727 (ワッチョイ 4193-zb+2)
2018/03/31(土) 20:42:41.15ID:xg3JkNB30 改行乱れちゃった、てへ。
Cはフリーフォーマットだから…。
Cはフリーフォーマットだから…。
729デフォルトの名無しさん (ワッチョイ d374-kUw7)
2018/03/31(土) 20:45:59.73ID:p4zumO6q0 小さな処理なんだからマクロ化かインライン展開させようよ。
730デフォルトの名無しさん (ワッチョイ d180-3UCh)
2018/03/31(土) 20:48:52.36ID:D1vbg0pQ0 自己解決しました。
std::swapでいけました。
std::swapでいけました。
731デフォルトの名無しさん (アウアウカー Sadd-rlcN)
2018/03/31(土) 22:01:45.45ID:qrmwmyS1a C++だったのか
732デフォルトの名無しさん
2018/03/31(土) 23:33:07.89 CもC++も似たようなもんじゃろ
平気平気
平気平気
733デフォルトの名無しさん (ワッチョイ a10d-kUw7)
2018/04/01(日) 07:51:13.57ID:lL1ejtJI0 >>727
安全じゃない
restrictはコンパイラに対してx != yを前提とする最適化を許可するだけで
constのように違反を摘発する機能はない
int *a, *b;
scanf("%p%p", &a, &b); //実行してみなきゃわからんものを
xorSwap(a, b); //翻訳時に摘発できるわけねえだろ
安全じゃない
restrictはコンパイラに対してx != yを前提とする最適化を許可するだけで
constのように違反を摘発する機能はない
int *a, *b;
scanf("%p%p", &a, &b); //実行してみなきゃわからんものを
xorSwap(a, b); //翻訳時に摘発できるわけねえだろ
734デフォルトの名無しさん (ワッチョイ c1f2-kUw7)
2018/04/01(日) 08:04:57.85ID:WPbk7cUz0 「そういう仕様だから呼ぶ側は正しく使えよ」ってことだろ
735デフォルトの名無しさん (ワッチョイ 5961-uaFS)
2018/04/01(日) 09:55:10.10ID:9jhZxGTr0 「トラブルの原因になるものは絶対に使ってはいけない団 登場!!
scanfソード!!GOTO砲発射!!!」
scanfソード!!GOTO砲発射!!!」
736デフォルトの名無しさん (ワッチョイ 93b3-PArs)
2018/04/01(日) 09:59:07.54ID:gIH0xNQX0 ネタにまじれ...
737デフォルトの名無しさん (スフッ Sdb3-VlFK)
2018/04/01(日) 10:19:28.40ID:vuzriXcqd738デフォルトの名無しさん (ワッチョイ a10d-kUw7)
2018/04/01(日) 10:26:27.50ID:lL1ejtJI0 hell fuck no!!
絶対いらん
絶対いらん
739デフォルトの名無しさん (エムゾネ FFb3-HAdz)
2018/04/01(日) 10:28:45.90ID:GlQ4MmqmF >>735
C使うなって話になるわな
C使うなって話になるわな
740デフォルトの名無しさん
2018/04/01(日) 10:52:33.52 >>737
つ assert
つ assert
741デフォルトの名無しさん (ワッチョイ 5923-xai/)
2018/04/01(日) 14:22:10.86ID:QnlJ7EAH0 指導者は、ある程度育った選手に対して解決策を提示しない。
選手が自ら考えるように導く。
考える力に重点を置く。
選手が考えた解決策に、(少しでも)可能性がある場合、次のように対応する。
1.状況を整理する
2.挑戦してもらう
指導者の解決策を、押しつける・誘導するのは愚の骨頂。
選手の思考力の成長を阻害する。
言葉の上だけ、コーチング技法を使用する指導者は不要。
意識・無意識にかかわらず、非言語で指導者自身の方向に誘導するようであれば、指導者は迷惑な存在。
選手は指導者の気持ちを敏感に読み取り、指導者の思う解決策に乗っていく。
指導者が無自覚に自分の気持ち・感情を表出しているのであれば、指導者は害毒でしかない。
(但し、指導者としての方向を持っていなければダメ。)
選手が自ら考えるように導く。
考える力に重点を置く。
選手が考えた解決策に、(少しでも)可能性がある場合、次のように対応する。
1.状況を整理する
2.挑戦してもらう
指導者の解決策を、押しつける・誘導するのは愚の骨頂。
選手の思考力の成長を阻害する。
言葉の上だけ、コーチング技法を使用する指導者は不要。
意識・無意識にかかわらず、非言語で指導者自身の方向に誘導するようであれば、指導者は迷惑な存在。
選手は指導者の気持ちを敏感に読み取り、指導者の思う解決策に乗っていく。
指導者が無自覚に自分の気持ち・感情を表出しているのであれば、指導者は害毒でしかない。
(但し、指導者としての方向を持っていなければダメ。)
742デフォルトの名無しさん (ワッチョイ 5923-xai/)
2018/04/01(日) 14:30:49.47ID:QnlJ7EAH0 *“オレは知っている。選手は判っていない。”と思い込んでいる。
→「私が中心」(選手は不在)
→選手の変化が見えない。
*“あれもこれも伝えたい”と思っている。
→指導者の自己の存在証明をしたいだけ。
→選手の依存過多を喜んでいる。
→指導者の中身の無さを補償している。
→自分の目標と選手の目標がズレていることに気がつかない。
→成長のゴール設定が不明確。あるいは勝つことだけに目標を設定している。
(勝負までに何をやりきったらよいのか/何を発揮したら勝利か/勝った後どうするか、指導者ならば明確にもっておきたい。)
→優先順序が整理できていない。
→現状の把握すらできなくなっている。
*“言わないと相手のためにならない。”と信じている。
→根本的に選手を信頼していない。
→“指導”という名の自己満足。
*“今、言わないといけない。”という焦り
→指導計画の無さが露呈しただけ。
→日頃の怠慢のツケ。
(直ちに言わないければいけないことはあるが、そう頻発しない。)
*“自分の経験なら、具体的に伝えることができる”という自分の過去へのこだわり
→指導者自身の学習がストップしている。
→偏狭さの表出
→選手より、常に自分が上。
→自分のコピー以外のモデルがない。
→指導者自身の目標が低い。(悪い意味で、すぐに満足する。)
→自分の小ささに築かない哀れさ
解決策を提示する悪癖からの脱却は、選手を信頼することがキー。選手を信頼できるかどうかは、選手の問題ではなく、指導者自身の課題。
→「私が中心」(選手は不在)
→選手の変化が見えない。
*“あれもこれも伝えたい”と思っている。
→指導者の自己の存在証明をしたいだけ。
→選手の依存過多を喜んでいる。
→指導者の中身の無さを補償している。
→自分の目標と選手の目標がズレていることに気がつかない。
→成長のゴール設定が不明確。あるいは勝つことだけに目標を設定している。
(勝負までに何をやりきったらよいのか/何を発揮したら勝利か/勝った後どうするか、指導者ならば明確にもっておきたい。)
→優先順序が整理できていない。
→現状の把握すらできなくなっている。
*“言わないと相手のためにならない。”と信じている。
→根本的に選手を信頼していない。
→“指導”という名の自己満足。
*“今、言わないといけない。”という焦り
→指導計画の無さが露呈しただけ。
→日頃の怠慢のツケ。
(直ちに言わないければいけないことはあるが、そう頻発しない。)
*“自分の経験なら、具体的に伝えることができる”という自分の過去へのこだわり
→指導者自身の学習がストップしている。
→偏狭さの表出
→選手より、常に自分が上。
→自分のコピー以外のモデルがない。
→指導者自身の目標が低い。(悪い意味で、すぐに満足する。)
→自分の小ささに築かない哀れさ
解決策を提示する悪癖からの脱却は、選手を信頼することがキー。選手を信頼できるかどうかは、選手の問題ではなく、指導者自身の課題。
743デフォルトの名無しさん (ワッチョイ 5923-xai/)
2018/04/01(日) 14:31:46.69ID:QnlJ7EAH0 選手がある程度育っているにもかかわらず、解決策ばかりを提示してしまうとしたら……
指導者のサービス精神が、少々裏目に出ただけ。
やり方を、知らなかっただけ。
視線が、近い所に留まり過ぎただけ。
選手の考えと主体性に賭ければ良い。
「質問するだけ」「聞くだけ」で十分。他愛ない会話で済むかもしれない。
指導者としてのやり方を、ちょっと広げるだけ。
選手と一緒に成長すればよい。
指導者のサービス精神が、少々裏目に出ただけ。
やり方を、知らなかっただけ。
視線が、近い所に留まり過ぎただけ。
選手の考えと主体性に賭ければ良い。
「質問するだけ」「聞くだけ」で十分。他愛ない会話で済むかもしれない。
指導者としてのやり方を、ちょっと広げるだけ。
選手と一緒に成長すればよい。
744デフォルトの名無しさん (アウアウカー Sadd-QRaF)
2018/04/01(日) 15:09:50.39ID:EJgAiXSoa 長い3行で
745デフォルトの名無しさん (ワッチョイ c1b3-Cc8k)
2018/04/01(日) 20:22:49.32ID:FPe02iov0 c疲れる高級言語が良いよぉ
746デフォルトの名無しさん (ワッチョイ a139-kUw7)
2018/04/01(日) 22:01:04.55ID:Xs8rW8os0 破門
747デフォルトの名無しさん (アウアウカー Sadd-ByiX)
2018/04/01(日) 22:02:31.16ID:kjSWJmola C++よりは65536倍マシ
748デフォルトの名無しさん (ワッチョイ 4104-2GNe)
2018/04/02(月) 02:42:44.32ID:335Cb1sP0 C++の方が全然マシ。
C++で要求されるのは記憶力だが、Cはマジで実力が試される。
C++で要求されるのは記憶力だが、Cはマジで実力が試される。
749デフォルトの名無しさん (アウアウエー Sa23-HAdz)
2018/04/02(月) 04:26:42.33ID:3ewhMOuha750デフォルトの名無しさん (ワッチョイ 21b5-Uc3+)
2018/04/02(月) 09:23:05.49ID:tz45bHyl0 そんな君達に、C#
751デフォルトの名無しさん (アウアウカー Sadd-rlcN)
2018/04/02(月) 11:32:18.94ID:IY8Jb2oda C#は何かとっても嫌な予感がするのでパス
752デフォルトの名無しさん (ワッチョイ dbe7-2GNe)
2018/04/02(月) 11:37:34.04ID:GUMdRf0S0 組込みならverilog
753デフォルトの名無しさん (ワッチョイ 89a2-HAdz)
2018/04/02(月) 14:47:00.17ID:r6uHUG7/0 C#はないわ
754デフォルトの名無しさん (アウアウカー Sadd-ByiX)
2018/04/02(月) 15:09:03.97ID:+y0jgVYha C, C# はアリ
C++みたいな汚い言語はナシ
C++みたいな汚い言語はナシ
755デフォルトの名無しさん (アウアウカー Sadd-QRaF)
2018/04/02(月) 15:11:32.65ID:hvd81u+Da Cライクな言語なら何でもこいだわ
(知らないのは新たに勉強せざるを得ないが)
1人で書くのは大抵C++
(知らないのは新たに勉強せざるを得ないが)
1人で書くのは大抵C++
756デフォルトの名無しさん (ワッチョイ 13d4-Z+f4)
2018/04/02(月) 16:32:47.98ID:gGbBmtO80 C、C#、Goが好き
757デフォルトの名無しさん (ワッチョイ 19bd-kUw7)
2018/04/02(月) 17:06:51.28ID:E1iWIfmB0 C++17かなり良くなってきたね
C++98での苦行が嘘のよう
C++98での苦行が嘘のよう
758デフォルトの名無しさん (ササクッテロル Sp0d-Uc3+)
2018/04/02(月) 17:07:57.92ID:NgLCsptVp c++はテンプレート辺りから怪しくなって来た。
759デフォルトの名無しさん (ワッチョイ 5961-uaFS)
2018/04/02(月) 17:35:10.19ID:Hj+Kq4pv0 オールアセンブラで組んでた人が楽になるための言語。
760デフォルトの名無しさん (ワッチョイ 19bd-kUw7)
2018/04/02(月) 17:46:48.43ID:E1iWIfmB0 STLを初めて見た頃は違和感ありありだったけど
それはテンプレートを使うからでも、見た目が悪いからでもなく、中途半端だったから
C++11から以後、そのへんの補完工事が始まったのがありがたい
それはテンプレートを使うからでも、見た目が悪いからでもなく、中途半端だったから
C++11から以後、そのへんの補完工事が始まったのがありがたい
761デフォルトの名無しさん (ササクッテロル Sp0d-Uc3+)
2018/04/02(月) 17:52:55.07ID:NgLCsptVp 結局テンプレートって、型をオブジェクト型に統一してしまえばいいだけで、あんまり意味無いよな。
762デフォルトの名無しさん (ワッチョイ 19bd-kUw7)
2018/04/02(月) 18:00:26.75ID:E1iWIfmB0 Smalltalk風の継承モデルねえ
正直、俺も昔は盲信したことがあって今は恥じている
テンプレートならコンパイラがやってくれることを
自前でdynamic_castなんかやだよ
nested_exceptionとかは仕方ないけどね
正直、俺も昔は盲信したことがあって今は恥じている
テンプレートならコンパイラがやってくれることを
自前でdynamic_castなんかやだよ
nested_exceptionとかは仕方ないけどね
763デフォルトの名無しさん (アウアウカー Sadd-rlcN)
2018/04/02(月) 19:47:22.47ID:yiGPtloFa >>761
Javaなんかは内部でそうやって実現してるな。
Javaなんかは内部でそうやって実現してるな。
764デフォルトの名無しさん (ブーイモ MMf5-vInS)
2018/04/02(月) 20:33:40.82ID:EffuLSkeM よそでやれ
765デフォルトの名無しさん
2018/04/02(月) 22:15:26.67 >>761
そこはVariant型やろ
そこはVariant型やろ
766デフォルトの名無しさん (ワッチョイ b91b-yiKA)
2018/04/02(月) 22:26:42.69ID:pVqQLih90 printfの出力をマルチスレッドで行うことはできないのでしょうか
素人的には
スレッド1 printf("abcde");
スレッド2 printf("12345");
↓
出力 a1b23c4de5
となることを考えたのですが、WinAPIのCreateThreadやC++のThreadでも、CPU使用率はシングルスレッドのときと変わらず、出力もこのようにはなりませんでした
Windows VS2017
素人的には
スレッド1 printf("abcde");
スレッド2 printf("12345");
↓
出力 a1b23c4de5
となることを考えたのですが、WinAPIのCreateThreadやC++のThreadでも、CPU使用率はシングルスレッドのときと変わらず、出力もこのようにはなりませんでした
Windows VS2017
767片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/04/02(月) 22:29:05.76ID:APYGmZJZd >>766
排他制御されていないCRTを探す方が難しい。
排他制御されていないCRTを探す方が難しい。
768デフォルトの名無しさん (ワッチョイ c161-2OKV)
2018/04/02(月) 23:11:46.09ID:ifLgvYYR0 はじめまして。
大学でプログラミング関係の授業を受けるのですが、それの復習、応用などをrpgツクールmvですることは可能でしょうか?
ちょこっと調べた感じプログラミング要素もあるらしいのですが、c言語はあんまり使わないとかなんとかという記事も見られました。
どうせなら楽しく勉強したいので、ゲームを作りながら学習できないもんですかね...。
大学でプログラミング関係の授業を受けるのですが、それの復習、応用などをrpgツクールmvですることは可能でしょうか?
ちょこっと調べた感じプログラミング要素もあるらしいのですが、c言語はあんまり使わないとかなんとかという記事も見られました。
どうせなら楽しく勉強したいので、ゲームを作りながら学習できないもんですかね...。
769デフォルトの名無しさん (スップ Sdb3-7eys)
2018/04/02(月) 23:22:32.32ID:k8TtPNR/d >>768
プログラミングを授業で受けるなら、ゲーム制作はツクールMVよりUnityのがいいと思うけど授業内容は進むに連れてむしろツクールMVやUnityのようなのの中身についてになるから復習がてらにはしにくい
モチベ維持にはとても良いと思います
プログラミングを授業で受けるなら、ゲーム制作はツクールMVよりUnityのがいいと思うけど授業内容は進むに連れてむしろツクールMVやUnityのようなのの中身についてになるから復習がてらにはしにくい
モチベ維持にはとても良いと思います
770デフォルトの名無しさん (ワッチョイ b91b-yiKA)
2018/04/02(月) 23:33:36.58ID:pVqQLih90 >>767
ありがとうございます
ありがとうございます
771デフォルトの名無しさん (ワッチョイ 4104-2GNe)
2018/04/02(月) 23:41:50.21ID:335Cb1sP0 バリアント型は何ビットなん?って話になるのがC++。
772デフォルトの名無しさん (ワッチョイ 4150-W7mk)
2018/04/03(火) 04:15:40.51ID:j/8PevsK0773デフォルトの名無しさん (アウアウウー Sa45-Z+f4)
2018/04/03(火) 08:36:15.92ID:cWIVDHVHa O_DSYNCって使ったことある?
774デフォルトの名無しさん (アウアウカー Sadd-rlcN)
2018/04/03(火) 09:03:18.53ID:Lqpq4yV4a ない
775デフォルトの名無しさん (スプッッ Sdf3-/uQW)
2018/04/03(火) 17:34:38.59ID:IRh8xu7sd ないな
776デフォルトの名無しさん (ワッチョイ d98a-vInS)
2018/04/03(火) 20:54:03.05ID:TORpZXhc0 ないっす
JFS用?
JFS用?
777デフォルトの名無しさん (ワッチョイ 219f-kUw7)
2018/04/04(水) 00:52:55.41ID:Ssb/YhXn0778デフォルトの名無しさん (アウアウエー Sa23-HAdz)
2018/04/04(水) 02:32:43.57ID:h2UR4/YMa でっていう
779デフォルトの名無しさん (ササクッテロル Sp0d-Uc3+)
2018/04/04(水) 11:23:02.06ID:yTnGZmgQp 同期ってのは、処理が終わるまで帰って来ないって話だ。
下手すっと何秒も帰って来ないから、そこら中が固まる。
下手すっと何秒も帰って来ないから、そこら中が固まる。
780デフォルトの名無しさん (ワッチョイ 19bd-kUw7)
2018/04/04(水) 15:35:44.60ID:kI4IT8Vg0 同期というより直列だね
781デフォルトの名無しさん (ワッチョイ d374-kUw7)
2018/04/04(水) 21:14:25.41ID:rBWooG9b0 動悸I/O
782デフォルトの名無しさん (ワッチョイ 81b3-L1IY)
2018/04/04(水) 21:17:17.94ID:iV3ol7kd0 同期/非同期 ブロッキング/ノンブロッキング
783デフォルトの名無しさん
2018/04/04(水) 22:06:43.40 同期の絆
784デフォルトの名無しさん (ワンミングク MMd3-vInS)
2018/04/04(水) 22:10:42.29ID:tDZB1fULM 貴様と俺とは同期のファイル
785デフォルトの名無しさん (ワッチョイ 25b3-e08n)
2018/04/05(木) 08:17:37.54ID:zuAyx/JN0 数値計算手法の一つである陰解法って陽解法とどう違うんだろう?まったく理解が進まん
陰解法での次ステップの状態を計算するには陽解法と違って次ステップでの値が含まれてる関係で行列の方程式?を解かなければならないらしいけど、その方程式で導く値がどう答えに結びついていくのかがわからない
(最終的にはC言語のプログラムに落とし込みたい。陽解法のプログラムはもう作ってあるんで多少なりとも流用できると楽なんだけどそう簡単にはいかんよね?)
陰解法での次ステップの状態を計算するには陽解法と違って次ステップでの値が含まれてる関係で行列の方程式?を解かなければならないらしいけど、その方程式で導く値がどう答えに結びついていくのかがわからない
(最終的にはC言語のプログラムに落とし込みたい。陽解法のプログラムはもう作ってあるんで多少なりとも流用できると楽なんだけどそう簡単にはいかんよね?)
786デフォルトの名無しさん (ワッチョイ 4a12-U1J9)
2018/04/05(木) 12:42:25.18ID:O2KVno4c0 平たく言うと
100秒後の状態を得るのに途中の一つずつを100個全部求めなきゃいけないのが陽解法
10秒ごとの計算を10回、でいいのが陰解法
陰解法はかんたんに未来を得られる分、行列計算が面倒になる
100秒後の状態を得るのに途中の一つずつを100個全部求めなきゃいけないのが陽解法
10秒ごとの計算を10回、でいいのが陰解法
陰解法はかんたんに未来を得られる分、行列計算が面倒になる
787デフォルトの名無しさん (ワッチョイ 6d61-7DGm)
2018/04/05(木) 23:51:02.65ID:Un4TbCjZ0 これなんですけど、printfのとこの"%2c"で、
" %2c"
" %2c "
など空白を入れることで配列が変わってくるのですが、前に空白と後ろに空白のときの規則性がわかりません。教えて欲しいです。
https://i.imgur.com/QI86not.jpg
" %2c"
" %2c "
など空白を入れることで配列が変わってくるのですが、前に空白と後ろに空白のときの規則性がわかりません。教えて欲しいです。
https://i.imgur.com/QI86not.jpg
788デフォルトの名無しさん (ブーイモ MM39-sWvK)
2018/04/06(金) 00:10:45.42ID:alNyslUNM もっと具体的に
789デフォルトの名無しさん (ワッチョイ 2d93-SKFW)
2018/04/06(金) 05:54:14.00ID:dKA/BnpB0 >>787
質問にある“配列”てのは、画面に出力される結果のことかな?
表示される文字やその順番は同じだけど、文字の間の空白の数が違う、と。
プログラミング界隈では“配列”って言葉は特定の意味を持った専門用語だし、
問題のプログラムはその意味での配列を使ってないから軽く混乱を招くかと。
質問にある“配列”てのは、画面に出力される結果のことかな?
表示される文字やその順番は同じだけど、文字の間の空白の数が違う、と。
プログラミング界隈では“配列”って言葉は特定の意味を持った専門用語だし、
問題のプログラムはその意味での配列を使ってないから軽く混乱を招くかと。
790デフォルトの名無しさん (ワッチョイ c1f7-p6L1)
2018/04/07(土) 07:48:11.30ID:mjL64jtF0 配置とかか?自分の試した結果で理解しろよ
791デフォルトの名無しさん (ワッチョイ 2d04-43s8)
2018/04/07(土) 13:51:14.96ID:Bd1xKzd/0 表示系の2バイト文字の扱い云々な気がする。
792デフォルトの名無しさん (ワッチョイ 5d9f-vJpg)
2018/04/07(土) 15:06:53.28ID:bMqQKRLP0 >>787
%2c の部分は右詰めで幅2文字の指定になるが c なので常に1文字の指定になり
引数の int 型数値は unsigned char に変換されて出力される。つまり %2c の部分
だけでスペース1文字と引数で与えた1文字が出力される。(もちろん端末によっては
引数の値によって1文字の扱いにならないかも知れないが、その辺は説明が長く
なるので省略)。
後はその前後にスペースを付け加えて出すかだけの問題。そのプログラムには
改行がないので全て繋がって出力される。(1回も改行を出力しないままプログラムが
終わるので実行環境によっては出力の後に続けてシェルのプロンプトが出るかも
知れない)。
%2c の部分は右詰めで幅2文字の指定になるが c なので常に1文字の指定になり
引数の int 型数値は unsigned char に変換されて出力される。つまり %2c の部分
だけでスペース1文字と引数で与えた1文字が出力される。(もちろん端末によっては
引数の値によって1文字の扱いにならないかも知れないが、その辺は説明が長く
なるので省略)。
後はその前後にスペースを付け加えて出すかだけの問題。そのプログラムには
改行がないので全て繋がって出力される。(1回も改行を出力しないままプログラムが
終わるので実行環境によっては出力の後に続けてシェルのプロンプトが出るかも
知れない)。
793デフォルトの名無しさん (ワッチョイ 2d23-6Vn5)
2018/04/07(土) 15:19:36.81ID:vVe4gpjb0 判りにくい日本語だな
判るものもかえって判らなくなるくらいひどい
判るものもかえって判らなくなるくらいひどい
794デフォルトの名無しさん (ワッチョイ 5d9f-vJpg)
2018/04/07(土) 16:08:23.10ID:bMqQKRLP0 じゃあ分かり易く書き換えてくれ。
795デフォルトの名無しさん (スップ Sdca-3orc)
2018/04/07(土) 19:07:44.77ID:jn0jIz6fd まず、%2cは必ず「ブランク*」(*は任意の1文字)になる。
その上で整形用のブランクはprintfを分けて、
ブランク以外の文字とかで試してみろ。
その上で整形用のブランクはprintfを分けて、
ブランク以外の文字とかで試してみろ。
796デフォルトの名無しさん (アウアウウー Sa11-Yvdw)
2018/04/07(土) 21:25:17.61ID:I35+hkP6a >>745
アセンブラからきたわいCの楽さに歓喜
アセンブラからきたわいCの楽さに歓喜
797デフォルトの名無しさん
2018/04/07(土) 21:49:40.43 Visual BasicとかPerlとかから入った自分としては、
Cのほうが簡単に書ける場面もあれば
VBSやVBAがいい場面もあればPerlがいい場面もあって
要はどの言語でも楽しく書ければそれでええやん
Cのほうが簡単に書ける場面もあれば
VBSやVBAがいい場面もあればPerlがいい場面もあって
要はどの言語でも楽しく書ければそれでええやん
798デフォルトの名無しさん (ワッチョイ 3ee7-43s8)
2018/04/08(日) 06:56:45.64ID:oETTfDn00 ワイはbash + sed + cの三点セットや
799デフォルトの名無しさん (ワッチョイ d99f-lfby)
2018/04/09(月) 19:49:06.28ID:bmGQy2qQ0 >>787
こんなの試してみたら分かったりしない?(\nは改行)
printf("%c\n",'a');
printf("%1c\n",'a');
printf("%2c\n",'a');
printf("%3c\n",'a');
printf("%4c\n",'a');
printf("%5c\n",'a');
こんなの試してみたら分かったりしない?(\nは改行)
printf("%c\n",'a');
printf("%1c\n",'a');
printf("%2c\n",'a');
printf("%3c\n",'a');
printf("%4c\n",'a');
printf("%5c\n",'a');
800デフォルトの名無しさん (JP 0H65-sWvK)
2018/04/09(月) 20:21:36.79ID:qxDYyi6TH 一切出てこない質問者の相手はいらんだろ
801デフォルトの名無しさん (ブーイモ MMe7-64l2)
2018/04/15(日) 15:16:14.29ID:iG9vZW44M 上の写真を見る限りjが増えたタイミングでprintfで改行コード入れてるっぽいけどそれならiのforが終わったタイミングで改行コード入れれば動くんじゃないですか?
なぜiが8までしか回さないのかわからないですが…
なぜiが8までしか回さないのかわからないですが…
802デフォルトの名無しさん (ワッチョイ 93ab-ycE0)
2018/04/15(日) 15:38:09.01ID:MyboI2lC0 しょーもない質問ですいません
vs2017で勉強してるど素人なんですが
コードをミスして修正しようとすると文字が上書きされて
文字を挿入できないん時があるんですが、
なぜでしょうか?
vs2017で勉強してるど素人なんですが
コードをミスして修正しようとすると文字が上書きされて
文字を挿入できないん時があるんですが、
なぜでしょうか?
803デフォルトの名無しさん
2018/04/15(日) 15:41:00.10804デフォルトの名無しさん (ワッチョイ ffb3-fgqO)
2018/04/15(日) 15:42:04.62ID:CIuag2/D0805デフォルトの名無しさん (アウアウカー Sa47-xkpZ)
2018/04/15(日) 15:50:05.64ID:ASLFteC6a 上書きモードに誤爆したろ
806デフォルトの名無しさん (ワッチョイ cf80-YIzk)
2018/04/15(日) 15:54:21.86ID:0gUBaoqj0807デフォルトの名無しさん
2018/04/15(日) 16:17:29.71 >>806
この程度読み取れないようじゃエスパーに向いてないよ
> どこに改行コードがあるのか
予想回答「int c=‘ ‘;」って改行コードですよね?
iが増えるたびに改行コードをprintしたいんですよね?
> iが8までとは何の事か
予想回答:すみません、jの間違いです!
この程度読み取れないようじゃエスパーに向いてないよ
> どこに改行コードがあるのか
予想回答「int c=‘ ‘;」って改行コードですよね?
iが増えるたびに改行コードをprintしたいんですよね?
> iが8までとは何の事か
予想回答:すみません、jの間違いです!
808デフォルトの名無しさん (フリッテル MMff-D6/M)
2018/04/15(日) 16:20:53.00ID:LLURRdNlM 改行は'¥n'
' 'はスペース
' 'はスペース
809デフォルトの名無しさん (スップ Sd1f-96DA)
2018/04/15(日) 16:30:24.50ID:bKUHpU4ed810デフォルトの名無しさん (ワッチョイ 43bb-LJHW)
2018/04/15(日) 19:02:55.57ID:+NxoeMlk0 C言語でのステートマシンの設計や、上手なコーディングについて
体系的に学べるお勧めの書籍やサイト教えて下さい。
体系的に学べるお勧めの書籍やサイト教えて下さい。
811デフォルトの名無しさん (ワッチョイ 43bb-LJHW)
2018/04/15(日) 19:08:40.56ID:+NxoeMlk0 連投で申し訳ないけど
この辺の技術ってC++勉強した方が身に付くのかな?
この辺の技術ってC++勉強した方が身に付くのかな?
812デフォルトの名無しさん (ワッチョイ a304-x9ai)
2018/04/15(日) 19:10:47.07ID:7zIgNBcs0 Cはライブラリが貧弱でほとんど自作しないといけない。
C++はその辺多少マシ。Boostとかあるし。
C++はその辺多少マシ。Boostとかあるし。
813デフォルトの名無しさん (ワッチョイ a304-x9ai)
2018/04/15(日) 19:14:55.01ID:7zIgNBcs0 至極の名言教えてやるぜ。受け売りだけどな。
コードを効率的にしたり、最強の最適化だったりするそれが一番効くのは書かないことだ。
書くと何らかの負荷になる、コードもグチャグチャになる。
必要なことだけ書いて後は流れに任せるのが上達の道。
コードを効率的にしたり、最強の最適化だったりするそれが一番効くのは書かないことだ。
書くと何らかの負荷になる、コードもグチャグチャになる。
必要なことだけ書いて後は流れに任せるのが上達の道。
814デフォルトの名無しさん (スププ Sd1f-2qx6)
2018/04/15(日) 19:47:03.66ID:aZbHy3F9d C++って言うほどライブラリ充実してるか?
815デフォルトの名無しさん (ワッチョイ 43bb-LJHW)
2018/04/15(日) 19:59:11.25ID:+NxoeMlk0 うーん・・・人によって考え方が違うから正解なんてないし
2chのこのレスだけでは具体的な提示とか難しいよね
本当に必要な処理だけ書いてたら関数長くなって
見通し悪くなったりメンテし辛くなったりしない?
2chのこのレスだけでは具体的な提示とか難しいよね
本当に必要な処理だけ書いてたら関数長くなって
見通し悪くなったりメンテし辛くなったりしない?
816デフォルトの名無しさん (ワッチョイ a39f-/JlG)
2018/04/15(日) 20:03:21.51ID:IgQGrpHk0 >>810
ない。
>>811
関係ない。
君は本質的な「プログラミングの腕前」を上達させる為に、体系的に学べる物を探しているんだろ?
ならそれは言語には全く関係ないことは分かるだろ。
そして、そんな物は今はない。なぜならプログラミングは今もまだ発展途上だから。
そもそも歴史が浅い。プログラミングには100年ほどの歴史しかないし、
プログラミング作法が学問として成立してからは50年ほどしか経ってない。
だから現在でも試行錯誤中なんだよ。
それは今更C#/C++/Javaがラムダを採用したことからも分かるだろ。
ラムダ自体はLispの昔からあった。
そしてこれらの言語はそれを知っていて不採用としたわけだが、
今更の方向転換=間違いを認めた、ということなんだよ。
まだそれくらいあやふやなものだって事。
勿論各自が「オレオレ流スーパーハッカー道」を上梓することは出来るのだけど、
実際そういう奴はいないようだ。
とはいえ、結果的に全ての言語が似たり寄ったりになってきているから、
これは成熟してきていることを意味する。
となると、今後は体系化されていくだろうし、そういうサイトや本が現れてきてもおかしくない。
今は>>813みたいな、一言集みたいなのしかないね。
https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/
ない。
>>811
関係ない。
君は本質的な「プログラミングの腕前」を上達させる為に、体系的に学べる物を探しているんだろ?
ならそれは言語には全く関係ないことは分かるだろ。
そして、そんな物は今はない。なぜならプログラミングは今もまだ発展途上だから。
そもそも歴史が浅い。プログラミングには100年ほどの歴史しかないし、
プログラミング作法が学問として成立してからは50年ほどしか経ってない。
だから現在でも試行錯誤中なんだよ。
それは今更C#/C++/Javaがラムダを採用したことからも分かるだろ。
ラムダ自体はLispの昔からあった。
そしてこれらの言語はそれを知っていて不採用としたわけだが、
今更の方向転換=間違いを認めた、ということなんだよ。
まだそれくらいあやふやなものだって事。
勿論各自が「オレオレ流スーパーハッカー道」を上梓することは出来るのだけど、
実際そういう奴はいないようだ。
とはいえ、結果的に全ての言語が似たり寄ったりになってきているから、
これは成熟してきていることを意味する。
となると、今後は体系化されていくだろうし、そういうサイトや本が現れてきてもおかしくない。
今は>>813みたいな、一言集みたいなのしかないね。
https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/
817デフォルトの名無しさん (ワッチョイ ffb3-fgqO)
2018/04/15(日) 20:18:14.92ID:CIuag2/D0 >>816
C++/C#/Java のラムダ式ってラムダ式じゃないと表現できない「何か」を表現する、というよりは、シンタックスシュガーとしてのラムダ式であることが不満です
C++/C#/Java のラムダ式ってラムダ式じゃないと表現できない「何か」を表現する、というよりは、シンタックスシュガーとしてのラムダ式であることが不満です
819デフォルトの名無しさん (ワッチョイ a39f-/JlG)
2018/04/15(日) 20:26:36.28ID:IgQGrpHk0 >>819
Y コンビネーターとか、どうですか?
Y コンビネーターとか、どうですか?
821デフォルトの名無しさん (スプッッ Sd1f-E7pr)
2018/04/15(日) 20:33:38.79ID:8Bp5iafSd822デフォルトの名無しさん (ワッチョイ a39f-/JlG)
2018/04/15(日) 20:35:56.05ID:IgQGrpHk0823デフォルトの名無しさん (ワッチョイ a304-x9ai)
2018/04/15(日) 21:29:24.63ID:7zIgNBcs0824デフォルトの名無しさん (ワッチョイ a350-96DA)
2018/04/15(日) 23:30:02.09ID:sXJBpbWg0 この板でチューリング完全て言葉をみるとは思わなかった
825デフォルトの名無しさん (アウアウカー Sa47-QFn6)
2018/04/15(日) 23:59:29.91ID:L6Qt+I9Ha だいたい、どう抽象化するのがええのかって話でチューリング完全は関係ないからねえ。
前提としてはそうでないとあかんかも知れんけど。
前提としてはそうでないとあかんかも知れんけど。
826デフォルトの名無しさん (ワッチョイ a39f-/JlG)
2018/04/16(月) 00:40:26.76ID:qQ0bjYjD0 抽象化については「オブジェクト指向」で今のところ決着してるだろ。
これを否定する見解や言語は無いと思うが。
これを否定する見解や言語は無いと思うが。
827デフォルトの名無しさん (ワッチョイ a311-d/7d)
2018/04/16(月) 04:32:33.72ID:94linQhp0 コンビネータでも実装するか?
828デフォルトの名無しさん (ワッチョイ a39f-/JlG)
2018/04/16(月) 23:38:04.25ID:qQ0bjYjD0 >>820
>>827
お前ら知ってるのならそのメリットを(出来れば具体的に)書いてみてくれないか?
一応Wiki読んだが、
> 明示的に再帰を書かずに再帰を実現する為に用いる事ができる。
> なお、一般にそういった言語では普通に再帰が使えるので、
> プログラミングにおいてはパズル的なテクニック以上の意味は無い。
> https://ja.wikipedia.org/wiki/%E4%B8%8D%E5%8B%95%E7%82%B9%E3%82%B3%E3%83%B3%E3%83%93%E3%83%8D%E3%83%BC%E3%82%BF
なら、いらねえし、採用されることはないと思うが。
>>827
お前ら知ってるのならそのメリットを(出来れば具体的に)書いてみてくれないか?
一応Wiki読んだが、
> 明示的に再帰を書かずに再帰を実現する為に用いる事ができる。
> なお、一般にそういった言語では普通に再帰が使えるので、
> プログラミングにおいてはパズル的なテクニック以上の意味は無い。
> https://ja.wikipedia.org/wiki/%E4%B8%8D%E5%8B%95%E7%82%B9%E3%82%B3%E3%83%B3%E3%83%93%E3%83%8D%E3%83%BC%E3%82%BF
なら、いらねえし、採用されることはないと思うが。
>>828
その wikipedia の解説はちょっと本質からはずれている気がする
「明示的な識別子を含まないで再帰関数が記述できる」くらいか
ラムダ表現を採用している、というのなら不動点コンビネータくらいは記述できないといけないのではないか?
いいかえれば不動点コンビネータを表現できないラムダ表現は「何か大事な部分が欠けている」
ラムダ表現は理論的なモデル(計算可能性を論じるなど)として考案されたもので、実用とか効率とかからは遠く離れている
ラムダ表現を売りにする言語(lisp とか)ならともかく、C#/C++/Java のような実用・効率を求める言語で単に「ラムダ表現ができる」「簡潔だ」くらいの理由で採用されるのは、無目的に言語仕様を拡張しているという理由で個人的には不満
さらにはラムダ表現を老害フィルタがわりに使う者もいたりするが、そういうのには賛同しがたい
その wikipedia の解説はちょっと本質からはずれている気がする
「明示的な識別子を含まないで再帰関数が記述できる」くらいか
ラムダ表現を採用している、というのなら不動点コンビネータくらいは記述できないといけないのではないか?
いいかえれば不動点コンビネータを表現できないラムダ表現は「何か大事な部分が欠けている」
ラムダ表現は理論的なモデル(計算可能性を論じるなど)として考案されたもので、実用とか効率とかからは遠く離れている
ラムダ表現を売りにする言語(lisp とか)ならともかく、C#/C++/Java のような実用・効率を求める言語で単に「ラムダ表現ができる」「簡潔だ」くらいの理由で採用されるのは、無目的に言語仕様を拡張しているという理由で個人的には不満
さらにはラムダ表現を老害フィルタがわりに使う者もいたりするが、そういうのには賛同しがたい
830デフォルトの名無しさん (アウアウカー Sa47-QFn6)
2018/04/17(火) 01:21:31.43ID:RhwG6Rqia javascriptだとアリって気がするよな。
なぜかは知らんが。まあlisp感あるからか。
なぜかは知らんが。まあlisp感あるからか。
831デフォルトの名無しさん (ワッチョイ ff12-/JlG)
2018/04/17(火) 08:33:39.92ID:dXM64r3I0 javascriptにはなぜかオブジェクト指向が無いからな
コンビネータはC++には早晩実装されそうな気がする
コンビネータはC++には早晩実装されそうな気がする
832デフォルトの名無しさん (ワッチョイ 738a-A4FG)
2018/04/17(火) 09:37:19.33ID:tZLDyJo/0 C++やJavaはクラスベースのオブジェクト指向言語
JavaScriptはプロトタイプベースのオブジェクト指向言語
JavaScriptはプロトタイプベースのオブジェクト指向言語
833デフォルトの名無しさん (ワッチョイ a39f-/JlG)
2018/04/17(火) 23:42:23.84ID:Yk52Q7IR0 >>829
今の仕様で不動点コンビネータが記述できるのかどうかは俺には分からないが、
焦点はその先で、「記述できたら何がうれしいのだ?」なのだと思うよ。
実用言語で重視されるのは当然「実用性」であって、「学術性」ではない。
逆に、実用性皆無なら、当該部分が削除された状態で採用されるべきだ。
例えばC#は意図的にインラインアセンブラを禁止している。
ヘルスバーグのインタビューがググッても出てこないのだが、心は、
「C#のコードならメンテできます」の為の必要知識量を抑えること、だった。
これは長期的に要員確保の難易度を下げ、結果的にメンテ性を上げる。
これも実用言語では重要だよ。
アメリカでPythonを使うのも、Python自体が良い言語だと思っている奴は皆無で、
「Pythonならみんな読めるし書けるから」だからね。
そのコードが10年以上使われることが分かっているのなら、
10年後に要員確保できない可能性がある言語を選択するのは間違いだし。
Cは、(時代的に無理ではあったが)何でもありの状態で、
文法は極めて簡単だが問題は中で何をやっているかで、読んでみなければ分からない。
「Cのコードならメンテできます」とか、簡単に言うのは無理だろ。
C#はイミフなコード構成(大体はCでも警告が出るもの)も禁止されており、
一応、エンジニアが「C#ならメンテできます」と言えることを目指している。
(上手く行っているとは言い難い部分もあるが)
酷い話だが、Javaは10年間全く進歩しないことによってこれを達成してしまっているし。
だから、話を戻すと、
実用言語においては実用性のある機能は取り入れるべきだが、
実用性がない機能は捨てられるべきなんだよ。
(大は小を兼ねる、多めに採用しとけ、ではない。同様に無駄に構文糖が多いのも問題)
今回ラムダが矮小化されて取り込まれているということなら、
取り込まれた部分は必要だと、切り捨てられた部分は不要だと判断されただけ。
勿論今後覆る可能性もあるけどね。
今の仕様で不動点コンビネータが記述できるのかどうかは俺には分からないが、
焦点はその先で、「記述できたら何がうれしいのだ?」なのだと思うよ。
実用言語で重視されるのは当然「実用性」であって、「学術性」ではない。
逆に、実用性皆無なら、当該部分が削除された状態で採用されるべきだ。
例えばC#は意図的にインラインアセンブラを禁止している。
ヘルスバーグのインタビューがググッても出てこないのだが、心は、
「C#のコードならメンテできます」の為の必要知識量を抑えること、だった。
これは長期的に要員確保の難易度を下げ、結果的にメンテ性を上げる。
これも実用言語では重要だよ。
アメリカでPythonを使うのも、Python自体が良い言語だと思っている奴は皆無で、
「Pythonならみんな読めるし書けるから」だからね。
そのコードが10年以上使われることが分かっているのなら、
10年後に要員確保できない可能性がある言語を選択するのは間違いだし。
Cは、(時代的に無理ではあったが)何でもありの状態で、
文法は極めて簡単だが問題は中で何をやっているかで、読んでみなければ分からない。
「Cのコードならメンテできます」とか、簡単に言うのは無理だろ。
C#はイミフなコード構成(大体はCでも警告が出るもの)も禁止されており、
一応、エンジニアが「C#ならメンテできます」と言えることを目指している。
(上手く行っているとは言い難い部分もあるが)
酷い話だが、Javaは10年間全く進歩しないことによってこれを達成してしまっているし。
だから、話を戻すと、
実用言語においては実用性のある機能は取り入れるべきだが、
実用性がない機能は捨てられるべきなんだよ。
(大は小を兼ねる、多めに採用しとけ、ではない。同様に無駄に構文糖が多いのも問題)
今回ラムダが矮小化されて取り込まれているということなら、
取り込まれた部分は必要だと、切り捨てられた部分は不要だと判断されただけ。
勿論今後覆る可能性もあるけどね。
834デフォルトの名無しさん (ワッチョイ 738a-Z7Iu)
2018/04/17(火) 23:55:44.13ID:zXGef27d0 そういうのは自宅の壁に
>>833
>取り込まれた部分は必要だと、切り捨てられた部分は不要だと判断されただけ。
受動的な態度であればそうなるが、あえて私の感覚を述べるとすれば、
ラムダ式を C++/C#/Java(特にC++)に取り込む価値があったのか?
という点、C++ のラムダ式は operator()() で実現できるし、operator()() のシンタックスシュガーと考えてよい
シンタックスシュガーを全否定するわけではない
「ラムダ式」という偉大な名前に反して、実際にできることは一般的な「ラムダ式」のカバーする領域よりも狭くなっているのを「不満」と感じているだけなのかもしれない
>取り込まれた部分は必要だと、切り捨てられた部分は不要だと判断されただけ。
受動的な態度であればそうなるが、あえて私の感覚を述べるとすれば、
ラムダ式を C++/C#/Java(特にC++)に取り込む価値があったのか?
という点、C++ のラムダ式は operator()() で実現できるし、operator()() のシンタックスシュガーと考えてよい
シンタックスシュガーを全否定するわけではない
「ラムダ式」という偉大な名前に反して、実際にできることは一般的な「ラムダ式」のカバーする領域よりも狭くなっているのを「不満」と感じているだけなのかもしれない
836デフォルトの名無しさん (ワッチョイ a39f-/JlG)
2018/04/18(水) 01:03:16.68ID:fAoQEHU80 >>835
> C++ のラムダ式は operator()() で実現できるし、operator()() のシンタックスシュガーと考えてよい
一応それが禿がラムダをC++に採用するのに反対している理由だったと聞いたが、
結果的には折れたんだろ。
昨今は「出来ること」よりも「ソースコードの見やすさ」が重視されているし、妥当だと思うが。
比較すると、
1. そもそも operator()()(ファンクタ)では関数に見えない。これが最大のガン。
2. C/C++は階層記述能力が無く、関数内関数が出来ない。このため、
局所的に関数ポインタを使いたいだけの場合でも上位階層に関数を記述するしかなく、
結果的にその関数は他からも見える(使える)状態になってしまう。
匿名関数であれば、そこでしか使っていない事を文法的に保証できる。
3. ファンクタだとインスタンス変数は必ずコピーすることになる。
ラムダだとおそらく直接掴める場合もあり、この場合はケチれる。
(ただしこれは実装による)
だから関数内関数(クロージャ付き、最低限その階層の変数は見えるもの=GCC拡張の仕様でいい)があれば、
1,2,3とも達成できるし、要らなかったかな、とも思う。
というか、C/C++とも、関数内関数(階層)は無しで押し切るつもりかよー、とは思う。
ラムダよりこっちの方が必要な気がするのだが。
> C++ のラムダ式は operator()() で実現できるし、operator()() のシンタックスシュガーと考えてよい
一応それが禿がラムダをC++に採用するのに反対している理由だったと聞いたが、
結果的には折れたんだろ。
昨今は「出来ること」よりも「ソースコードの見やすさ」が重視されているし、妥当だと思うが。
比較すると、
1. そもそも operator()()(ファンクタ)では関数に見えない。これが最大のガン。
2. C/C++は階層記述能力が無く、関数内関数が出来ない。このため、
局所的に関数ポインタを使いたいだけの場合でも上位階層に関数を記述するしかなく、
結果的にその関数は他からも見える(使える)状態になってしまう。
匿名関数であれば、そこでしか使っていない事を文法的に保証できる。
3. ファンクタだとインスタンス変数は必ずコピーすることになる。
ラムダだとおそらく直接掴める場合もあり、この場合はケチれる。
(ただしこれは実装による)
だから関数内関数(クロージャ付き、最低限その階層の変数は見えるもの=GCC拡張の仕様でいい)があれば、
1,2,3とも達成できるし、要らなかったかな、とも思う。
というか、C/C++とも、関数内関数(階層)は無しで押し切るつもりかよー、とは思う。
ラムダよりこっちの方が必要な気がするのだが。
837デフォルトの名無しさん (スップ Sd1f-CG16)
2018/04/18(水) 02:30:28.15ID:vVNlUpo0d Cとシェルスクリプトだけで生きていきたいんですが食べていけますか?
またそういった分野らOSSコミッター以外でありますでしょうか?
またそういった分野らOSSコミッター以外でありますでしょうか?
838デフォルトの名無しさん (ワッチョイ 738a-Z7Iu)
2018/04/18(水) 02:40:14.81ID:whM0Cl8U0 あるとするなら組込系かな
回路図とアセンブラは出来るの?
回路図とアセンブラは出来るの?
839デフォルトの名無しさん (スップ Sd1f-CG16)
2018/04/18(水) 03:38:30.78ID:5PSc4Ve9d >>838
ありがとうございます
ありがとうございます
840デフォルトの名無しさん
2018/04/18(水) 06:50:02.81 今どき組み込み系もPythonできなきゃやっていけない時代よ
841デフォルトの名無しさん (ワッチョイ a350-96DA)
2018/04/18(水) 06:58:40.17ID:JUjvxXNW0 組み込みは圧倒的にC言語が多い
842デフォルトの名無しさん
2018/04/18(水) 07:26:37.24 >>841
ツール類は一昔前ならPerl/Ruby/TTL(TeraTerm)/VBA、今はPythonが必須だよ
ツール類は一昔前ならPerl/Ruby/TTL(TeraTerm)/VBA、今はPythonが必須だよ
843デフォルトの名無しさん (ワッチョイ a350-96DA)
2018/04/18(水) 07:55:12.06ID:JUjvxXNW0 ツール類ってなんだよ
組み込みの話をしてるの
機器内部のファームウェア
組み込みの話をしてるの
機器内部のファームウェア
844デフォルトの名無しさん
2018/04/18(水) 08:03:28.70 >>843
組み込み系開発者がCソースだけいじってればいいと思ってんのか
組み込み系開発者がCソースだけいじってればいいと思ってんのか
845デフォルトの名無しさん (ワッチョイ a350-96DA)
2018/04/18(水) 08:06:09.63ID:JUjvxXNW0 大部分の組み込みだとYES
他の言語など使わない
他の言語など使わない
846デフォルトの名無しさん (ワッチョイ a350-96DA)
2018/04/18(水) 08:07:13.14ID:JUjvxXNW0 C言語以外が必要なのは大規模な物だけ
847デフォルトの名無しさん (ワッチョイ 7ff9-Xhbj)
2018/04/18(水) 08:15:48.27ID:Acg84ZKa0 >>837
そういうことはプログラム板ではなくプログラマ板で聞いてこい
そういうことはプログラム板ではなくプログラマ板で聞いてこい
848デフォルトの名無しさん (アウアウウー Sae7-QFn6)
2018/04/18(水) 08:30:18.84ID:8g/N/Bw3a >>844
いい。
いい。
849デフォルトの名無しさん (ワッチョイ 738a-Z7Iu)
2018/04/18(水) 08:59:26.18ID:whM0Cl8U0 最悪、シーケンサ(PC)でラダー図とアセンブラ触ってりゃ
行けるでしょ。
MELSEC-iQ-RとかはC言語で書く(OSはVxWorks)
ま所詮は他人の人生である
行けるでしょ。
MELSEC-iQ-RとかはC言語で書く(OSはVxWorks)
ま所詮は他人の人生である
850デフォルトの名無しさん (ワッチョイ 135b-ycE0)
2018/04/18(水) 09:49:03.96ID:bX/oR0u10 Cでさえオーバースペックでアセンブラという場合まである
851デフォルトの名無しさん (スップ Sd1f-96DA)
2018/04/18(水) 09:57:01.68ID:8LhMtFC1d アセンブラでさえオーバースペックでバイナリエディタという場合まである
852デフォルトの名無しさん (ワッチョイ 738a-D6/M)
2018/04/18(水) 10:32:00.37ID:MgMoBevw0 >>851
参考までにアセンブラがオーバースペックなマイコン(SoC)って何処の製品か教えて
参考までにアセンブラがオーバースペックなマイコン(SoC)って何処の製品か教えて
853デフォルトの名無しさん (ワントンキン MM9f-Z7Iu)
2018/04/18(水) 10:40:41.42ID:0P72JrSeM あるとすればIMSAIとかだろうけど、流石にネタだろ
854デフォルトの名無しさん (アウアウカー Sa47-p2KG)
2018/04/18(水) 11:16:51.20ID:gg2GabAwa プログラムを動かすボードが貧弱でも開発は豪華なPCでやるんだから最低でもアセンブラ使えるようにはするだろう。
作ったばかりのCPUで他のCPUとの互換性が全くなくアセンブラもまだない、なんていう特殊な状況でない限りは。
作ったばかりのCPUで他のCPUとの互換性が全くなくアセンブラもまだない、なんていう特殊な状況でない限りは。
855デフォルトの名無しさん (アウアウウー Sae7-QFn6)
2018/04/18(水) 11:45:29.90ID:8g/N/Bw3a マウンティング頑張れ
856デフォルトの名無しさん (スップ Sd1f-96DA)
2018/04/18(水) 12:36:20.65ID:8LhMtFC1d ごめんなさい
ネタです
ネタです
857デフォルトの名無しさん (アウアウカー Sa47-p2KG)
2018/04/18(水) 12:57:38.66ID:gg2GabAwa mount /dev/sda
858デフォルトの名無しさん (ワッチョイ 43bb-LJHW)
2018/04/18(水) 23:26:56.70ID:1I0zrtwW0 組込み屋だけど会社によって状況違うんだなとしみじみ
859デフォルトの名無しさん (ワッチョイ e39f-ycE0)
2018/04/18(水) 23:58:14.05ID:BI6oaZDa0 この頃は組み込みって言っても Linux が動いちゃうような小さいボードあるしな。
SDメモリに平気で何Gもデータ入れちゃったりもできるし。なんとういか、時代は変わったよな。
昔は2KBと4KBのROMに詰め込むためにビット単位で削っていたもんな。
SDメモリに平気で何Gもデータ入れちゃったりもできるし。なんとういか、時代は変わったよな。
昔は2KBと4KBのROMに詰め込むためにビット単位で削っていたもんな。
860デフォルトの名無しさん (ラクッペ MMcb-x+X/)
2018/04/19(木) 00:35:24.22ID:q2wFspbLM 組み込みって昔から小っちゃいのから馬鹿デッカいものまであるから一括りにするのが間違い
861850 (ワッチョイ b7bd-9jjH)
2018/04/19(木) 05:33:01.08ID:IwtdBTTY0 なんかネタレスで返されてるな
とあるLEDアレイの案件では並列に重きを置き
CPUあたりの処理能力は思いっきり低い
なんてのがあったんだが
とあるLEDアレイの案件では並列に重きを置き
CPUあたりの処理能力は思いっきり低い
なんてのがあったんだが
862デフォルトの名無しさん (アウアウカー Sa43-9Dln)
2018/04/19(木) 12:39:01.79ID:oHD1faOFa あまりに面倒ならハードウェアで回路追加して解決
863デフォルトの名無しさん (スププ Sdba-QjU0)
2018/04/19(木) 22:41:42.50ID:Uac+F3+Td あんまりそれすると、またハード屋に小言言われるぞ。
864デフォルトの名無しさん (ワッチョイ 76e7-l7dU)
2018/04/19(木) 23:07:31.74ID:p3OUOmjs0 int a[] = {0,1,2,3};
char b =0;
scanf("%d",&b);
printf("%d",a[b]);
知恵袋でこんな質問があって俺も不思議に思って持ってきたんだけど
色んな数字入れても0になるとか書かれてたんだけどこれどうなってるの?
char b =0;
scanf("%d",&b);
printf("%d",a[b]);
知恵袋でこんな質問があって俺も不思議に思って持ってきたんだけど
色んな数字入れても0になるとか書かれてたんだけどこれどうなってるの?
865デフォルトの名無しさん (ワッチョイ 4e81-9jjH)
2018/04/19(木) 23:17:20.36ID:/9NYPZwG0 >>864
自分で試してみた?
自分で試してみた?
866デフォルトの名無しさん (ワッチョイ 76e7-l7dU)
2018/04/19(木) 23:21:55.11ID:p3OUOmjs0 >>865
100入れてみたら3が返ってきたw
100入れてみたら3が返ってきたw
868デフォルトの名無しさん (ワッチョイ 83b3-sFFS)
2018/04/19(木) 23:23:39.27ID:XF7JHHHf0 エンディアンによるような気もするがー
%d は int の大きさを持った器のポインタを要求してるのに
char の大きさの器を渡してるから どうなろうがしったこっちゃない鼻から悪魔系の動作
%d は int の大きさを持った器のポインタを要求してるのに
char の大きさの器を渡してるから どうなろうがしったこっちゃない鼻から悪魔系の動作
869デフォルトの名無しさん (ワッチョイ 76e7-l7dU)
2018/04/19(木) 23:29:53.26ID:p3OUOmjs0 これがエラーにならず動いてしまうという悪魔のCの動作か
870デフォルトの名無しさん (ワッチョイ 4e81-9jjH)
2018/04/19(木) 23:30:32.30ID:/9NYPZwG0 char b[4] = {0};
scanf("%d",&b[0]);
printf("%d %d %d %d\n",b[0],b[1],b[2],b[3]);
これをVCとGCCで試してみた
結果は配列先頭要素に代入され、残りは0のままだった
scanf("%d",&b[0]);
printf("%d %d %d %d\n",b[0],b[1],b[2],b[3]);
これをVCとGCCで試してみた
結果は配列先頭要素に代入され、残りは0のままだった
871デフォルトの名無しさん (ワッチョイ baf9-udCU)
2018/04/19(木) 23:31:48.87ID:x2EYL8xQ0 >>867
bの型がcharなのが肝なんだからそこは間違えるなよ
bの型がcharなのが肝なんだからそこは間違えるなよ
872デフォルトの名無しさん (ワッチョイ 83b3-sFFS)
2018/04/19(木) 23:33:18.23ID:XF7JHHHf0 >>870
入力で負の値を渡すと…
入力で負の値を渡すと…
873デフォルトの名無しさん (アウアウウー Sa47-jD/J)
2018/04/19(木) 23:33:42.76ID:lwH23MPfa intだからな
874デフォルトの名無しさん (ワッチョイ 4e81-9jjH)
2018/04/19(木) 23:36:41.07ID:/9NYPZwG0 なるほど、入力値が小さいときは、
後ろの配列が変わってないかのように見えるだけって事か
後ろの配列が変わってないかのように見えるだけって事か
>>868
char 配列の大きさを表す変数が int であっても、あるいはそうでなくても、それは関係ないのでは?
char 配列の大きさを表す変数が int であっても、あるいはそうでなくても、それは関係ないのでは?
876デフォルトの名無しさん (ワッチョイ 83b3-sFFS)
2018/04/19(木) 23:38:53.72ID:XF7JHHHf0 >>871
あ!
あ!
878デフォルトの名無しさん (ワッチョイ 83b3-sFFS)
2018/04/19(木) 23:40:18.78ID:XF7JHHHf0 >>875
printf ではなく scanf のフォーマットでの %d 指定に char 変数のポインタを渡してる話よ?
printf ではなく scanf のフォーマットでの %d 指定に char 変数のポインタを渡してる話よ?
880デフォルトの名無しさん (アウアウウー Sa47-jD/J)
2018/04/20(金) 00:50:00.05ID:G/kLZxdya 警告って出ないもん?
881デフォルトの名無しさん (ワッチョイ 578a-/Wij)
2018/04/20(金) 01:57:12.33ID:wjKqEKEv0 関数の引数はスタックサイズに丸められるよ
882デフォルトの名無しさん (アウアウウー Sa47-jD/J)
2018/04/20(金) 02:04:42.67ID:G/kLZxdya ポインタだしなあ
883デフォルトの名無しさん (ワッチョイ 2393-MaWf)
2018/04/20(金) 06:13:59.91ID:EDYH6GYd0884デフォルトの名無しさん (ワッチョイ 2350-Incm)
2018/04/20(金) 06:51:33.68ID:9tWrHk9l0885デフォルトの名無しさん (ワッチョイ b727-9jjH)
2018/04/20(金) 07:58:37.73ID:eEDtLY6e0 アホな点をいくつ見つけられるかで
各自のアホ度を測定できるな
各自のアホ度を測定できるな
886デフォルトの名無しさん (スップ Sd5a-rWRa)
2018/04/20(金) 09:31:45.52ID:OLFb+zqBd それがデバッグと言われる行為だろ?
887デフォルトの名無しさん (ワンミングク MM8a-/Wij)
2018/04/20(金) 10:21:13.71ID:xd9k5+f1M 脳がwormhole だらけなんでしょ
888デフォルトの名無しさん (ワッチョイ 76e7-l7dU)
2018/04/20(金) 14:21:22.42ID:33OB1hDw0 char *line;
scanf("%s", &line);//dogが入る
if(line=="dog")
{
printf("dogですよ");
}
これってなんでdogと合わないん?
scanf("%s", &line);//dogが入る
if(line=="dog")
{
printf("dogですよ");
}
これってなんでdogと合わないん?
889デフォルトの名無しさん (ワッチョイ e38a-0RFE)
2018/04/20(金) 14:26:31.37ID:UQRLXIIQ0 >>888
scanf で受けとる変数をchar型の配列にしましょう
scanf で受けとる変数をchar型の配列にしましょう
890デフォルトの名無しさん (スップ Sd5a-rWRa)
2018/04/20(金) 14:30:58.92ID:OLFb+zqBd >>888
line=="dog" という式は strcmp関数にしましょう
line=="dog" という式は strcmp関数にしましょう
891デフォルトの名無しさん (ワッチョイ 4eea-sFFS)
2018/04/20(金) 14:31:04.87ID:JZAZQDTS0 文字列の比較は == ではなく、strcmp 等の比較関数をつかいましょう
892デフォルトの名無しさん (ササクッテロロ Sp3b-qxIM)
2018/04/20(金) 15:15:01.27ID:uy6ZTS8Ap アドレスの一致を比較してるからじゃね?
893デフォルトの名無しさん (スップ Sd5a-Incm)
2018/04/20(金) 15:17:13.71ID:RdXrGqPUd C言語はプロ向きの言語
「とりあえず動かしてみる」
とかいう用途には向かない
入門書とかできちんと勉強しよう
「とりあえず動かしてみる」
とかいう用途には向かない
入門書とかできちんと勉強しよう
894デフォルトの名無しさん (ワッチョイ 4eea-sFFS)
2018/04/20(金) 15:20:02.90ID:JZAZQDTS0 >char *line;
>scanf("%s", &line);
この2行に色々な罠や誤りが仕込まれてるな。
Cで躓くであろう、ポインタと配列、文字と文字列周辺
(セキュリティや入力のオーバーランは考慮せず簡便なので書くと)
char line[256];
scanf("%s", line);
>scanf("%s", &line);
この2行に色々な罠や誤りが仕込まれてるな。
Cで躓くであろう、ポインタと配列、文字と文字列周辺
(セキュリティや入力のオーバーランは考慮せず簡便なので書くと)
char line[256];
scanf("%s", line);
895デフォルトの名無しさん (アウアウカー Sa43-9Dln)
2018/04/20(金) 17:03:59.70ID:OzeM0EoQa896片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-gnn3)
2018/04/20(金) 17:21:20.04ID:PF4NyNv9d >>894
char line[64];
size_t len;
fgets(line, sizeof(line), stdin);
len = strlen(line);
if (len && line[len - 1] == '\n') line[len - 1] = 0;
if(strcmp(line, "dog") == 0)
{
printf("dogですよ\n");
}
char line[64];
size_t len;
fgets(line, sizeof(line), stdin);
len = strlen(line);
if (len && line[len - 1] == '\n') line[len - 1] = 0;
if(strcmp(line, "dog") == 0)
{
printf("dogですよ\n");
}
897片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-gnn3)
2018/04/20(金) 17:28:09.55ID:PF4NyNv9d char line[64];
fgets(line, sizeof(line), stdin);
strtok(line, "\n");
if(strcmp(line, "dog") == 0)
{
printf("dogですよ\n");
}
fgets(line, sizeof(line), stdin);
strtok(line, "\n");
if(strcmp(line, "dog") == 0)
{
printf("dogですよ\n");
}
898デフォルトの名無しさん (ワッチョイ b727-9jjH)
2018/04/20(金) 18:00:02.24ID:eEDtLY6e0 char line[256];
scanf("%255s", line);
scanfを使えないアホが
scanfをdisるのを見る度に
嘲笑するのも勿体ない気分になる
scanf("%255s", line);
scanfを使えないアホが
scanfをdisるのを見る度に
嘲笑するのも勿体ない気分になる
899デフォルトの名無しさん (ワッチョイ 76e7-l7dU)
2018/04/20(金) 18:02:13.70ID:rQE2Qud50 これでもし入力条件が不明の長さで受け取らなきゃ行けなかったらどうすればいい?
901デフォルトの名無しさん (ワッチョイ 578a-/Wij)
2018/04/20(金) 18:10:03.88ID:wjKqEKEv0 *ぐらい使えよ
902片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-gnn3)
2018/04/20(金) 18:10:57.05ID:PF4NyNv9d std::getline
一文字ずつ読み込む
一文字ずつ読み込む
903デフォルトの名無しさん (アウアウカー Sa43-9Dln)
2018/04/20(金) 18:40:42.36ID:dyY1ZlsFa gccならgetline()
904片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-gnn3)
2018/04/20(金) 18:44:42.17ID:PF4NyNv9d 入力バッファにちょっとゴミが混じるだけでscanfは使えなくなる。
そんな役立たずは、業務では使うべきではない。使うなら、fgetsとsscanfの方がいい。
我が国のコンピューター教育は残念ながら、業務では役に立たない言語を教えている。
そんな役立たずは、業務では使うべきではない。使うなら、fgetsとsscanfの方がいい。
我が国のコンピューター教育は残念ながら、業務では役に立たない言語を教えている。
905デフォルトの名無しさん (ワッチョイ 578a-Elb0)
2018/04/20(金) 19:13:13.94ID:2JMfU3z40 むしろ余程プアな環境でない限り、業務でC言語は使うべきではない
>>905
かわりに何を使えばいいですか?
かわりに何を使えばいいですか?
907デフォルトの名無しさん
2018/04/20(金) 19:55:43.39 >>906
Python
Python
908デフォルトの名無しさん (ワッチョイ 2350-Incm)
2018/04/20(金) 20:49:36.44ID:9tWrHk9l0 業務でこそC言語
909デフォルトの名無しさん (ワッチョイ 5ff7-Stg3)
2018/04/20(金) 20:55:22.00ID:18ECoYTh0 COBOLかVB
910デフォルトの名無しさん (アウアウウー Sa47-9jjH)
2018/04/20(金) 21:04:02.42ID:qDS4Ifrca >>905
心配しなくても使われる所は限られてるよ。
OSそのものとかデバイスドライバとかな。
それも減りつつあるんじゃないかな。
まあしかし過去の資産がありすぎて捨てられないって感じか。
うまいこと互換性を保ちつつ次の段階へ行ければいいんだろうけどね。
心配しなくても使われる所は限られてるよ。
OSそのものとかデバイスドライバとかな。
それも減りつつあるんじゃないかな。
まあしかし過去の資産がありすぎて捨てられないって感じか。
うまいこと互換性を保ちつつ次の段階へ行ければいいんだろうけどね。
911デフォルトの名無しさん (ワッチョイ 2350-Incm)
2018/04/20(金) 21:08:14.53ID:9tWrHk9l0 MCUはほとんどがC言語
たまにC++
たまにアセンブラ
たまにC++
たまにアセンブラ
912デフォルトの名無しさん (ドコグロ MM92-cuLp)
2018/04/20(金) 22:17:00.80ID:DDZisBasM >>899
その受け取ったデータをどう使うかによる
その受け取ったデータをどう使うかによる
913デフォルトの名無しさん (ワッチョイ b39f-9jjH)
2018/04/21(土) 00:13:25.41ID:Oxipuy330 >>901
scanf() の * は・・・
scanf() の * は・・・
914デフォルトの名無しさん
2018/04/21(土) 03:47:37.05ID:Ynju1Yzg hallo warld
915デフォルトの名無しさん (ワッチョイ 8a7f-+rmP)
2018/04/21(土) 03:55:01.78ID:nJ9/ilUK0 >>914
ばかに見えるから止めた方がいいと思うよ
ばかに見えるから止めた方がいいと思うよ
916デフォルトの名無しさん (ワッチョイ b727-9jjH)
2018/04/21(土) 06:07:34.81ID:pETeS31u0917デフォルトの名無しさん (ワッチョイ b727-9jjH)
2018/04/21(土) 06:24:19.45ID:pETeS31u0 >>904
898の例でゴミが問題になるのか?
898の例でゴミが問題になるのか?
918デフォルトの名無しさん (ワッチョイ 5fab-9jjH)
2018/04/21(土) 15:05:42.05ID:WYiI1Hbl0 入力された文字列(例えば10文字程度)を、
数字だけ*に変えるプログラムを作りたいと思ってるんですが、
どうもうまく行きません
どなたか簡単なコード書いてくれませんか
数字だけ*に変えるプログラムを作りたいと思ってるんですが、
どうもうまく行きません
どなたか簡単なコード書いてくれませんか
919デフォルトの名無しさん
2018/04/21(土) 15:31:16.54920デフォルトの名無しさん
2018/04/21(土) 15:32:52.02 ああ、あと入力された文字列にはマルチバイト文字が含まれるのか、1バイト文字なのかも明確にしとかないとな
921デフォルトの名無しさん (アウアウカー Sa43-udCU)
2018/04/21(土) 15:33:17.96ID:VeVDn114a >>918
お前さんが書いたコードをあげれば誰か添削くらいはしてくれるかもよ
お前さんが書いたコードをあげれば誰か添削くらいはしてくれるかもよ
922デフォルトの名無しさん (ワッチョイ 5fab-9jjH)
2018/04/21(土) 15:33:18.46ID:WYiI1Hbl0 >>919
すいません、半角でお願いします
すいません、半角でお願いします
923デフォルトの名無しさん
2018/04/21(土) 15:45:37.64 入力部分には>>897を使わせてもらった
#include <stdio.h>
#include <string.h>
void mask_num(char *s)
{
char *c;
for (c = &s[0]; *c != '¥0'; c++)
{
if (*c > '0' && *c < '9') *c = '*';
}
}
int main()
{
char line[64];
fgets(line, sizeof(line), stdin);
strtok(line, "¥n");
mask_num(line);
printf("%s¥n", line);
return 0;
}
#include <stdio.h>
#include <string.h>
void mask_num(char *s)
{
char *c;
for (c = &s[0]; *c != '¥0'; c++)
{
if (*c > '0' && *c < '9') *c = '*';
}
}
int main()
{
char line[64];
fgets(line, sizeof(line), stdin);
strtok(line, "¥n");
mask_num(line);
printf("%s¥n", line);
return 0;
}
924デフォルトの名無しさん (ワッチョイ b3b5-qxIM)
2018/04/21(土) 15:47:16.12ID:FmyBtpFH0 プログラムのコードの話してるのに全角は無いわ。
データの話ならむしろ文字コードとかまで考えなきゃならんがな。
データの話ならむしろ文字コードとかまで考えなきゃならんがな。
925デフォルトの名無しさん
2018/04/21(土) 15:49:15.15926デフォルトの名無しさん
2018/04/21(土) 15:51:21.42927デフォルトの名無しさん (ワッチョイ 4e81-9jjH)
2018/04/21(土) 16:07:01.70ID:a/Xqi2VF0 void mask_num(char *s)
{
while (*s) {
if (isdigit(*s)) *s = '*';
s++;
}
}
{
while (*s) {
if (isdigit(*s)) *s = '*';
s++;
}
}
928デフォルトの名無しさん (ワッチョイ b39f-9jjH)
2018/04/21(土) 16:17:22.90ID:Oxipuy330 入力して変換して出力するだけでいいならこうかな。
#include <stdio.h>
#include <ctype.h>
int main()
{
int c;
while ((c = getchar()) != EOF)
if (isdigit(c))
putchar('*');
else
putchar(c);
return 0;
}
#include <stdio.h>
#include <ctype.h>
int main()
{
int c;
while ((c = getchar()) != EOF)
if (isdigit(c))
putchar('*');
else
putchar(c);
return 0;
}
929デフォルトの名無しさん (ワッチョイ 2393-MaWf)
2018/04/21(土) 17:23:05.22ID:2bKzbSLP0930デフォルトの名無しさん (ワッチョイ 9ab3-cuLp)
2018/04/21(土) 18:01:42.48ID:bgp2zzOH0 今回の発注者は>>918だから注意喚起として * じゃないの?
って確認するのは正しいけど全角半角言うならむしろ数字と言うのが半角だけでいいのかを確認した方がいいかと
下手すると 壱萬弐仟参佰四拾伍 が変換されてないじゃないかとか言われるかも知れんし
って確認するのは正しいけど全角半角言うならむしろ数字と言うのが半角だけでいいのかを確認した方がいいかと
下手すると 壱萬弐仟参佰四拾伍 が変換されてないじゃないかとか言われるかも知れんし
931デフォルトの名無しさん (スプッッ Sd5a-Incm)
2018/04/21(土) 18:05:08.78ID:uE8GRdCpd >>924
プログラムのコードの話なんてどこに書いてある?
プログラムのコードの話なんてどこに書いてある?
932デフォルトの名無しさん (ラクッペ MMcb-x+X/)
2018/04/22(日) 03:46:05.48ID:jlGSrB9uM >>930
Unicode正規化も確認しないとな
Unicode正規化も確認しないとな
933918 (ワッチョイ 5fab-9jjH)
2018/04/22(日) 06:45:30.49ID:5hVlVxZz0 すいません遅れました
添削おねがいします
#include <stdio.h>
void num_star(char *p)
{
while (*p)
if(*p >= '0' && *p <= '9')
*p++ = '*';
}
int main(void)
{
char ch[10];
printf("文字列を入力せよ\n");
scanf("&s",ch);
num_star(ch);
printf("%s\n", ch);
return 0;
}
添削おねがいします
#include <stdio.h>
void num_star(char *p)
{
while (*p)
if(*p >= '0' && *p <= '9')
*p++ = '*';
}
int main(void)
{
char ch[10];
printf("文字列を入力せよ\n");
scanf("&s",ch);
num_star(ch);
printf("%s\n", ch);
return 0;
}
934デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/22(日) 06:59:36.50ID:cFbiqY2T0 >>933
scanfに"&s"は間違い"%9s"だ
if(*p >= '0' && *p <= '9')は標準関数でif(isdigit(*p))とできるのに勿体ない
p++はifの条件が偽のときに実行されなくなっている
scanfに"&s"は間違い"%9s"だ
if(*p >= '0' && *p <= '9')は標準関数でif(isdigit(*p))とできるのに勿体ない
p++はifの条件が偽のときに実行されなくなっている
935デフォルトの名無しさん (ワッチョイ b39f-+Fe+)
2018/04/22(日) 13:47:43.90ID:J/MYnpG10 数字以外の文字だけ入力されたら無限ループになって終わらないね。
936デフォルトの名無しさん (スプッッ Sd5a-Incm)
2018/04/22(日) 13:59:28.07ID:1MVwzpIAd938デフォルトの名無しさん (スプッッ Sd5a-Incm)
2018/04/22(日) 14:13:43.70ID:1MVwzpIAd リンクしない選択をすることもあるのだよ
色々な理由で
特にわざわざC言語を使うような環境では
色々な理由で
特にわざわざC言語を使うような環境では
939デフォルトの名無しさん (スプッッ Sd5a-Incm)
2018/04/22(日) 14:18:09.76ID:1MVwzpIAd なにが「勿体ない」だか
940デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/22(日) 14:38:15.31ID:cFbiqY2T0 >>936
> 標準ライブラリを全てリンクしてるかわからない
リンク? インプリメントの間違いだろ
何をリンクして何をリンクしないのかは
組み込みでは厳密に指定し結果も確認する
isdigitにはマクロバージョンもある
おそらくお前さんはそんなん知らんと言うだろうな
総じて、現物のコンパイラを細かくいじるということをせずに
上っ面だけ使って満足している手合いか
> 標準ライブラリを全てリンクしてるかわからない
リンク? インプリメントの間違いだろ
何をリンクして何をリンクしないのかは
組み込みでは厳密に指定し結果も確認する
isdigitにはマクロバージョンもある
おそらくお前さんはそんなん知らんと言うだろうな
総じて、現物のコンパイラを細かくいじるということをせずに
上っ面だけ使って満足している手合いか
941デフォルトの名無しさん (アウアウウー Sa47-jD/J)
2018/04/22(日) 14:40:37.67ID:RLohAeVua strip
942デフォルトの名無しさん (アウアウカー Sa43-udCU)
2018/04/22(日) 14:46:38.59ID:RDdUHzj0a >>936
そういう話は最低限の基本ができてから教えれば十分なことで、始めたばかりの初心者にあれこれ言ってかえって混乱させるのは良くないかと。
そういう話は最低限の基本ができてから教えれば十分なことで、始めたばかりの初心者にあれこれ言ってかえって混乱させるのは良くないかと。
943デフォルトの名無しさん
2018/04/22(日) 15:27:22.65 >>940
isdigitの指す文字が’0’〜’9’だけとも限らないからな(事実上は問題にならないとしても)
isdigitの指す文字が’0’〜’9’だけとも限らないからな(事実上は問題にならないとしても)
944デフォルトの名無しさん (アウアウウー Sa47-jD/J)
2018/04/22(日) 15:45:55.57ID:RLohAeVua digitの定義はlocaleに依存するので制御可能。
基本的にはisdigitが妥当だろうね。
自前でテーブル定義してもよい。大小で判断するのは危険だね。
基本的にはisdigitが妥当だろうね。
自前でテーブル定義してもよい。大小で判断するのは危険だね。
945デフォルトの名無しさん (ワッチョイ 9ab3-cuLp)
2018/04/22(日) 16:35:36.81ID:H/AU6k7y0946デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/22(日) 17:32:41.34ID:cFbiqY2T0947デフォルトの名無しさん (ドコグロ MMba-cuLp)
2018/04/22(日) 17:59:29.92ID:rTRuhMGrM >>946
X 3010:2003 (ISO/IEC 9899:1999)
5.2.1文字集合
ソース基本文字集合及び実行基本文字集合の双方において,10 進数字に関する上の並びにおいて,0 の右側に並んでいる各文字の値は,一つ左側にある文字の値に比べ 1 だけ大きくなければならない。
X 3010:2003 (ISO/IEC 9899:1999)
5.2.1文字集合
ソース基本文字集合及び実行基本文字集合の双方において,10 進数字に関する上の並びにおいて,0 の右側に並んでいる各文字の値は,一つ左側にある文字の値に比べ 1 だけ大きくなければならない。
948デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/22(日) 18:31:37.06ID:cFbiqY2T0949デフォルトの名無しさん (ワッチョイ 9ab3-cuLp)
2018/04/22(日) 18:58:05.22ID:H/AU6k7y0 >>949
「0 の右側に並んでいる各文字の値は,一つ左側にある文字の値に比べ 1 だけ大きく」なっていない文字集合は思いつけませんね…
ftp%3A//ftp.software.ibm.com/software/globalization/gcoc/attachments/CP00037.pdf
「0 の右側に並んでいる各文字の値は,一つ左側にある文字の値に比べ 1 だけ大きく」なっていない文字集合は思いつけませんね…
ftp%3A//ftp.software.ibm.com/software/globalization/gcoc/attachments/CP00037.pdf
951デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/22(日) 19:35:50.81ID:cFbiqY2T0952デフォルトの名無しさん (ワッチョイ 0bb3-9jjH)
2018/04/22(日) 19:36:32.85ID:YjWQK7FP0 [[['[] ]]] { {] ]][ '[][][] [][] [][][] [] '[] []
953デフォルトの名無しさん (ワッチョイ 9ab3-cuLp)
2018/04/22(日) 20:06:54.82ID:H/AU6k7y0954デフォルトの名無しさん (ワッチョイ 578a-/Wij)
2018/04/22(日) 20:06:57.91ID:TH0cxcHD0955デフォルトの名無しさん (ワッチョイ 1ad2-JOUt)
2018/04/22(日) 20:20:55.56ID:d95yXvpO0 再帰関数を使って次の問題の会を出すプログラム書いたんですけど、なんかミスばっかでダメなので、だれかどういうプログラム書けばいいのか教えてもらえませんか?
九つの椅子が
○○○
○○○
○○○
のように並んでおり、はじめに数字の書いた札を持った何人かが座っているとする
例
○○5
○9○
12○
さらに他にも何人か数字の書いた札を持った人がいて、その人たちが空いてる席に順番に座って行くとする
全員座った後、それぞれの点数を数えるとする、ただし点数は前後左右の人が持ってる札の数字を足し算する
例
○○5
○9○
12○
で 3さん→4さん→7さん とすわり
○75
493
12○
となった、9の点数は7+4+3+2
この時、それぞれが自分の点数を常に最大になるように座ったら最終的にはどういう配置になるでしょう?ただし
・それぞれは座る順番を知っている
・その次に座る人達がどこに座るかまで考慮に入れて考える
・自分以外の点数は気にしない
・誰もいないところは0
・次の人が何箇所か座る候補があり絞れない時は常に予想図の最小値をとって考えるとする、つまり極端にリスクを恐れる
九つの椅子が
○○○
○○○
○○○
のように並んでおり、はじめに数字の書いた札を持った何人かが座っているとする
例
○○5
○9○
12○
さらに他にも何人か数字の書いた札を持った人がいて、その人たちが空いてる席に順番に座って行くとする
全員座った後、それぞれの点数を数えるとする、ただし点数は前後左右の人が持ってる札の数字を足し算する
例
○○5
○9○
12○
で 3さん→4さん→7さん とすわり
○75
493
12○
となった、9の点数は7+4+3+2
この時、それぞれが自分の点数を常に最大になるように座ったら最終的にはどういう配置になるでしょう?ただし
・それぞれは座る順番を知っている
・その次に座る人達がどこに座るかまで考慮に入れて考える
・自分以外の点数は気にしない
・誰もいないところは0
・次の人が何箇所か座る候補があり絞れない時は常に予想図の最小値をとって考えるとする、つまり極端にリスクを恐れる
956デフォルトの名無しさん (ワッチョイ 1ad2-JOUt)
2018/04/22(日) 20:22:39.58ID:d95yXvpO0 質問てここでいいですか?
957デフォルトの名無しさん (ワッチョイ 9ab3-cuLp)
2018/04/22(日) 20:32:24.58ID:H/AU6k7y0958デフォルトの名無しさん (ワッチョイ b351-GfG9)
2018/04/22(日) 20:58:30.62ID:kdP+cJ/x0 >>955
面白そうなテーマだから、お題スレに投げてみるのがいいのではないかと誘導
プログラミングのお題スレ Part10
http://mevius.2ch.net/test/read.cgi/tech/1514772904/
面白そうなテーマだから、お題スレに投げてみるのがいいのではないかと誘導
プログラミングのお題スレ Part10
http://mevius.2ch.net/test/read.cgi/tech/1514772904/
959デフォルトの名無しさん (スプッッ Sd5a-Incm)
2018/04/22(日) 21:11:08.54ID:1MVwzpIAd960デフォルトの名無しさん (スプッッ Sd5a-Incm)
2018/04/22(日) 21:17:34.90ID:1MVwzpIAd >>940
どこからつっこんでいいのやら
どこからつっこんでいいのやら
961デフォルトの名無しさん (スプッッ Sd5a-Incm)
2018/04/22(日) 21:18:50.30ID:1MVwzpIAd >>957
どこかで見たセリフ
どこかで見たセリフ
962デフォルトの名無しさん (ワッチョイ 4e81-9jjH)
2018/04/22(日) 21:19:12.17ID:T8nVVEKh0 形式
#include <ctype.h>
int isalnum(int c);
int isalpha(int c);
int iscntrl(int c);
int isdigit(int c);
int isgraph(int c);
int islower(int c);
int isprint(int c);
int ispunct(int c);
int isspace(int c);
int isupper(int c);
int isxdigit(int c);
機能説明
上記にリストされている関数はすべて ctype.h 内で宣言されており、指定されている整数値をテストします。
c で適切な整数値は、unsigned char または EOF として表現可能なものです。
デフォルトで、これらの関数は ctype.h がインクルード されている場合はマクロとして定義されます。
パフォーマンスを良くするために、関数形式よりマクロ形式を使うのが適切です。
#include <ctype.h>
int isalnum(int c);
int isalpha(int c);
int iscntrl(int c);
int isdigit(int c);
int isgraph(int c);
int islower(int c);
int isprint(int c);
int ispunct(int c);
int isspace(int c);
int isupper(int c);
int isxdigit(int c);
機能説明
上記にリストされている関数はすべて ctype.h 内で宣言されており、指定されている整数値をテストします。
c で適切な整数値は、unsigned char または EOF として表現可能なものです。
デフォルトで、これらの関数は ctype.h がインクルード されている場合はマクロとして定義されます。
パフォーマンスを良くするために、関数形式よりマクロ形式を使うのが適切です。
963デフォルトの名無しさん (アウアウウー Sa47-9jjH)
2018/04/22(日) 21:26:12.24ID:20oer2uOa >>962
そういえばそれって locale 考慮すると言っときながら unsigned char でしか
判定してくれないというなんとも言えない仕様だよな。マルチバイトの判定が
できない。まあそんな拡張したら面倒な感じはするのでそのままでもいいが。
そういえばそれって locale 考慮すると言っときながら unsigned char でしか
判定してくれないというなんとも言えない仕様だよな。マルチバイトの判定が
できない。まあそんな拡張したら面倒な感じはするのでそのままでもいいが。
964デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/22(日) 21:28:15.82ID:cFbiqY2T0 ですます調ということは、JISソースではないな
965デフォルトの名無しさん
2018/04/22(日) 21:29:41.48 >>963
つ iswdigit
つ iswdigit
966デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/22(日) 21:31:58.01ID:cFbiqY2T0 C99以後はinlineがあるんだがID:1MVwzpIAdはC89前提?それともK&Rかね
967デフォルトの名無しさん (スププ Sdba-JOUt)
2018/04/22(日) 21:33:04.20ID:1srXW/Rwd >>958
ありがとうございます、そっち行きます
ありがとうございます、そっち行きます
968デフォルトの名無しさん (スプッッ Sd5a-Incm)
2018/04/22(日) 21:33:34.88ID:1MVwzpIAd 前提など不要
969デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/22(日) 21:34:00.82ID:cFbiqY2T0970デフォルトの名無しさん (スプッッ Sd5a-Incm)
2018/04/22(日) 21:34:42.49ID:1MVwzpIAd どんな環境かわからないんだからどんな環境でも動くコードが良い
971デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/22(日) 21:36:00.62ID:cFbiqY2T0 レスが長文化してるやつは効いてる効いてるwだが
逆もまた真なり
情報量が非常に乏しいレスしかしなくなったやつw
逆もまた真なり
情報量が非常に乏しいレスしかしなくなったやつw
972デフォルトの名無しさん (スプッッ Sd5a-Incm)
2018/04/22(日) 21:42:55.38ID:1MVwzpIAd ねえねえ
なにが「勿体ない」の?
なにが「勿体ない」の?
973デフォルトの名無しさん (ワッチョイ 9ab3-cuLp)
2018/04/22(日) 22:18:10.29ID:H/AU6k7y0 >>969
> 英字が連続していないことにメリットがあるとは思えるのか?
おそらくEBCDICのことを言ってるんだろうけどあれはパンチカードフォーマットから変換しやすくするような体系になってるだけの話
> 英字が連続していないことにメリットがあるとは思えるのか?
おそらくEBCDICのことを言ってるんだろうけどあれはパンチカードフォーマットから変換しやすくするような体系になってるだけの話
974デフォルトの名無しさん (ワッチョイ 578a-/Wij)
2018/04/22(日) 22:19:34.67ID:TH0cxcHD0 >>961
何ら有益な情報を書けない。只の荒らしでしょ。
何ら有益な情報を書けない。只の荒らしでしょ。
975デフォルトの名無しさん (アウアウカー Sa43-jD/J)
2018/04/22(日) 22:35:44.05ID:OBDOSUSoa 今更で悪いけど、文字はまず集合として扱うのが筋だからさ。
大小比較したいなら、一度数値に直せばいいじゃんと思うよ。これについては規格上の正しさという話ではなくて、抽象的な意味にこだわらないと保守性下がるというのが実感としてあるから言うとるのよ。
大小比較したいなら、一度数値に直せばいいじゃんと思うよ。これについては規格上の正しさという話ではなくて、抽象的な意味にこだわらないと保守性下がるというのが実感としてあるから言うとるのよ。
「こういう仕様になっているのはこういう理由だからだ」という設問
あるいは「もしこういう仕様だったらこういう問題があっただろう」という反実仮想的設問には意味があると思っているから、そういう話で盛り上がる今はありがたいと思っています
あるいは「もしこういう仕様だったらこういう問題があっただろう」という反実仮想的設問には意味があると思っているから、そういう話で盛り上がる今はありがたいと思っています
977デフォルトの名無しさん (ワッチョイ 4e81-9jjH)
2018/04/22(日) 22:40:48.03ID:T8nVVEKh0978デフォルトの名無しさん (スプッッ Sd5a-Incm)
2018/04/22(日) 22:43:35.78ID:bBx4tH0Hd979デフォルトの名無しさん (ワッチョイ 578a-/Wij)
2018/04/22(日) 23:07:06.08ID:TH0cxcHD0 >>978
最近のBOTは優秀になったのね。CNTKか何かか?
最近のBOTは優秀になったのね。CNTKか何かか?
980デフォルトの名無しさん (ワッチョイ 9ab3-cuLp)
2018/04/22(日) 23:08:02.95ID:H/AU6k7y0 >>974
関係ないことを堂々と書く奴に言われてもな w
関係ないことを堂々と書く奴に言われてもな w
981デフォルトの名無しさん (ワッチョイ b39f-9jjH)
2018/04/22(日) 23:55:50.76ID:J/MYnpG10 数字なのに1足されてないというと、Unicodeでの漢数字かな。
982デフォルトの名無しさん (ワッチョイ 5923-cUH7)
2018/04/27(金) 11:38:54.60ID:OGjTaEqd0 うむ
983デフォルトの名無しさん (ワッチョイ 71b3-luqG)
2018/04/28(土) 21:59:14.79ID:4vnB69wL0 [[[ ][ ]]]\[[]] [[[]]]],[[[ [][] ]
984デフォルトの名無しさん (ワッチョイ 5961-ZnuE)
2018/04/29(日) 17:07:26.07ID:X9PCZykj0 O(n)のin-placeなセレクティングネットワーク
O(n)のin-placeなマージアルゴリズム
O(n)のin-placeなマージングネットワーク
O(n log n)の(実用的な)ソーティングネットワーク
は存在しますか?
ここらへんがあると並列ソートがかなり捗るんだけど。
O(n)のin-placeなマージアルゴリズム
O(n)のin-placeなマージングネットワーク
O(n log n)の(実用的な)ソーティングネットワーク
は存在しますか?
ここらへんがあると並列ソートがかなり捗るんだけど。
985デフォルトの名無しさん (ワッチョイ 71b3-luqG)
2018/04/29(日) 20:34:40.36ID:My7UiDyw0 [[[ []]]]*[[ [][] ][] } } {} [[[
986デフォルトの名無しさん (ブーイモ MMb3-ZnuE)
2018/04/29(日) 20:42:41.53ID:0iHuAZG8M こんにちは
c言語で質問です
写真の通りのプログラミングを書きたいのですができません
*などで四角形は作れるのでそれを応用するのだと思うのですが、2段目以降を違うのにするやり方がわかりません
どなたかお願いします。
https://i.imgur.com/09EKR0n.jpg
c言語で質問です
写真の通りのプログラミングを書きたいのですができません
*などで四角形は作れるのでそれを応用するのだと思うのですが、2段目以降を違うのにするやり方がわかりません
どなたかお願いします。
https://i.imgur.com/09EKR0n.jpg
987片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-L0fA)
2018/04/29(日) 20:45:11.87ID:PLWQQmF3d >>986
数学で数列は習ったかい? 一般式で表してそれを二重のforループにするだけだ。
数学で数列は習ったかい? 一般式で表してそれを二重のforループにするだけだ。
988デフォルトの名無しさん (アウアウカー Sadd-rKkQ)
2018/04/29(日) 21:16:42.92ID:gpEFuXsMa 二重ループよりも二個関数作った方が将来のためになるかもな
989片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-L0fA)
2018/04/29(日) 22:14:07.36ID:PLWQQmF3d 数列を極めるには、差分法が役に立つが、今ではかなりマイナーな数学分野になっている。
990片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-L0fA)
2018/04/29(日) 22:20:26.21ID:PLWQQmF3d 差分法は、微分法の兄弟みたいなもので、差分法の極限をとると微分法になる。
>>989
漸化式がマイナーだって?
漸化式がマイナーだって?
992片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-L0fA)
2018/04/29(日) 22:27:28.61ID:PLWQQmF3d 差分法は、研究分野としてはマイナー。差分方程式は地球上ではもうだれも研究していないのではないか。
993デフォルトの名無しさん (ワッチョイ 938a-2Ypg)
2018/04/30(月) 01:05:41.13ID:Knbm+hrA0994デフォルトの名無しさん
2018/04/30(月) 01:30:28.58 別に小難しい数学の知識とかいらなくね?
a = 6, b = 4だとして、
ary = malloc(sizeof(int) * a * b);
for (i = 0; i < a; i++) {
for (j = 0; j < b; j++) {
v1 = (i == 0 || j == 0) ? 0 : ary[i - 1][j - 1];
v2 = (i == 0) ? 0 : ary[i - 1][j];
v3 = (j == 0) ? 0 : ary[i][j - 1];
ary[i][j] = v1 + v2 + v3;
}
}
a = 6, b = 4だとして、
ary = malloc(sizeof(int) * a * b);
for (i = 0; i < a; i++) {
for (j = 0; j < b; j++) {
v1 = (i == 0 || j == 0) ? 0 : ary[i - 1][j - 1];
v2 = (i == 0) ? 0 : ary[i - 1][j];
v3 = (j == 0) ? 0 : ary[i][j - 1];
ary[i][j] = v1 + v2 + v3;
}
}
995デフォルトの名無しさん (ワッチョイ b3a1-zZEu)
2018/04/30(月) 01:58:30.12ID:njDF1dun0 いやいや、教科書的にはこうでしょ
for (i = 1; i <= b; i++) {
for (j = 1; j <= a; j++) {
v = j;
for (k = 1; k < i; k++) {
v = v * j;
}
printf("%d, ", v);
}
puts("");
}
for (i = 1; i <= b; i++) {
for (j = 1; j <= a; j++) {
v = j;
for (k = 1; k < i; k++) {
v = v * j;
}
printf("%d, ", v);
}
puts("");
}
996デフォルトの名無しさん
2018/04/30(月) 02:09:48.77 >>994はなんか勘違いしてたw
b<=2までしか合わんかったわw
b<=2までしか合わんかったわw
997デフォルトの名無しさん (ワッチョイ 219f-luqG)
2018/04/30(月) 02:31:14.12ID:XX4FB8lc0 >>986
2番目の値だけ抜き出すと 2, 4, 8, 16 となっているので、一つ前の値を2倍にしている。
3番目の値だけ抜き出すと 3, 9, 27, 81 なのでひとつ前の値を3倍にしている。
4, 5, 6 番目も同様。
ということは、a の入力の個数だけ要素を入れられる配列を作っておいて、その各要素に
1 〜 a の値を一つづつ入れておいて、その後 b の回数だけループしながら出力して
掛け算してを繰り返せばいい。プログラムにするとこうなる。
https://paiza.io/projects/EIvP4vpEHRgWnXFlka5Vjg
2番目の値だけ抜き出すと 2, 4, 8, 16 となっているので、一つ前の値を2倍にしている。
3番目の値だけ抜き出すと 3, 9, 27, 81 なのでひとつ前の値を3倍にしている。
4, 5, 6 番目も同様。
ということは、a の入力の個数だけ要素を入れられる配列を作っておいて、その各要素に
1 〜 a の値を一つづつ入れておいて、その後 b の回数だけループしながら出力して
掛け算してを繰り返せばいい。プログラムにするとこうなる。
https://paiza.io/projects/EIvP4vpEHRgWnXFlka5Vjg
998デフォルトの名無しさん (ワッチョイ 219f-luqG)
2018/04/30(月) 02:48:27.09ID:XX4FB8lc0 配列でひとつ前の値を保持したくない場合はpow()使って計算するという方法もある。
https://paiza.io/projects/_L8doEZwIG6g0imlZM_Fug
pow()使いたくない場合はループして掛け算を自分でやる。
https://paiza.io/projects/_L8doEZwIG6g0imlZM_Fug
pow()使いたくない場合はループして掛け算を自分でやる。
999デフォルトの名無しさん (ワッチョイ 13d4-rKkQ)
2018/04/30(月) 02:58:01.24ID:Xjg4h3Qz0 別に小難しい数学の知識はいらんけど>>994が頭悪いのを晒したのはイタかったな
普通なら恥ずかし過ぎてもうこのスレ覗くこと出来ないレベル
普通なら恥ずかし過ぎてもうこのスレ覗くこと出来ないレベル
1000デフォルトの名無しさん (ワッチョイ 938a-N95W)
2018/04/30(月) 03:04:53.67ID:Knbm+hrA0 別に小難しい数学の知識はいらんし質問の趣旨からも逸れるが>>992が頭悪いのを晒したかった
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 69日 4時間 50分 55秒
新しいスレッドを立ててください。
life time: 69日 4時間 50分 55秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 高市内閣「支持」64%「不支持」19% NHK世論調査 ★2 [少考さん★]
- 高市首相「多様なコメの増産を進める」 方針転換への懸念払拭狙いか ★2 [どどん★]
- 【訃報】声優・西村知道さん死去 「SLAM DUNK」安西先生役 9月に体調不良のため一時休業 [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 地蔵 [268244553]
- 地震 [794961135]
- 地震
- ホロライブ宝鐘マリン、最速でラーメンを投げ売りされてしまう [268244553]
- まったりおじゃる丸まったり待機スレ🏡
- 愛国者は野田佳彦が尖閣を国有化して胡錦濤が不買運動したら野田を攻めてたのに高市の発言で周近平が交流を遮断した状況を攻めないの? [974680522]
