5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C言語なら俺に聞け 139 [無断転載禁止]©2ch.net

1 :デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 0b7b-+OgX):2017/02/22(水) 18:55:55.41 ID:xeEkzIw00
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/


http://echo.2ch.net/test/read.cgi/tech/1481372036/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

2 :デフォルトの名無しさん (ワッチョイ 7ba1-sbgu):2017/02/22(水) 20:12:40.70 ID:BVjvbr4Q0
< `∀´>ニダー

3 :デフォルトの名無しさん (ワッチョイ 8a3c-/RgJ):2017/02/23(木) 10:08:32.31 ID:Reif/Spj0
数値演算はint型が最速と言われてるけど、64bitプロセッサでも同じと考えていいかな。
実際にそう書かれてるページが多いし。腑に落ちないけどそう理解してる。
更新するビット数が少ないから高速なのか?

4 :デフォルトの名無しさん (ワッチョイ a37b-mxZJ):2017/02/23(木) 10:26:10.02 ID:sZtROie80
>>3
int_fast32_t 32の部分は自分の必要な精度に入れ換えて

5 :デフォルトの名無しさん (JP 0H0b-Ccab):2017/02/23(木) 11:53:45.45 ID:WEvoRPmmH
仮に単独では64ビットが最速としても
配列とかで多量に使えばキャッシュが溢れて遅くなるというケースもある
真の最速整数型が欲しいなら、対象のCPUでいろいろな組合せを試すしかない

6 :デフォルトの名無しさん (ワッチョイ a319-WLWd):2017/02/24(金) 00:43:20.13 ID:cpdcPEPh0
恐れ入ります。お尋ねしてもよろしいですか。
わたくし、関数を定義いたしますマクロと、関数をお呼になられるマクロを定義いたしましたの。
関数をお呼びになられるマクロを使いましてご展開されるおり、関数を定義いたしますマクロが自動的に
ご展開なさるようにいたしたいことよ。
もしお存じ上げられるお方がいらっしゃいましたら、ぜひご意見をお伺いたくってよ。
では、ごきげんよう。

7 :デフォルトの名無しさん (ワッチョイ 0a17-d4M5):2017/02/24(金) 01:10:28.42 ID:tA8wO5PS0
ナニコレ??

8 :デフォルトの名無しさん (ワッチョイ 8a41-zLYe):2017/02/24(金) 02:53:11.32 ID:y7fe+xLc0
スベってるな

9 :デフォルトの名無しさん (ワッチョイ 065b-LqKA):2017/02/24(金) 05:47:55.28 ID:NKFDYFgs0
C言語初心者なんです、とりあえずここまで勉強したら大体のプログラムが書けるっていうところはありますか?

10 :デフォルトの名無しさん (ワッチョイ bf7b-FQj1):2017/02/24(金) 06:59:24.53 ID:Rno5Qv0S0
ありません

11 :デフォルトの名無しさん (フリッテル MM96-C5po):2017/02/24(金) 15:53:27.60 ID:86ctwbLEM
>>9
構造化プログラミング
データ構造とアルゴリズム
プロセッサとメモリの基本動作原理
ポインタ
構造体
配列

12 :デフォルトの名無しさん (ワッチョイ 8ec9-8lb6):2017/02/24(金) 16:56:06.69 ID:jIC6X1VU0
>>9
getoptの使い方
標準入力の読み方
printf

まずこの3つをマスターしよう

13 :デフォルトの名無しさん (ワッチョイ a3e3-bUuO):2017/02/25(土) 18:25:33.13 ID:euV/G24E0
>>9
lsのソースコードを読める
がんばれ

14 :デフォルトの名無しさん (ラクッペ MM33-RcHU):2017/02/26(日) 19:23:04.12 ID:V8RtWR1+M
未だにyaccなんかに頼ってちゃ駄目だ
という事で新しいパーサを一緒に考えてくれる人いません?

15 :デフォルトの名無しさん (ワッチョイ 233b-8xjF):2017/02/26(日) 20:12:59.60 ID:Ui2+UTYM0
そこはもう、Haskell で書くしかないな。

16 :デフォルトの名無しさん (JP 0H0b-Ccab):2017/02/26(日) 20:31:54.73 ID:zlk72IFVH
Happyだって、見た目はほぼyacc

17 :デフォルトの名無しさん (ワッチョイ 1f7b-yozQ):2017/02/26(日) 21:42:00.44 ID:jyTublGL0
>>14
yaccと比べて何がどう改善されたパーサを作るのか

18 :デフォルトの名無しさん (ワッチョイ 6afa-frRf):2017/02/27(月) 07:18:08.91 ID:0mBN5Hn20
yacc を使おうとして挫折したのか?

19 :デフォルトの名無しさん (ワッチョイ bb7b-J5+o):2017/02/27(月) 08:40:15.55 ID:wcG6k+HH0
yaccじゃC++のパーザ記述できないだろ

20 :デフォルトの名無しさん (JP 0Hc7-7RjZ):2017/02/27(月) 08:49:45.47 ID:cQVaqrK/H
>>9
他言語経験者かな?

・前方宣言とヘッダとよく使うプリプロセッサ文を把握
・メモリ配置(スタック・ヒープ・静的記憶)の違い・使い分けを把握
・文字列の概念と操作を把握
・その他Cでどういうケースでポインタが使われるかを把握
・変数が初期化されないワナを頭に叩き込む

あとはまぁ言語よりライブラリの選択と
OSやCPUの周辺知識の方が重要な事が多い

21 :デフォルトの名無しさん (ワッチョイ 1f7b-yozQ):2017/02/28(火) 19:42:47.39 ID:4nfK1Rf+0
暇なのでネタ投下

x面体のサイコロy個を振って得られる出目のヒストグラムを出力するプログラムを作ろう
dice.exe 6 3 (6面体のサイコロ3個) の出力例
出目 出現回数 出現率
---- -------- ------
  3    1  0.46
  4    3  1.39
  5    6  2.78
  6    10  4.63
  7    15  6.94
  8    21  9.72
  9    25 11.57
 10    27 12.50
 11    27 12.50
 12    25 11.57
 13    21  9.72
 14    15  6.94
 15    10  4.63
 16    6  2.78
 17    3  1.39
 18    1  0.46

22 :デフォルトの名無しさん (フリッテル MM96-C5po):2017/03/01(水) 13:58:21.66 ID:Zp9/LnCHM
これ組み合わせ爆発じゃないの
100 100とか
数式2,3発の繰り返しで解けるん?

23 :デフォルトの名無しさん (JP 0H4a-8lb6):2017/03/01(水) 14:12:58.32 ID:SH8mWFxKH
if(scanf("%d/%d/%d",&ip[i][0], &ip[i][1], &ip[i][2]) != 3)

2016/9/31 
こんな感じにしたいだけなんですけど
このscanfの「/」って、これであってるの?

24 :デフォルトの名無しさん (ドコグロ MMc2-8xjF):2017/03/01(水) 14:56:55.78 ID:CsmSQFfHM
>>22
全部数えるつもりかっ!

多項定理だけど、やり方考えれば簡単だよ。

25 :デフォルトの名無しさん (ドコグロ MMc2-KtvH):2017/03/01(水) 18:58:24.59 ID:U+4Jaa7CM
>>23
あってる

26 :デフォルトの名無しさん (JP 0H3f-BJNc):2017/03/02(木) 12:18:48.45 ID:d45T9FBrH
バスケットの試合だけど
1 3 2 4って入力して
1 対 3
2 対 4
scanf("%d %d", a, b);
scanf("%d %d", c, d);
戦わせたいけど、どうすればいい?
1234なら出来ます

27 :デフォルトの名無しさん (JP 0H3f-BJNc):2017/03/02(木) 12:20:28.47 ID:d45T9FBrH
バスケットの試合だけど
1 3 2 4って入力して
1 対 3
2 対 4
scanf("%d %d", a, b);
scanf("%d %d", c, d);
戦わせたいけど、どうすればいい?
1234なら出来ます

28 :デフォルトの名無しさん (JP 0H6f-x83U):2017/03/02(木) 12:30:29.26 ID:ThTFWtPOH
誰か、日本語に翻訳してくれる?

29 :デフォルトの名無しさん (フリッテル MM7f-8aD0):2017/03/02(木) 19:58:32.35 ID:im503L5qM
scanf("%d %d %d %d", a, b, c, d);
printf("%d 対 %d\n", a, b);
printf("%d 対 %d\n", c, d);

30 :デフォルトの名無しさん (フリッテル MM7f-8aD0):2017/03/02(木) 19:59:53.68 ID:rOcShz1+M
&忘れた
scanf("%d %d %d %d", &a, &b, &c, &d);

31 :デフォルトの名無しさん (JP 0H3f-BJNc):2017/03/02(木) 20:54:24.64 ID:5j/mvvA0H
2431って、選択した場合、どうすればいい?

32 :デフォルトの名無しさん (ワッチョイ 6b3c-BJNc):2017/03/02(木) 21:01:29.33 ID:1Cz3jM3f0
こんな短いセンテンスなのに日本語になってねぇっぇぇ

33 :デフォルトの名無しさん (ワッチョイ ef5b-prdN):2017/03/02(木) 21:51:36.92 ID:i/E5609c0
>>20
c言語が初めてです

34 :デフォルトの名無しさん (ワッチョイ ef5b-prdN):2017/03/02(木) 21:52:35.03 ID:i/E5609c0
>>11
おお!入門書によく書いてある!

35 :デフォルトの名無しさん (ワッチョイ ef5b-prdN):2017/03/02(木) 21:53:39.85 ID:i/E5609c0
>>12
getopt?ありがとうございます

36 :デフォルトの名無しさん (ワッチョイ ef5b-prdN):2017/03/02(木) 21:55:50.31 ID:i/E5609c0
>>11
cpuの作り方って本読めばいいですか?

37 :デフォルトの名無しさん (アウアウカー Sa6f-tCEH):2017/03/02(木) 22:09:22.01 ID:5e6GrT/2a
ひでーなw

38 :デフォルトの名無しさん (ワッチョイ 1f17-NqFr):2017/03/03(金) 00:40:14.71 ID:k4+TCMnG0
>>34
入門書読んでるならまずその本を理解したほうが早い
その入門書には>>11の事も書いてあるみたいだから
なおのことだぁね

39 :デフォルトの名無しさん (ワッチョイ ef5b-prdN):2017/03/03(金) 05:56:03.66 ID:E6sRhrGi0
>>38
分かりました!ありがとうございます!

40 :デフォルトの名無しさん (JP 0H3f-BJNc):2017/03/03(金) 12:13:23.53 ID:+HYzVfFdH
>>27
オレもわからん
誰かわかる人いないの?

41 :デフォルトの名無しさん (フリッテル MM7f-8aD0):2017/03/03(金) 12:26:01.73 ID:qPJvyZtuM
>>40
>>29-30

42 :デフォルトの名無しさん (JP 0H3f-BJNc):2017/03/03(金) 13:45:06.80 ID:+HYzVfFdH
>>31

43 :デフォルトの名無しさん (ワッチョイ 0f4f-2BvX):2017/03/03(金) 14:21:40.68 ID:Er93SBHi0
>>32

44 :デフォルトの名無しさん (ドコグロ MM3f-KW4d):2017/03/03(金) 15:29:51.13 ID:IC83RcbMM
>>37

45 :デフォルトの名無しさん (ワッチョイ 3bba-Mt2S):2017/03/03(金) 22:39:07.27 ID:Jp23eHYS0
初めまして
CCSC社のPICコンパイラで以下の問題が出てます、多分知識不足だと思うのですが、Cの挙動に関する知識でどういう所が足りないのでしょうか?

char string[5]; //UARTを受ける変数枠
float32 sig_ch; //UARTから数字へと変換したい

GETS(string); // UART文字列をかくほ
sig_ch = atoi(string); // ここで文字列から数字に変換する(このためにstdlib.hを使う)


if(sig_ch % 16 == 0){
set_4067_00();
}
else if((sig_ch%16)/0.0625 == 1){
set_4067_01();
}

と設定しているにもかかわらず、このif-else分だけ通りません。(他のif-elseは今の所エラーは吐いてない)
if文が16にOnly integers are supported for this operation
else if 文すべては elseにA numeric expression must appear here
となっています

46 :デフォルトの名無しさん (ワッチョイ 8b9b-x83U):2017/03/03(金) 22:50:41.79 ID:qE+VJ28k0
まずその前にsig_ch%16の結果は0.0625になりえないんじゃ?
(/0.0625で1になることがない)

47 :デフォルトの名無しさん (ワッチョイ 8b9b-x83U):2017/03/03(金) 22:54:39.58 ID:qE+VJ28k0
あ、float型なのか
float型に剰余計算(%)は出来ないからfmodとか関数を使う

48 :デフォルトの名無しさん (ワッチョイ 3bba-Mt2S):2017/03/03(金) 22:57:05.38 ID:Jp23eHYS0
そうですか?
MATLABのコンソールを使って計算した時には1の位以上に整数が出ましたがxx.0625刻みで増えて行ってくれました。
それを見て、どの型で宣言しているかは分からないけど、余りの少数も取ればいいと思っていました

あれこの場合、余りって…どこからだろう?

49 :デフォルトの名無しさん (ワッチョイ 3bba-Mt2S):2017/03/03(金) 22:59:54.16 ID:Jp23eHYS0
>>47
math.hで使えるみたいですね、多分実装されているはずですので試してみます。

50 :デフォルトの名無しさん (ワッチョイ 3bba-Mt2S):2017/03/03(金) 23:17:40.37 ID:Jp23eHYS0
やったぜ……解決しました(白目

*** Error 71 "main.c" Line 852(1,2): Out of ROM, A segment or the program is too large MAIN
Seg 00800-00FFF, 0580 left, need 009D0
Seg 01000-017FF, 0800 left, need 009D0
Seg 01800-01FFF, 0800 left, need 009D0
Seg 00000-00002, 0000 left, need 009D0 Reserved
Seg 00003-007FF, 0001 left, need 009D0

解決しました……orz

51 :デフォルトの名無しさん (アウアウオー Sabf-aPLm):2017/03/04(土) 00:14:41.41 ID:U0LEsPrza
今度仕事で「Linux C」なる言語を使うらしのですが普通のC言語と
どう違うのでしょうか?

52 :デフォルトの名無しさん (ワッチョイ 0f7b-liqg):2017/03/04(土) 00:23:43.29 ID:l5kdYc5I0
構造体初期化時のデフォルト値などを、簡単に記述できるように、C言語を拡張している

便利な記述が幾つかある。
見たことない書き方があれば、拡張記法

53 :デフォルトの名無しさん (アウアウオー Sabf-aPLm):2017/03/04(土) 00:28:42.38 ID:U0LEsPrza
>>52
ありがとうございます。Linux独自拡張がなされているのですね。
自分で調べてみます。
ちょっとびびってます。

54 :デフォルトの名無しさん (ワッチョイ 1f17-NqFr):2017/03/04(土) 03:03:47.82 ID:azJYKT3F0
Linux拡張っていうかgcc拡張って言うよな普通は

55 :デフォルトの名無しさん (アウアウカー Sa6f-k9EO):2017/03/04(土) 05:24:58.37 ID:QZk9D4JAa
linux cって言われたら、そこそこposix準拠してるとかが本題じゃないの?
コンパイラの話とは思わないわ

56 :デフォルトの名無しさん (ワッチョイ 0f7b-liqg):2017/03/04(土) 07:11:38.33 ID:l5kdYc5I0
Linux プログラミング・インタフェース、2012

manの著者が書いた、神の書!

この本の翻訳本が出版されたのは、日本だけじゃないか?
翻訳者の千住治郎が、技術指導もしている

57 :デフォルトの名無しさん (ワッチョイ 1f9f-uWtv):2017/03/04(土) 16:43:54.18 ID:VFtHImK30
> 「Linux C」なる言語

初耳だったので思わずググったがそんなの無かった

58 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/04(土) 17:16:50.40 ID:40RMudYn0
>>52
>構造体初期化時のデフォルト値などを、簡単に記述できるように、C言語を拡張している
これ、なんだよ
designated initializerならC99の標準機能だぞ

59 :デフォルトの名無しさん (ワッチョイ 8b7b-ERAc):2017/03/04(土) 18:25:01.39 ID:a1Qd0ocB0
C99対応がものすごい遅かったMSVCが標準だと思い込んでる人なんじゃない?たまに居るよ

60 :デフォルトの名無しさん (ワッチョイ eb6f-KW4d):2017/03/04(土) 18:49:55.83 ID:Zd7SxADN0
linux cってgccのことなの?いくらなんでもgccはgccと言うんじゃ…

61 :デフォルトの名無しさん (ワッチョイ 8b42-NqFr):2017/03/04(土) 19:00:06.09 ID:BXXAQhND0
多分、単にLinux上で動かせるCコンパイラってことだと

62 :デフォルトの名無しさん (ワッチョイ 1f90-x83U):2017/03/04(土) 19:46:34.97 ID:afa8PN5D0
俺の予想ではapiが違うってだけのこと

63 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/04(土) 20:35:51.73 ID:40RMudYn0
ID:l5kdYc5I0がうんこだと言う事以外は謎のまま
翻訳本が必要な事を恥じろ

64 :デフォルトの名無しさん (アウアウカー Sa6f-k9EO):2017/03/04(土) 21:34:53.05 ID:CpamcytIa
>>58
指示付きの初期化子と同機能で文法の違うgcc拡張は一応ある
古い拡張だし今では使う必要ないないけど、機能自体は残ってる

65 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/04(土) 21:49:55.63 ID:40RMudYn0
An alternative syntax for this that has been obsolete since GCC 2.5 but GCC still accepts is to write ‘[index]’ before the element value, with no ‘=’.
int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };
struct point p = { y: yvalue, x: xvalue };
こいつらの事?

66 :デフォルトの名無しさん (ワッチョイ 0f7b-liqg):2017/03/05(日) 00:28:44.10 ID:WMRVohp00
GNU拡張

条件演算子(三項演算子とも)である ? : の書式は、
operand1 ? operand2 : operand3

ですが、このうち第2オペランドを省略すると、第1オペランドの値が真の場合、式の値は第1オペランドの値になる…というのがありまして

operand1 ? : operand3

67 :66 (ワッチョイ 0f7b-liqg):2017/03/05(日) 00:43:46.49 ID:WMRVohp00
KotlinでNullチェックする、エルビス演算子、?:
横から見れば、エルビス・プレスリーの顔に見える

変数 ?: デフォルト値
変数 ?: エラー処理

変数がnullなら、後ろを処理する。
変数がnull以外 → 何もしない

68 :デフォルトの名無しさん (ワッチョイ 3b51-BJNc):2017/03/05(日) 19:59:38.94 ID:FXcRiqza0
>>59
CはANSI-Cで完成しているからな。C99以降の仕様でどうしても必要なものなんてlong longくらい。

69 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/05(日) 20:06:24.91 ID:hQyyoOdR0
こういう老害死なねーかな
死んでくれ とっとた

70 :デフォルトの名無しさん (ワッチョイ 6bd4-e336):2017/03/05(日) 22:15:18.97 ID:VTxP7/2w0
まあ、C99以降については、レガシーなコンパイラの下位互換性を削ることになっても
仕様を変える必要性があったのか? という気はしないでもない。

71 :デフォルトの名無しさん (ワッチョイ 8b7b-ERAc):2017/03/05(日) 22:35:20.65 ID:qOQ2PN1U0
Cはもうそのままでいい気がしなくもない。
C11なんか誰が使ってんの?って感じだし。

72 : ◆QZaw55cn4c (ワッチョイ ef13-QIj4):2017/03/05(日) 22:39:34.38 ID:Z7K8qPrE0
むしろC99の方がうんこだよ,C89 で十分なのに意味不明な拡張をしたC99 or later は葬りさられるべき
>>68
long long を準備するくらいなら, sizeof(int) == 8 の処理系をさっさとつくるべき

73 :デフォルトの名無しさん (ワッチョイ cb3c-NqFr):2017/03/05(日) 22:39:39.21 ID:pZffxBVA0
でもgets廃止はもっと早くやるべきだった
使う側の問題ではあるが

74 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/05(日) 22:46:24.51 ID:hQyyoOdR0
externの使い方知らない素人は引っ込んでろ

75 : ◆QZaw55cn4c (ワッチョイ ef13-QIj4):2017/03/05(日) 22:54:05.78 ID:Z7K8qPrE0
>>74
ライブラリ(の中で静的変数を確保するようなコード)でも書かない限り extern は不要

76 :デフォルトの名無しさん (ワッチョイ cb3c-NqFr):2017/03/05(日) 22:57:48.43 ID:pZffxBVA0
externはincludeで正直訳が分からなくなった

77 : ◆QZaw55cn4c (ワッチョイ ef13-QIj4):2017/03/05(日) 23:00:05.85 ID:Z7K8qPrE0
>>76
そんなときのための tentative definition

78 :デフォルトの名無しさん (ワッチョイ 8b42-NqFr):2017/03/05(日) 23:21:29.99 ID:1JomNGIg0
あんまりいじり回さないで欲しいね

79 :デフォルトの名無しさん (ワッチョイ 1f17-NqFr):2017/03/06(月) 01:17:27.44 ID:2/63ad4Z0
むしろレガシーコードをとっととC11に改変すべき最低でもC99

80 :デフォルトの名無しさん (ワッチョイ 8b7b-ERAc):2017/03/06(月) 01:33:56.85 ID:k6KUwGnB0
C11のThreadとかは良いけど実装してるコンパイラ知らない
Genericはゴミ
他は…あれば便利だけど特定のコンパイラでビルド出来なくなるデメリットに目を瞑ってまで使いたいとは思えない

81 :デフォルトの名無しさん (ワッチョイ 1fe5-kMYg):2017/03/06(月) 02:40:03.27 ID:i/MU6nkw0
kill関数ってwindows上だと機能しないんですか?
メモ帳のpidを1111として

kill(1111,SIGTERM);

としてもタスクキルされないのですが

82 :デフォルトの名無しさん (ワッチョイ 6bd4-e336):2017/03/06(月) 03:20:51.34 ID:NUOafv2T0
Windowsの場合、APIを直接呼び出した方がトラブルが少ない(かも
http://support.microsoft.com/ja-jp/help/409542

83 :デフォルトの名無しさん (ドコグロ MMbf-Y1yA):2017/03/06(月) 07:23:55.49 ID:HrLL0BzwM
そもそも既定だと SIGTERM で終了しないだろ

84 :デフォルトの名無しさん (ワッチョイ ef81-fLnF):2017/03/06(月) 07:44:56.29 ID:c2C1QaOD0
いまどきCなんて使えても何の役にも立ちませんが。。

85 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/06(月) 08:00:30.96 ID:0PrPfpk/0
>>75
未だに理解してないようだな
グローバル変数を使う時に必要

86 :デフォルトの名無しさん (ワッチョイ 0f24-T7IB):2017/03/06(月) 10:51:45.16 ID:DwMqYVii0
>>72
だよな
何でもかんでもゴテゴテつけるのは
ないなら作れというCの思想に反する

87 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/06(月) 11:39:16.77 ID:0PrPfpk/0
ブロック先頭以外での変数定義
designated initializer
flexible array member
compound literal
snprintf

ついてこれないジジイが使わないのは勝手だが
懐古オナニーはジジイ仲間で見せあうだけにしておけ

88 :デフォルトの名無しさん (ドコグロ MMef-TqyC):2017/03/06(月) 12:12:38.80 ID:k/FbYHjZM
ブロック先頭で全変数が定義されてるとどこで使ってるのか分かりにくいよね。

ところで、一時的に使った変数を「これ以降使わないよ」って宣言できないかな?
undef みたいな感じで。

89 :デフォルトの名無しさん (ワッチョイ 0f4f-2BvX):2017/03/06(月) 12:17:05.41 ID:GI3nM20k0
{ } で囲ってスコープ作れば多少コントロールしてる気分になる

90 :デフォルトの名無しさん (ドコグロ MM6f-KW4d):2017/03/06(月) 13:09:58.99 ID:L9fnRYGMM
>>88
ブロック先頭で定義する方が使ってる変数が一目で分かっていいよ。
あとちゃんと設計されてる感がある

91 :デフォルトの名無しさん (フリッテル MM7f-8aD0):2017/03/06(月) 14:04:54.74 ID:turPSodzM
>>84
世の中の下位レイヤのほとんどのコードがC/C++
むしろほとんどのプラットフォームで未だに活躍中なんだがな
それを知らないって本当にPGか疑わしい

92 :デフォルトの名無しさん (ワッチョイ ef81-fLnF):2017/03/06(月) 15:06:33.42 ID:c2C1QaOD0
Cなんてもはや一部の組み込みでジジイが組んでるくらいだろ
C++もC#かJavaに置き換わってるよ
世の中の流れから取り残されたジジイは黙ってろよwww

93 :デフォルトの名無しさん (ワッチョイ 8b7b-ERAc):2017/03/06(月) 15:18:24.25 ID:k6KUwGnB0
そのC#やJavaのVMがCやC++無しで実装できてないんだけど?

94 :デフォルトの名無しさん (フリッテル MM7f-8aD0):2017/03/06(月) 15:27:27.06 ID:wVaOk6lpM
マジで言ってるみたいでビビるわ
そのVMがプラットフォーム無しで動いてるとでも?
VMも所詮プラットフォーム上で動くただの上位レイヤのアプリでしかないだがね
そんなに言うならプラットフォーム自身をそのC#やらJavaで作ってみたらいい
取り残されているのは上位レイヤしか触れない連中だよ
まずそれを自覚した方がいいマジで

95 :デフォルトの名無しさん (ワッチョイ 0f4f-2BvX):2017/03/06(月) 15:32:50.40 ID:GI3nM20k0
C# やら Java のコンパイラを作るC# やら Java のコードってあるの?

96 :デフォルトの名無しさん (ワッチョイ 5b4e-xEld):2017/03/06(月) 15:32:55.63 ID:B+jhZQKr0
つうかね、異なるレイヤを一緒に語るもんではないw

97 :デフォルトの名無しさん (ワッチョイ ef81-fLnF):2017/03/06(月) 15:39:25.17 ID:c2C1QaOD0
なんでも一から作らなきゃいけないと思ってるバカ
C言語なんかでやってたら今主流のソフトなんて一生かかっても完成しない
C言語しか知らないバカ

98 :デフォルトの名無しさん (ワッチョイ ef81-fLnF):2017/03/06(月) 15:41:41.99 ID:c2C1QaOD0
お前のそのC言語のソフト全部アセンブリで組んでみろよ



って言ってるのと同じくらいアホらしい意見でしかない

99 :デフォルトの名無しさん (ワッチョイ 1f3c-LOQs):2017/03/06(月) 15:42:54.06 ID:lmlH3P4+0
若いな。
少し前の自分を見てるみたいで微笑ましい。

100 :デフォルトの名無しさん (ワッチョイ 8b7b-ERAc):2017/03/06(月) 15:45:11.54 ID:k6KUwGnB0
少し前のお前こんなバカだったの?

101 :デフォルトの名無しさん (フリッテル MM7f-8aD0):2017/03/06(月) 16:15:36.45 ID:26MVvIlFM
文盲しかいないな
誰も1からCで作れなんて言ってないじゃん
これだから馬鹿は困る

102 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/06(月) 16:49:28.72 ID:0PrPfpk/0
>>90
低レベルすぎる
使い捨てるループ変数を先頭で定義することが「ちゃんと設計」

constで済む変数もconstに出来なかったり
あっ、お爺ちゃんはconstなんて知らないか

103 :デフォルトの名無しさん (アウアウウー Sa2f-BQ+s):2017/03/06(月) 17:01:10.73 ID:wb/Uuzufa
つかアセンブリも必要だし…なぜ用途の違いで割り切れないのか

104 :デフォルトの名無しさん (ワッチョイ 5b4e-xJij):2017/03/06(月) 17:06:52.49 ID:B+jhZQKr0
揺るぎない安定感、着実な一歩。

105 :デフォルトの名無しさん (ワッチョイ 4fc9-BJNc):2017/03/06(月) 17:16:44.41 ID:Sa3Mqufl0
>>102
ループ変数ってまさにブロックの先頭で宣言するよね

106 :デフォルトの名無しさん (フリッテル MM7f-8aD0):2017/03/06(月) 18:00:32.13 ID:aYtCVo5YM
>>102
C言語にもconstあるよ
知らなかった?
これでまた1つ勉強になって良かったね

107 :デフォルトの名無しさん (ワッチョイ 8b7b-ERAc):2017/03/06(月) 18:18:39.71 ID:k6KUwGnB0
>>106
最後の煽りはともかくそういう意味じゃないでしょ。
途中で宣言出来ないとconstに出来ないものもあるって話だと思う。
例えばこういうの

a_init(a);
const int c=f(a);

108 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/06(月) 18:24:17.23 ID:0PrPfpk/0
>>105
しねーよ

109 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/06(月) 18:25:49.45 ID:0PrPfpk/0
>>106
頭悪りーな

110 :デフォルトの名無しさん (ブーイモ MM3f-R7fB):2017/03/06(月) 18:42:01.64 ID:X6GSlxMnM
for初期化時の変数宣言は確かに無いと困るね
態々ブロックで包むのもだるいし

111 :デフォルトの名無しさん (フリッテル MM7f-8aD0):2017/03/06(月) 19:31:24.39 ID:CMFZE9+kM
>>107
それ出来るけど
C99かC11で

112 :デフォルトの名無しさん (ワッチョイ 8b7b-ERAc):2017/03/06(月) 19:39:13.31 ID:k6KUwGnB0
>>111
だーかーらーC88で十分でブロックの先頭だけで宣言出来ればいいって言ってる奴に対して言ってるんだっての…
他人の発言を代わりに説明してあげてる俺バカみたいだからこれ以上ツッコミあっても答えねえよ

113 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/06(月) 19:41:23.20 ID:0PrPfpk/0
>>111
本当に頭悪い

114 :デフォルトの名無しさん (ドコグロ MM2f-Y1yA):2017/03/06(月) 19:45:49.72 ID:qEORy0cSM
>>95
あるかどうかは知らんけど普通に作れるでしょ
テキスト読んでバイナリ吐ければいいのでモダンな言語ならできない言語の方が珍しいかと

115 : ◆QZaw55cn4c (ワッチョイ ef13-QIj4):2017/03/06(月) 20:30:36.37 ID:M+lJg41m0
>>85
単なるグローバル変数をつかうのならば,tentative definition で十分

116 : ◆QZaw55cn4c (ワッチョイ ef13-QIj4):2017/03/06(月) 20:31:42.36 ID:M+lJg41m0
>>88
そういうときには { } で小分けにすればいいだけ
というか,やたらめったらに変数を量産するからそんな目にあう

117 : ◆QZaw55cn4c (ワッチョイ ef13-QIj4):2017/03/06(月) 20:33:01.44 ID:M+lJg41m0
>>95
Javaコンパイラ,C#コンパイラを名乗るのだったら,自分自身をコンパイルできなければだめだね

118 : ◆QZaw55cn4c (ワッチョイ ef13-QIj4):2017/03/06(月) 20:34:27.16 ID:M+lJg41m0
>>112
C89 だよ,いちど文法を調べてみなよ,必要十分とはまさにこのこと

119 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/06(月) 21:11:28.16 ID:0PrPfpk/0
>>115
まだ理解してないのかバカが1匹

120 :デフォルトの名無しさん (ワッチョイ ef81-fLnF):2017/03/06(月) 22:21:37.05 ID:c2C1QaOD0
バカバカ言ってるおっさん
C言語しか分からない時代遅れの上に知恵遅れだなw

121 :デフォルトの名無しさん (ワッチョイ 8b7b-ERAc):2017/03/06(月) 22:38:00.23 ID:k6KUwGnB0
>>120
なんでC言語しか分からないって事がお前に解るの?

122 :デフォルトの名無しさん (ワンミングク MM3f-swil):2017/03/06(月) 22:58:16.40 ID:HD9d9iiPM
天啓が下ったぁ

123 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/06(月) 23:52:25.88 ID:0PrPfpk/0
>>120
CLRやJavaVMの記述言語がわからないド底辺か

124 :デフォルトの名無しさん (ワッチョイ 8b42-NqFr):2017/03/06(月) 23:53:15.16 ID:1xt4bVO70
2chを10年くらいやり続けると、
しっぽが9本生えてきて、
透視能力も身につくらしい

125 :デフォルトの名無しさん (ワッチョイ ef81-fLnF):2017/03/07(火) 00:00:35.92 ID:O3agX0W90
C言語なんて安い仕事しか出来ないものにしがみついてるバカだから
当然C言語しか出来ないに決まっているw
これがバカでなきゃ何なんだよwww

126 :デフォルトの名無しさん (ワッチョイ 1f17-NqFr):2017/03/07(火) 00:26:11.17 ID:54fjNwR80
C/C++, Java, C#, VB, VB.Net, Ruby, Python出来るよ
Cが出来れば他の言語は比較的かんたんに覚えられる

127 :デフォルトの名無しさん (ワッチョイ dbfd-2BvX):2017/03/07(火) 07:44:28.92 ID:t7Ngew/R0
宗教家が発狂中!

128 :デフォルトの名無しさん (ワッチョイ 0f24-T7IB):2017/03/07(火) 09:22:52.75 ID:O/JMqbZP0
>>125
へー、おまえ安い仕事にしかありつけないのか
低スキルですって自己紹介しなくていいのにw

129 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/07(火) 10:06:01.46 ID:iKWZ1BlO0
>>125
非正規はそう言う状態なのか? そりゃかわいそう

130 :デフォルトの名無しさん (ワッチョイ 1bdc-ZIZW):2017/03/07(火) 11:36:26.32 ID:Op3K+dMb0
賃金やら契約条件やらの話はプログラマー板の方じゃないかえ?
良く知らないけど。

131 :デフォルトの名無しさん (ワッチョイ 9fe1-LFAQ):2017/03/07(火) 12:58:47.82 ID:7YWE/8fn0
>>95
Javaは知らんけど、C#のコンパイラはC#製

132 :デフォルトの名無しさん (ワッチョイ ab85-GPt5):2017/03/07(火) 17:58:00.93 ID:sN5zB8qN0
>>131
それは感心なこころがけだ

133 :デフォルトの名無しさん (ワッチョイ 8b7b-ERAc):2017/03/07(火) 18:06:57.58 ID:MCZ/J11a0
>>131
CLRは3割がC++だけどな

134 : ◆QZaw55cn4c (ワッチョイ ab85-GPt5):2017/03/07(火) 18:25:09.22 ID:sN5zB8qN0
>>87
老人のために翻訳してあげるよ

designated initializer 指示つきの初期化子 struct S { int a; int b; } Obj = { .a = 12, .b = 34 };
flexible array member 最後のメンバーが不定長構造体、でもこの技は昔から、たとえば C FAQ でもすでに言及されているよね
compound literal 複合リテラル 無名の一時オブジェクトを構文で作ることができるやつ、関数の引数で無名で T の一時変数をつくりたいときに (T){.a = 12, .b = 34} と一時変数をつくれる
snprintf シグナチャーは int snprintf(char *s, int n, const char *format) ようは sprintf() のセキュリティ強化版

初期化子がらみについて文句をいうとすれば、どうせ拡張するんだったら C++11 later に完全にあわせてほしかったね…

135 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/07(火) 20:20:26.79 ID:iKWZ1BlO0
>>134
ウソを混ぜて翻訳しなくて良い

ついてこれないんだろ
ジジイは老人会に引っ込んでろ

136 :デフォルトの名無しさん (ワッチョイ ef13-QIj4):2017/03/07(火) 20:43:36.34 ID:C5UF9tvt0
>>135
どこが嘘だというのか?
具体的に指摘できないのか?

137 :デフォルトの名無しさん (ワッチョイ eb6f-KW4d):2017/03/07(火) 20:49:41.64 ID:l+KB4C7U0
ゆとりvsジジイ

138 :デフォルトの名無しさん (ワッチョイ ef13-QIj4):2017/03/07(火) 20:54:39.52 ID:C5UF9tvt0
https://www.youtube.com/watch?v=Y_oD0ZWfWz4
頭のいい人は,しゃべるときも明晰な論理を貫徹するね

139 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/07(火) 21:08:01.87 ID:iKWZ1BlO0
未だ炎上学習法実践してんか、特別に教えてやるよ
> flexible array member 最後のメンバーが不定長構造体、でもこの技は昔から、たとえば C FAQ でもすでに言及されているよね

140 :デフォルトの名無しさん (ワッチョイ 1f5b-wJyW):2017/03/07(火) 21:17:17.06 ID:dyD8NGJK0
みんな相手にするんじゃないぞ。
ちょっと頭がアレなやつなんだからよ。

141 :デフォルトの名無しさん (ワッチョイ 0f31-3D2C):2017/03/07(火) 21:54:59.55 ID:9V/NxRrg0
この煽りは上級者だな(煽り上級者の資格は何処で取れるんだ?)

問題はC言語で何を作るか何だけど?
やっぱり、ある程度は作るモノは決まってたりするの?

142 :デフォルトの名無しさん (ワンミングク MM3f-swil):2017/03/07(火) 22:13:28.75 ID:jqZP77OvM
FPGAに書き込んでるよ

143 :デフォルトの名無しさん (ドコグロ MM6f-TqyC):2017/03/07(火) 22:36:56.12 ID:cCh6hZTkM
FPGAに実装した8051で実行。

144 :デフォルトの名無しさん (ワッチョイ ef81-fLnF):2017/03/08(水) 05:32:52.19 ID:fg5w6sCm0
もはやC言語の仕事なんてない
廃棄寸前の過去の組み込み機器のメンテとか?
今ならJavaか少なくともせいぜいC++だろうよ
C++もJavaかC#におきかわりつつあるし
C++も出来ない50歳くらいのジジイプログラマってたまにいるけど
だいたいブラック派遣で年収も300万くらいらしいわw
もう死ねよwww

145 :デフォルトの名無しさん (ワッチョイ 8b7b-mDf3):2017/03/08(水) 05:55:29.49 ID:7Auc+YVy0
最近だと組み込みLinuxならC++ではなくてPythonかな

146 : ◆QZaw55cn4c (ワッチョイ ef13-QIj4):2017/03/08(水) 07:36:40.41 ID:3IqnA1f/0
>>139
ちょっと言葉が足りなかったね
flexible array member 最後のメンバーが不定長配列(a[0]とか),結果として全体が不定長構造体,
でもやっぱりこの技は昔から C FAQ でも言及されてるんだよな‥C89 では a[0] とかけないので,a[1] にしているよ

147 :デフォルトの名無しさん (アウアウカー Sa6f-/hOr):2017/03/08(水) 08:23:34.70 ID:Wr2kD9p+a
プログラムをろくに書けない奴に限って古い、新しいで騙る

プログラマは仕事によるレイヤーで語る

148 :デフォルトの名無しさん (アウアウカー Sa6f-k9EO):2017/03/08(水) 08:50:28.85 ID:ZrUr+Lkoa
>>146
要素数0じゃなくて、要素数の省略だろ
というか、要素数に0を指定するのって未定義じゃなかったっけ

149 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/08(水) 09:43:12.83 ID:tKO0gCMl0
>>146
30点
ジジイは無理について来ようとしなくて良い

150 : ◆QZaw55cn4c (ワッチョイ ab85-GPt5):2017/03/08(水) 12:35:59.22 ID:/EX97NIO0
>>148
そうか、要素数を0とできたのは gcc 拡張だったかもしれないね

>>149
この手のものは昔からある手法だよ、バンバンつかっていたよね、
別に flexible array membe と名前がつかなくても問題ないよね
http://www.kouno.jp/home/c_faq/c2.html#6

C99 で追いついたとおもっている若者はお前かね?

151 :デフォルトの名無しさん (ワッチョイ 0f24-T7IB):2017/03/08(水) 15:00:08.45 ID:DNe+Lf9O0
a[1]で書けてたのにa[0]ができるようになったからって
それは気分の問題で本質的には何も変わってないんだよ
ヤダジタするガキにくれてやるおしゃぶりという意味で_Boolと同じだ

152 :デフォルトの名無しさん (ワッチョイ 0f4f-2BvX):2017/03/08(水) 15:45:17.33 ID:Ms4iQyEm0
sizeof とったときに 末尾可変実現箇所の部分の大きさが含まれるかどうか

153 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/08(水) 15:57:06.21 ID:tKO0gCMl0
>>150
30点 的外れな戯言並べても採点は変わらない
ジジイは無理すんな w

154 : ◆QZaw55cn4c (ワッチョイ ab85-GPt5):2017/03/08(水) 18:00:32.85 ID:/EX97NIO0
>>151
そうだよね
C99 は全般的にいって今更感がぬぐえない

>>152
わかるが、サイズが1変わるかどうかなんて、どうでもいい問題に思っていた

155 :デフォルトの名無しさん (ワッチョイ 9fe1-LFAQ):2017/03/08(水) 18:38:53.79 ID:ERQkfdVq0
C99は今更なんじゃなくて、やっと現実に近づいたというところでしょ
コンパイラ拡張に依存したり、わかりにくいマクロが減らせる

156 :デフォルトの名無しさん (ワッチョイ ab85-GPt5):2017/03/08(水) 18:45:04.00 ID:/EX97NIO0
>>155
いやね、C89 で十分という気がして仕方がない
仮に C89 処理系を作っていたとして、それを C99 に適合させる気力が湧くか、考えてみるけれどもたぶんやる気がでないだろう
あの alloca() の改変である実行時領域確保配列なんかは筋悪にしかみえない、たしか C11 とか C++ ではオプションになったとか、それもよくわかる

157 :デフォルトの名無しさん (ワッチョイ 6b3c-BJNc):2017/03/08(水) 18:57:25.94 ID:YeRun3zZ0
>>154
たかが1要素 されど1要素

その要素が 1バイトかもしれないし 1ページかもしれないw

158 :デフォルトの名無しさん (ドコグロ MM2f-Y1yA):2017/03/08(水) 19:53:45.80 ID:N8HM6lINM
>>154
> わかるが、サイズが1変わるかどうかなんて、どうでもいい問題に思っていた
こういう奴は信用できない

159 :デフォルトの名無しさん (ワッチョイ 5b4e-xEld):2017/03/08(水) 20:38:19.19 ID:59T19xUI0
VLAって筋悪か?

160 :デフォルトの名無しさん (ワッチョイ bb4e-CqFM):2017/03/08(水) 20:58:52.57 ID:muMKoRUn0
>>159
正直使いどころがわからん。

161 :デフォルトの名無しさん (ワッチョイ 0ba1-c3r2):2017/03/08(水) 21:05:16.11 ID:nYBrtmF60
組込分野はC89に対応してるならまだマシな部類じゃね
そうじゃないなら単にやる気の問題だろうけど

162 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/08(水) 21:12:01.33 ID:tKO0gCMl0
>>160
ループの中で繰り返し毎に異なるサイズ確保する場合に重宝する
allocaの改変とか言ってるついてこれないジジイは無視しておけ

163 :デフォルトの名無しさん (ワッチョイ 0f24-T7IB):2017/03/08(水) 21:56:56.05 ID:DNe+Lf9O0
>>152
で? a[1]で書けてたときに問題になってたか?

164 :デフォルトの名無しさん (ワッチョイ ab7b-8nUV):2017/03/08(水) 22:09:34.99 ID:tKO0gCMl0
>>163
a[1]では問題があった、flexible array memberで無くなった

165 :デフォルトの名無しさん (フリッテル MM7f-8aD0):2017/03/08(水) 22:45:59.22 ID:sHqr9nhTM
最低でもC99は必須
俺的には少なくともstdint.hは必須

166 :デフォルトの名無しさん (ワッチョイ 3b51-BJNc):2017/03/08(水) 23:12:32.85 ID:oksZ54sT0
まぁ標準化されたのはいいけど、みんなそれ以前から自前で用意してたよね。

167 :デフォルトの名無しさん (ワッチョイ 0ba1-c3r2):2017/03/08(水) 23:15:10.17 ID:nYBrtmF60
まあ移植性は重要だよな

168 :デフォルトの名無しさん (アウアウカー Sa6f-k9EO):2017/03/08(水) 23:19:37.95 ID:kUhBpeLWa
>>166
してるけど、64bit環境とか考慮できてない腐ったコードもあるからな

flexible array memberなんかも末尾配列の要素数に0とか1指定でそれっぽいことはできていたけど、未定義を踏まざるを得なかった
それが規格に則って書けるようになるってのは良いことだと思うけどな

169 :デフォルトの名無しさん (ワッチョイ 3b51-BJNc):2017/03/08(水) 23:25:57.49 ID:oksZ54sT0
規格として移植性が良くなるのは正解なんだけど、使う側からすると、新しい規格が
十分に普及するまでは逆に移植性が悪くなるというジレンマ。

170 :デフォルトの名無しさん (ワッチョイ eb6f-KW4d):2017/03/08(水) 23:27:52.41 ID:jyzNIqf90
C89で基本は完成されたね。
どうしてもC99でないと困るってことはないけど
//コメントとかinttypes.hはよく使うから、あれば便利

171 :デフォルトの名無しさん (ワッチョイ bb4e-CqFM):2017/03/08(水) 23:29:36.18 ID:muMKoRUn0
>>162
その意味がわからないんだけど…
最大値を気にせず確保することなんてありえるの?

172 :デフォルトの名無しさん (ワッチョイ 134e-ATAZ):2017/03/09(木) 01:29:12.80 ID:3g6CLylS0
実行時に配列のサイズが決まるわけよ。
例えば引数によってとか。

173 :デフォルトの名無しさん (ワッチョイ fb4e-HNYZ):2017/03/09(木) 02:11:21.55 ID:Kb3gKMEf0
いや、だから、最大値を決めておかないのか?って事を突っ込んでいるのだが…
しかも外部入力でリミット切らないとか、セキュリティホールの典型じゃね?
で、最大値決めるって事は、可変にする必要がないって事だと思うんだが…

174 :デフォルトの名無しさん (ワッチョイ 134e-ATAZ):2017/03/09(木) 06:20:42.92 ID:3g6CLylS0
つうかVLAって要素数に変数を使えることが大きいんじゃないかな
int size = a / b;
int array[size] = {0}; 
sizeは実行時に決まるが問題の無い範囲であるのが保証できる場合、
計算結果であるsizeを再利用できるのでパフォーマンスがいい

175 :デフォルトの名無しさん (ドコグロ MM92-ezmg):2017/03/09(木) 06:38:53.59 ID:K/l9Si6sM
>>173
常に最大値で配列切っとけってこと?
いやそうしたけりゃお前はそうすればいいと思うよ

176 : ◆QZaw55cn4c (ワッチョイ be13-H6F/):2017/03/09(木) 07:10:53.29 ID:hGM1T24/0
>>175
VLA はセキュリティの穴になりうるね,実行時の値で配列の上限が決まるなんて危険な発想ではないかい?
そんなものを標準に入れていいのか?

>>174
配列の要素数がパフォーマンスに関係することなんかないんでないかい?

177 :デフォルトの名無しさん (ドコグロ MM92-ezmg):2017/03/09(木) 07:44:22.47 ID:K/l9Si6sM
>>176
(バカが使えば)
> VLA はセキュリティの穴になりうる

VLA に限った話じゃないけどね

178 :デフォルトの名無しさん (ブーイモ MM92-busz):2017/03/09(木) 08:08:41.65 ID:dsGfio+6M
VLAそのものがセキュリティホールになる理由がわからん
外部入力でサイズが決まるとしても起こりうるのは
スタックオーバーフローくらいのもんだろ
そんなのは再帰が深くなりすぎても起こる
たとえmallocに変えたところで問題がスタックからヒープに移るだけ

179 :デフォルトの名無しさん (ワッチョイ 0719-9O7/):2017/03/09(木) 08:08:57.49 ID:F9CUJ5lt0
if(size <100){
int array[size] = {0};
}
解決策考えたよ

180 :デフォルトの名無しさん (ワッチョイ bf7b-WeoV):2017/03/09(木) 08:29:50.20 ID:QUckDsXy0
>>173
何言ってんだバカ
VLAのサイズと最大値は全く独立だ

お前の心配するセキュリティホールの実例出してみろよ
笑ってやるから

181 :デフォルトの名無しさん (ワッチョイ fb4e-HNYZ):2017/03/09(木) 08:59:36.08 ID:Kb3gKMEf0
>>180
google で
「スタックオーバーフロー セキュリティ」
を検索して最初に表示されるページを読んでから反応しなよ…

182 :デフォルトの名無しさん (ワッチョイ 0719-9O7/):2017/03/09(木) 09:08:20.35 ID:F9CUJ5lt0
>>181
そのサイト凄いな、時間計って読んでみたらちょうど5分で読み終わった。

183 :デフォルトの名無しさん (ワッチョイ bf7b-WeoV):2017/03/09(木) 09:14:10.67 ID:QUckDsXy0
>>181
とっとと、実例を出せよ
笑ってやるから

スタックオーバーフローのメカニズムわかってないだろ w

184 :デフォルトの名無しさん (ワッチョイ 364f-aizu):2017/03/09(木) 09:31:48.50 ID:iRW4jXC40
外部から悪意あるコードを突っ込んでそのコードにジャンプさせうることが
VLAの機構の中にリスクが内在してて可能になっちゃうということ?

185 :デフォルトの名無しさん (ワッチョイ 0719-9O7/):2017/03/09(木) 09:50:34.19 ID:F9CUJ5lt0
int array[size] ; で。
sizeをリターンアドレスの一個前にもってくるようにして
次に都合よくgetsが出てくるから、そこでジャンプ後のアドレス+
悪意あるコードを入力すると関数から戻ったとき悪意あるコードが
実行されるってことを言いたいんだろ

186 :デフォルトの名無しさん (ワッチョイ bf7b-WeoV):2017/03/09(木) 10:00:19.43 ID:QUckDsXy0
>>176
>VLA はセキュリティの穴になりうるね,実行時の値で配列の上限が決まるなんて危険な発想ではないかい?
>そんなものを標準に入れていいのか?
snprintf不要と言ってるジジイの発言らしくないな

187 :デフォルトの名無しさん (ワッチョイ e6c9-2hGO):2017/03/09(木) 11:39:27.23 ID:LxMtt/hf0
ラン・オーバー・ラン

188 :デフォルトの名無しさん (ワッチョイ 364f-aizu):2017/03/09(木) 11:46:44.45 ID:iRW4jXC40
Run "CINDY" Run

189 : ◆QZaw55cn4c (ワッチョイ bf85-BkNt):2017/03/09(木) 12:19:27.12 ID:9nAslxZ/0
C99にわかはこれだから困る

>>180
>VLAのサイズと最大値は全く独立だ

では聞くが、VLA はどこに確保されるの?スタックなの?ヒープなの?

190 :デフォルトの名無しさん (ワッチョイ 134e-ATAZ):2017/03/09(木) 14:10:16.74 ID:3g6CLylS0
>>176
パフォーマンスに影響する(場合がある)のは、要素数じゃなく式の値(a / b)の再利用

191 :デフォルトの名無しさん (ワッチョイ 134e-ATAZ):2017/03/09(木) 14:17:05.30 ID:3g6CLylS0
まあ最大値で確保すれば解決する、というかVLA未サポートならそうするわけだけど、
VLAが使えるなら使っちゃうなあ

192 :デフォルトの名無しさん (ワッチョイ bf7b-WeoV):2017/03/09(木) 15:18:40.35 ID:QUckDsXy0
>>189
ついてこれないジジイは無理すんな
スタック領域を1000000以上拡張出来ないと仮定して

int a[1000000];

int l = 1000000;
...
int a[l];

どちらも拡張失敗するのは実行時
VLAだから失敗するわけじゃない

snprintfに関しての言い訳はしないのか?

193 : ◆QZaw55cn4c (ワッチョイ bf85-BkNt):2017/03/09(木) 18:29:43.99 ID:9nAslxZ/0
>>192
質問を繰り返そう
VLA はどこに確保されるの?スタックなの?ヒープなの?はっきりさせてよ

>snprintf
安全だからありがたく使わせていただきますけれども、C99 の目玉ってわけでもないかと

194 : ◆QZaw55cn4c (ワッチョイ bf85-BkNt):2017/03/09(木) 18:33:38.26 ID:9nAslxZ/0
>>191
そうなんだ…
新しいものを避けるのは、私ももう老人ってことかもね
alloca() をバンバン使ってる口だから(alloca() は実装されてない系もある)、そこんところの実装がはっきりしてるんだったら使ってもいいかな

195 : ◆QZaw55cn4c (ワッチョイ bf85-BkNt):2017/03/09(木) 18:44:49.43 ID:9nAslxZ/0
>>168
なるほどね、規格になった、てことで意味があるんだね
flexible array member も VLA も昔からある作法だし、C89 で十分だ、って頑なに思っていたけれども考え直してもいいかもね

196 :デフォルトの名無しさん (ドコグロ MM27-ezmg):2017/03/09(木) 18:47:48.68 ID:LA1Z4pgPM
>>191
最大値の大きさによるけどでかいなら俺はヒープにとる

197 :デフォルトの名無しさん (ワッチョイ bf7b-WeoV):2017/03/09(木) 18:57:57.10 ID:QUckDsXy0
>>193
>>192で回答済みだが、ジジイは分からないようだから答えてやろう
固定長アレイが確保されるのと同じ領域
大部分の実装ではスタック

で、それが何か?

198 :デフォルトの名無しさん (JP 0H1f-busz):2017/03/09(木) 18:58:32.59 ID:9TBsKkVvH
>>193
どこに確保されるかわかると嬉しいことでもあるの?
実際、どこに確保されるかは決まっていない

199 :デフォルトの名無しさん (ワッチョイ bf7b-WeoV):2017/03/09(木) 18:59:10.03 ID:QUckDsXy0
>>195
>flexible array member も VLA も昔からある作法だし、
ねーよ、ジジイ

200 :デフォルトの名無しさん (ブーイモ MM2b-9hUc):2017/03/09(木) 19:17:51.15 ID:fyCowO4bM
C99は便利機能が云々ってよりは
クリーンなコードの為のガイドラインに近い気がする

201 :デフォルトの名無しさん (ワッチョイ bf85-BkNt):2017/03/09(木) 19:30:40.14 ID:9nAslxZ/0
>>198
そうだね、強いて述べると安心感だね
alloca() とからくりが同じなら、よくわかるし、なによりも今までずっと使ってきたから安心だ、そこんところは規格に書いてないの?

>>198
VLA の確保領域がスタックなら、十中八九それは alloca() と同じだろうね
いいたいことは、C99 の大部分が、C89 ですでにやってきたことだ、ということだよ

>>86
>ついてこれないジジイが使わないのは勝手だが
とあるが、
実のところ、諸々のことは昔からやってきたことで、C89 を味わっているクラスとしては、C99 は今更感が強いんだよ
いや、今更感というのもしっくりこないな、なんというか、字面だけで見栄えがいいというだけで規格している、というか、
スタックかヒープかをはっきりさせないところというか

少なくとも、C++11 の右辺値参照ほどのインパクトは、ない

>>199
それは無知というほかはない

202 :デフォルトの名無しさん (ワッチョイ bf7b-WeoV):2017/03/09(木) 19:54:01.97 ID:QUckDsXy0
>>201
>それは無知というほかはない
まさかc faq 2.6がflexible array memberだと言う主張が?
これまでの戯言読む限りはそうっぽいが w

203 : ◆QZaw55cn4c (ワッチョイ bf85-BkNt):2017/03/09(木) 19:56:31.69 ID:9nAslxZ/0
>>202
そのとおりだよ

そうじゃないというのなら、
お前のいうところの flexible array member を使ったコードを書いてみてくれないかな?
お前のいうところの flexible array member の必要性を明示するコードを頼む

204 :デフォルトの名無しさん (ドコグロ MM27-ezmg):2017/03/09(木) 20:02:02.08 ID:LA1Z4pgPM
あの〜、セキュリティ云々の話は知ったかしちゃいました
って言うことでいいのかな?

205 :デフォルトの名無しさん (ワッチョイ 0719-9O7/):2017/03/09(木) 20:13:40.89 ID:F9CUJ5lt0
自分の書いたコードがいつか世界中に出回ってインジェクションアタックの標的にされるかもしれない
そんなふうに考えていた時期が俺にもありました

206 :デフォルトの名無しさん (ワッチョイ bf7b-WeoV):2017/03/09(木) 20:18:03.80 ID:QUckDsXy0
>>203
ジジイのくせに基本的なこと知らねーのな

c faq 2.6はstruct hackと呼ばれる【技法】
初めは長さ1のアレイで実装されてた
gccだかどっかが長さ0のアレイを許して大きさの計算を楽にした
でも、規格に完全に適合して無かった
大きな長さのアレイで実装する事が提案されたが、とてもダサかった
struct hackを規格に適合して実装するためのC99の【言語機能】がflexible array memberだ

207 :デフォルトの名無しさん (ワッチョイ bf7b-WeoV):2017/03/09(木) 20:21:37.39 ID:QUckDsXy0
>>201
>実のところ、諸々のことは昔からやってきたことで、C89 を味わっているクラスとしては、C99 は今更感が強いんだよ
>いや、今更感というのもしっくりこないな、なんというか、字面だけで見栄えがいいというだけで規格している、というか、
>スタックかヒープかをはっきりさせないところというか

長くやってても、何も理解していないと言う悪い見本

208 :デフォルトの名無しさん (ブーイモ MM2b-busz):2017/03/09(木) 20:39:48.15 ID:eJ64f19XM
C99の規格にスタックとかヒープとかいう概念はなかったはず

209 : ◆QZaw55cn4c (ワッチョイ be13-H6F/):2017/03/09(木) 21:02:30.09 ID:hGM1T24/0
>>206
つまり C FAQ 2.6 が発展解消 flexible array member につながるんだね
結局,昔からやってきたことだね,VLA も同じだね

>>208
まあ,そうだが

210 : ◆QZaw55cn4c (ワッチョイ be13-H6F/):2017/03/09(木) 21:07:29.41 ID:hGM1T24/0
>>204
あはは,alloca() と同じだったんなら,まあ VLA でもいっか‥と転向しました,てへぺろ

211 :デフォルトの名無しさん (ワッチョイ bf7b-WeoV):2017/03/09(木) 21:15:22.33 ID:QUckDsXy0
>>209
【技法】と【言語機能】の区別つけような ジジイ

212 :デフォルトの名無しさん (ワッチョイ bf7b-WeoV):2017/03/09(木) 21:17:42.13 ID:QUckDsXy0
>>210
あー、つまりVLAがどこに確保されるか知らないで
筋悪っ とか言ってたって事ね 死ねジジイ

213 :デフォルトの名無しさん (ブーイモ MM2b-busz):2017/03/10(金) 00:57:30.56 ID:+YP/FacCM
で、セキュリティホールの話は?

214 :デフォルトの名無しさん (ワッチョイ bf7b-WeoV):2017/03/10(金) 01:08:50.79 ID:1BLND3090
181 デフォルトの名無しさん (ワッチョイ fb4e-HNYZ)[] 2017/03/09(木) 08:59:36.08 ID:Kb3gKMEf0

>>180
google で
「スタックオーバーフロー セキュリティ」
を検索して最初に表示されるページを読んでから反応しなよ…

215 :デフォルトの名無しさん (ブーイモ MM2b-busz):2017/03/10(金) 01:22:38.60 ID:+YP/FacCM
>>214
環境によって順位が変わりうるので具体的なURLよろ

216 :デフォルトの名無しさん (ワッチョイ 3672-1om1):2017/03/10(金) 02:56:17.07 ID:7J5p523R0
valgrindでexpとかtanがエラー出るのなんでだろう

217 : ◆QZaw55cn4c (ワッチョイ be13-H6F/):2017/03/10(金) 07:35:26.46 ID:Jt0Ka4fq0
>>212
alloca() をずっと使ってきたといったろう?VLA もおそらくそんなところだろうと想像してはいたね,
ただ筋悪だと思うことは今でも変わらないよ,配列は普通に固定長で書いたほうがいい,という主観だからね
ただここで意見をいただいて(お前からもいただいた,と思っているよ)スタンスの一部が変わったかもしれない

>>211
>>206 までさも大事なことのように出し惜しみしていた内容だが
実は >>168 ですでに述べられていることだったね

218 :デフォルトの名無しさん (ドコグロ MMca-ezmg):2017/03/10(金) 08:06:05.30 ID:V/tY9QS2M
>>217
お前がやることは

知ったかしてよく知らないのに >>173 のレスをしてしまいました
ごめんなさい

だろ

219 :デフォルトの名無しさん (アウアウカー Sa7f-K8Mp):2017/03/10(金) 08:33:50.79 ID:9tLH1/xpa
技術的な議論で人格攻撃するのはやめなよ

220 :デフォルトの名無しさん (ワッチョイ bf7b-WeoV):2017/03/10(金) 08:43:28.66 ID:1BLND3090
おい、ID:Kb3gKMEf0出て来いよ

221 :デフォルトの名無しさん (ワッチョイ 364f-aizu):2017/03/10(金) 08:59:33.13 ID:USScrCM40
VLAだからこそ、それがセキュリティーホールになるに至ってない
スタックオーバーフローは起こせるけど
そこからどうやってセキュリティーホールたる
悪意のあるコードの注入と実行に至るのか知りたい

確保サイズを超えての書き込み(オーバーラン)は
セキュリティーホールに成り得るけど、それはVLAだろうが固定だろうが同じだし

222 :デフォルトの名無しさん (ドコグロ MM83-pmxy):2017/03/10(金) 09:12:05.47 ID:OTPF9/DXM
>>220
次に出てくる確率はどのくらいだろうね?

223 :デフォルトの名無しさん (ワッチョイ bf7b-NGN/):2017/03/10(金) 09:15:12.97 ID:1BLND3090
>>217
VLAがどこに確保されるか確認したくて粘着してたと言い訳するのか?
じゃ、答え合わせが終わったところで、

> VLAのサイズと最大値は全く独立だ
につけてきた言いがかりは撤回するって事だな。

224 :デフォルトの名無しさん (ワッチョイ bf7b-NGN/):2017/03/10(金) 09:54:31.76 ID:1BLND3090
ID:Kb3gKMEf0は逃亡しちゃったようだからもう一匹の当事者
セキュリティの穴を説明しろ

>>176 : ◆QZaw55cn4c (ワッチョイ be13-H6F/)2017/03/09(木) 07:10:53.29 ID:hGM1T24/0
> >>175
> VLA はセキュリティの穴になりうるね,実行時の値で配列の上限が決まるなんて危険な発想ではないかい?
> そんなものを標準に入れていいのか?

225 :デフォルトの名無しさん (ワッチョイ 0719-9O7/):2017/03/10(金) 10:02:29.68 ID:YR4SAqR10
セキュリティーの穴とはセキュリティーホールの事です
セキュリティーホールとは安全のホールの事です
安全のホールとは安全の穴の事です。
安全の穴とは自分で調べろカスということです。

226 :デフォルトの名無しさん (エーイモ SEb2-j8zu):2017/03/10(金) 11:15:35.92 ID:+H2nFcdAE
苦cで学んでるけどc難しい

227 :デフォルトの名無しさん (アウアウウー Sa93-gCpv):2017/03/10(金) 12:34:51.49 ID:6UnBWLdUa
苦Cくらいの基礎的な部分は他の高級言語と比べるとわかりやすいと思うけどね
そいつらよか機械寄りの言語だからブラックボックスが少ないし
ただ暗記より理解が大事にはなる
人間の視点を捨てて機械の気持ちになるんだ

228 :デフォルトの名無しさん (ドコグロ MM83-UZLy):2017/03/10(金) 12:46:04.08 ID:b/HgXddWM
俺は人間をやめるぞ!

229 :デフォルトの名無しさん (ワッチョイ 0719-9O7/):2017/03/10(金) 13:47:06.37 ID:YR4SAqR10
妖怪人間になるのか?

230 :デフォルトの名無しさん (ワッチョイ af7b-aox5):2017/03/10(金) 13:56:43.32 ID:LsCbePTG0
メーテル・・・

231 :デフォルトの名無しさん (ワッチョイ bf85-aizu):2017/03/10(金) 18:35:04.54 ID:JlJm70jl0
>>223
「VLA って alloca() のことじゃない、類似品なら C89 のときからあるよね」
「flexible array member って C FAQ に書いてあるじゃない、類似品なら C89 のときからあるよね」

「C99 についてこれないと老人よばわりするけど、実は昔からあるよね」

232 :デフォルトの名無しさん (ワッチョイ bf85-BkNt):2017/03/10(金) 18:40:21.38 ID:JlJm70jl0
>>218
>>173 は別人だよ

でもね、スタックに配列を置くんだったら基本固定長だね、まあ alloca() を使ってみたりするくらいだから自分も首尾一貫はしていないのは認めるけどね

>>173 の指摘はするどいね
>外部入力でリミット切らないとか、
自分もこわくてできないね

233 :デフォルトの名無しさん (ワッチョイ bf7b-NGN/):2017/03/10(金) 19:05:25.98 ID:1BLND3090
>>231
>>217
VLAがどこに確保されるか確認したくて粘着してたと言い訳するのか?
じゃ、答え合わせが終わったところで、

> VLAのサイズと最大値は全く独立だ
につけてきた言いがかりは撤回するって事だな。

234 :デフォルトの名無しさん (ワッチョイ 0719-9O7/):2017/03/10(金) 19:06:34.39 ID:YR4SAqR10
俺はリミット切らないぜ〜ワイルドだろ〜

235 :デフォルトの名無しさん (ワッチョイ bf7b-NGN/):2017/03/10(金) 19:10:43.67 ID:1BLND3090
>>232
allocaは平気で使ってるようだけど、なんでVLAは
> >外部入力でリミット切らないとか、
> 自分もこわくてできないね
これなんだ? 謎

236 :デフォルトの名無しさん (ドコグロ MMca-ezmg):2017/03/10(金) 19:32:49.66 ID:V/tY9QS2M
>>232
別人ならすまん

> >>173 の指摘はするどいね
> >外部入力でリミット切らないとか、
> 自分もこわくてできないね
これはセキュリティホールの話かね?
そうだと言うならどこがどう危険なのか詳しく説明して欲しいんだが

237 :デフォルトの名無しさん (ワッチョイ bf85-BkNt):2017/03/10(金) 19:33:05.83 ID:JlJm70jl0
>>235
首尾一貫していないのは認めるよ、でもスタックに何でも乗せまくるのは怖いね
データをスタックに置き、スタックからヒープに移す一連の作業では、データ用の配列は固定長にするね、そこらへんは慎重にやってるよ
alloca のいいところは使い捨てができるところだね

いいたいことは >>231

238 :デフォルトの名無しさん (ワッチョイ bf85-BkNt):2017/03/10(金) 19:37:50.00 ID:JlJm70jl0
>>236
セキュリティホールも視野にいれているが、直接は関係ないかもしれないね
セキュリティホールは、書いている時点では予想もつかないところがあるから(ミスは事前にはわからない)
自分の能力を考えて、スタックには固定長をあてるようにしているよ
固定長の定数を最低限に振って(N=2 くらい)、それでも正常に動くことを確認したりしてから N=1024 とか 4096 とか適当にわりふっているよ

自分の能力を過信しないことだよ
だから VLA は使わない

239 :デフォルトの名無しさん (ドコグロ MMca-ezmg):2017/03/10(金) 19:59:52.49 ID:V/tY9QS2M
>>238
もう言ってることがむちゃくちゃだな...

> セキュリティホールも視野にいれているが、直接は関係ないかもしれないね
結局関係あるかどうかも知らないのに
> >>173 の指摘はするどいね
とか言ってたのかよ

> セキュリティホールは、書いている時点では予想もつかないところがあるから(ミスは事前にはわからない)
今の話に関係ないよな

> 自分の能力を考えて、スタックには固定長をあてるようにしているよ
お前の能力なんてどうでもいいし、プログラムの作り方もどうでもいい(部下がやってたら張り倒すけど)

> 自分の能力を過信しないことだよ
鏡を見た方がいいぞ

> だから VLA は使わない
これもどうでもいい結論だな

240 :デフォルトの名無しさん (JP 0H1f-busz):2017/03/10(金) 20:00:22.53 ID:cy2JzExTH
allocaは使うのに?

241 :デフォルトの名無しさん (フリッテル MM0e-X9Oq):2017/03/10(金) 20:06:19.22 ID:Y9Psq7+lM
1関数でスタッフを使っていいのはせいぜいキロバイトオーダーまで
メガバイト以上はヒープ推薦

242 :デフォルトの名無しさん (ワッチョイ 0719-9O7/):2017/03/10(金) 20:06:51.85 ID:YR4SAqR10
VLAは政府の陰謀だから使っては駄目だ

243 :デフォルトの名無しさん (ワッチョイ f217-csvI):2017/03/10(金) 20:44:24.96 ID:n8W4k0Sb0
Windowsのカーネルモードは12KBのスタックサイズ制限があるので、ひとつの関数で数KBスタックを使うのはかなり贅沢。

244 : ◆QZaw55cn4c (ワッチョイ be13-H6F/):2017/03/10(金) 20:45:49.50 ID:Jt0Ka4fq0
>>240
まあ,そうだね

245 :デフォルトの名無しさん (ワッチョイ bf7b-NGN/):2017/03/10(金) 21:57:09.32 ID:1BLND3090
>>238
非標準ライブラリのallocaは使うのにVLAを使わない理由はなんだ
逃げてないで答えろよ

246 :デフォルトの名無しさん (ワッチョイ bf7b-NGN/):2017/03/10(金) 21:59:24.00 ID:1BLND3090
>>238
非標準ライブラリのallocaはセキュリティ上問題ない(だから使う)として
一方でVLAはセキュリティ上問題あるとしている根拠を述べよ

247 :デフォルトの名無しさん (ワッチョイ 723c-T4+7):2017/03/11(土) 00:59:17.54 ID:99Bu6VN70
VLAって本当になんであるんだろうな。
ソフトウェアの脆弱性を誘発するためにNSAやアメリカ政府が無理やりぶち込んだ仕様としか思えない。

248 :デフォルトの名無しさん (ブーイモ MM92-busz):2017/03/11(土) 01:24:57.09 ID:37V8Z39XM
>>247
どんな脆弱性?

249 :デフォルトの名無しさん (ワッチョイ cfd4-nt29):2017/03/11(土) 01:44:41.71 ID:o4rVijF20
>>241
スタックサイズ拡張したらダメなの?

250 :デフォルトの名無しさん (ドコグロ MMca-ezmg):2017/03/11(土) 05:56:56.37 ID:0cGmXZ4gM
>>247
> NSAやアメリカ政府が無理やりぶち込んだ仕様としか思えない。
基地害の妄想

251 :デフォルトの名無しさん (ドコグロ MMca-ezmg):2017/03/11(土) 05:58:26.88 ID:0cGmXZ4gM
>>249
>>243 みたいに拡張できないケースは少なくない

252 :デフォルトの名無しさん (ワッチョイ f338-9O7/):2017/03/11(土) 08:06:11.09 ID:zScGv76W0
https://www.youtube.com/watch?v=56-ktABNiR4
C言語マスターの生放送開始 お前らに指南してやんよ

253 :デフォルトの名無しさん (ワッチョイ 0742-2hGO):2017/03/11(土) 09:07:47.31 ID:qsNY6D990
wikipedia

VLA
超大型干渉電波望遠鏡群(Very Large Array,VLA)
軽量飛行機 (Very Light Aircraft) - 欧州における航空機分類の一つ
垂直発射アスロックミサイル(Vector Launch ASROC)
ボランティア法律家による芸術支援団体(Volunteer Lawyers for the Arts,VLA)
ヴィオラ (Viola) の略称 (vla, va) - ヴァイオリン族の弦楽器

陰謀だな
まちがいない

254 :デフォルトの名無しさん (ワッチョイ fe81-1sZU):2017/03/11(土) 12:50:26.01 ID:hyZtRr/u0
C#なら一行で終わる内容をCは20〜30行必要w
老い先短いジジイどもは死ぬまでCで書いてろwww

255 :デフォルトの名無しさん (ワッチョイ be41-/tS9):2017/03/11(土) 13:11:24.12 ID:awln0KGk0
>>254
なんでC#は一行で済むと思う?

256 : ◆QZaw55cn4c (ワッチョイ bf85-BkNt):2017/03/11(土) 15:26:38.47 ID:sAcoRj840
>>239
お前は自分の論理を信用しすぎる
https://en.wikipedia.org/wiki/Godel%27s_incompleteness_theorems

>>173
の指摘は鋭いと思うよ、外部入力でリミットを切らないのは悪手の典型だ
繰り返していっておくが、セキュリティホールは事前には書いている本人にもわからない
だから定石を信用して事を始めたほうが悪い結果がやってこない場合が多い
スタックあふれは発生してはじめてわかる、リンかのオプションを指定しても根本的解決にならない
毎月の windows update が一向に減らない理由も考慮しておいたほうがいい

C99 の可変長配列は、安易にスタックを大盛りにする悪手に誘導するという点で、筋悪だと主張している
(でも私は alloca は使うけどね :-)

257 :デフォルトの名無しさん (ワッチョイ bf85-BkNt):2017/03/11(土) 15:27:36.34 ID:sAcoRj840
>>246
alloca はスタック上に展開することがはっきりしているからね、でも C99 の VLA は実装上の指定は規定にはないのでは?

258 :デフォルトの名無しさん (ブーイモ MM2b-busz):2017/03/11(土) 15:36:12.19 ID:VKYuFzhGM
なんでスタック上にあることが確実なら安全になるの?

259 :デフォルトの名無しさん (ワッチョイ bf7b-WeoV):2017/03/11(土) 15:40:27.05 ID:fayNaA1W0
>>256
逃げずに答えろ

非標準ライブラリのallocaはセキュリティ上問題ない(だから使う)として
その一方でVLAはセキュリティ上問題あるとしている根拠を述べよ

260 :デフォルトの名無しさん (ワッチョイ 0719-9O7/):2017/03/11(土) 16:03:26.08 ID:+8AcHZCs0
VLAはallocaのシンタックスシュガーだろシンタックスシュガーに
よってarray[size]のsizeがマクロか変数か気にしなくてよくなった。
きにしなくなるということは考えなくなるということだから
何も考えず配列を手軽に使えなくなったということだよ。

261 :デフォルトの名無しさん (ワッチョイ 723c-ezmg):2017/03/11(土) 16:06:18.87 ID:d5jme4tX0
>>256
前半は VLA 固有の話じゃないよな

> C99 の可変長配列は、安易にスタックを大盛りにする悪手に誘導するという点で、筋悪だと主張している
根拠のない主張はチラ裏にでも書いとけ

262 : ◆QZaw55cn4c (ワッチョイ be13-H6F/):2017/03/11(土) 16:09:24.59 ID:7UjqbkJQ0
>>260
>VLAはallocaのシンタックスシュガーだろ
規格には書いていないけれども,まあ同意するね >>213
でも,スタック大盛りに誘導するのは筋悪だろう?

>>259
alloca() にセキュリティ上の問題がないとは主張していないよ
setjmp()/longjmp() と同じで,悪い使い方をすれば,当然バグる

263 :デフォルトの名無しさん (JP 0H1f-busz):2017/03/11(土) 16:12:09.28 ID:bM520vnYH
allocaはスタック大盛りに誘導しないの?

264 : ◆QZaw55cn4c (ワッチョイ be13-H6F/):2017/03/11(土) 16:15:28.58 ID:7UjqbkJQ0
もともとのお題は >>87 >>134 >>135 >>139 で,
最終的な回答は >>231 だよ,セキュリティの話は派生的な話題で,正直どうでもいい

265 :デフォルトの名無しさん (ワッチョイ 0719-9O7/):2017/03/11(土) 16:22:03.96 ID:+8AcHZCs0
[]のなかが数字のときはもはやVLAの特別な場合になってしまったんだよ。
VLAを使わないないと思っても実はみんな使ってるんだよな。

266 :デフォルトの名無しさん (ワッチョイ 725b-Zg/o):2017/03/11(土) 16:22:22.50 ID:m3w8ys+M0
>>264
もう相手にしなさんな。
複数の端末を使い出してるしよ

267 :デフォルトの名無しさん (ワッチョイ bf7b-NGN/):2017/03/11(土) 16:35:26.69 ID:fayNaA1W0
>>264
allocaを使って、VLAは筋悪といった理由は全然示してないな。
逃げずに答えろ。

> 最終的な回答は >>231 だよ,セキュリティの話は派生的な話題で,正直どうでもいい
じゃ
> VLA はセキュリティの穴になりうるね,実行時の値で配列の上限が決まるなんて危険な発想ではないかい?
> そんなものを標準に入れていいのか?
これは知ったかぶりしましたってことだな。

268 :デフォルトの名無しさん (ワッチョイ bf7b-NGN/):2017/03/11(土) 16:39:36.88 ID:fayNaA1W0
>>260
> VLAはallocaのシンタックスシュガーだろ
全然違う1000年ROMってろ

for() {
char *p = alloca(size);
}

for() {
char p[size];
}

269 :デフォルトの名無しさん (ワッチョイ 723c-ezmg):2017/03/11(土) 16:51:56.73 ID:d5jme4tX0
>>264
> セキュリティの話は派生的な話題で,正直どうでもいい
じゃあ絶賛していたこれは撤回でいいんだよね
> しかも外部入力でリミット切らないとか、セキュリティホールの典型じゃね?

270 :デフォルトの名無しさん (ワッチョイ ef6f-/mQW):2017/03/11(土) 18:41:42.10 ID:p1f1fsAr0
allocaで取った領域はブロックの終わりじゃなく、関数の終わりまで開放されない
VLAはブロックの終わりで開放されるところが違う

というかallocaの落とし穴みたいな話だね、これは

271 :デフォルトの名無しさん (ワッチョイ bf7b-NGN/):2017/03/12(日) 09:00:20.57 ID:lxzttZnn0
> というかallocaの落とし穴みたいな話だね、これは
C++脳の落とし穴だよ
単なるライブラリ関数が返したポインタをスコープ抜けただけで解放できるわけないじゃん

272 :デフォルトの名無しさん (ワッチョイ db7b-IJma):2017/03/12(日) 14:21:13.54 ID:dQxGFGsK0
Cのコンパイルで詰まっています。

vimで表示した時にカッコが赤くなるのは何でなんでしょうか?
http://i.imgur.com/n84ewum.png
カッコの対応はちゃんとやってると思います。。。

またこのソースをコンパイルしたときに
http://i.imgur.com/XIX3aCv.png
というエラーメッセージが出ますが、これもこの部分を変えていないのに
突然エラーが出始めました。
何度見てもここの表記は間違っていません、というか変えていないので間違ってるわけありません。

これで今日の朝からずっと止まっているのですが、、、
原因が分かる方いますでしょうか?

273 :デフォルトの名無しさん (ワッチョイ bf7b-WeoV):2017/03/12(日) 14:24:07.85 ID:lxzttZnn0
main( ←これが閉じていない

274 :デフォルトの名無しさん (エムゾネ FF92-mCUX):2017/03/12(日) 14:24:47.88 ID:CrU6WH4/F
( と {

275 :デフォルトの名無しさん (ワッチョイ db7b-oWlJ):2017/03/12(日) 14:25:47.72 ID:dQxGFGsK0
ありがとうございます死んで来ます
いつ消えたんだ…

276 :デフォルトの名無しさん (ワッチョイ 0742-csvI):2017/03/12(日) 15:15:20.20 ID:IXx0ivIZ0
生きるんだ!

277 :デフォルトの名無しさん (アウアウカー Sa7f-K8Mp):2017/03/12(日) 16:58:28.23 ID:Fl2HPIwQa
か、可愛いw
キモいレスバにフレッシュなコメ

278 :デフォルトの名無しさん (フリッテル MM0e-X9Oq):2017/03/13(月) 12:35:01.26 ID:WVfxmOF7M
この程度のタイプミスぐらい自分で見つけられんようじゃ
先が厳しいんじゃないか
C言語に関係なく

279 :デフォルトの名無しさん (スップ Sd92-oWlJ):2017/03/13(月) 14:36:21.34 ID:dPy5EX8Fd
タイプミスを見つけれるかどうかは
エディタとエラーメッセージの優秀さによるという持論

280 :デフォルトの名無しさん (フリッテル MM0e-X9Oq):2017/03/13(月) 16:10:47.81 ID:v3XqhUuXM
これだけ赤く指摘してくれててまだそういうこと言えちゃうとは
人間の欲は天井知らずだな

281 :デフォルトの名無しさん (ワッチョイ 13f2-jJqA):2017/03/13(月) 16:55:25.56 ID:tV/WpGXC0
与えた入力に対して期待値と異なる出力となったとき
何が起きているか洞察をする専門職のくせに
コンパイラだけが何か特別なデバイスであるかのように思い込んでいるアフォだね

282 :デフォルトの名無しさん (ワッチョイ efb5-j8zu):2017/03/13(月) 17:25:35.83 ID:6TfSzvFh0
つかエラーメッセージに答えがあるじゃん

283 :デフォルトの名無しさん (ワッチョイ e3dc-XjEB):2017/03/13(月) 17:57:51.98 ID:IkDDkkqX0
49行の開き括弧か86行の閉じ括弧に色が付けば
もっとエラー位置が分かりやすいとは思うけどね。

main(
の内側に書ける要素がvimの文法チェック情報に登録されていて、
それに合致しない部分が指摘される、という仕掛けかな。

284 :デフォルトの名無しさん (スップ Sd92-oWlJ):2017/03/13(月) 18:42:23.61 ID:dPy5EX8Fd
>>283
言いたかったのはそういうことです
もう少しピンポイントにエラーメッセージ出せそうな気がするのですが
なかなかそうもいかないものなのだろうか

285 :デフォルトの名無しさん (ドコグロ MMca-pmxy):2017/03/13(月) 18:47:33.49 ID:DDChi3YkM
コンパイラがそれを指摘してるのに。

286 :デフォルトの名無しさん (アウアウカー Sa7f-K8Mp):2017/03/13(月) 20:33:47.62 ID:RNfJ73Ada
初心者だから許してやれよw
分かんなくて聞く人も周りにいなかったんだろ

287 :toya (ワッチョイ a37b-u6wT):2017/03/16(木) 20:49:48.72 ID:yxjuKDF10
C言語の教科書をwikibookで執筆してみました。
標準ライブラリ以外だいたい書き終えました。
よろしかったら加筆・修正などお願いいたします。
https://ja.wikibooks.org/wiki/C%E8%A8%80%E8%AA%9E

「C言語」でググると10番目あたりに表示されます。
標準ライブラリも完成させたらもう少し上がるだろうか。

288 :デフォルトの名無しさん (ワッチョイ 5319-v8EU):2017/03/17(金) 08:58:22.22 ID:Wd4E8hAa0
mallocは昔はchar*ポインターを返していたから言ったけれど
今はvoid*だから必要ないよ。
情報古すぎない?
どんな大昔の本を参考にしているんだ?

289 :デフォルトの名無しさん (ワッチョイ 73d4-9jmm):2017/03/17(金) 09:01:26.88 ID:ft8i32zD0
最初に「まず、これを読め」と記述しておいて。
あとは、補足事項があれば追記していく形式の方がいいかな。

C89/C90: http://read.pudn.com/downloads133/doc/565041/ANSI_ISO%2B9899-1990%2B[1].pdf
C99: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
C11: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf

ルールに加えて、解説やサンプルコードなんかを付けて教科書にしようとしたら、
上記のPDFの数倍の分量になってしまう。

290 :デフォルトの名無しさん (ブーイモ MMdf-2dGQ):2017/03/17(金) 09:16:22.96 ID:f1lK9slqM
手を動かして書いたことには敬意を表すし
自分は口先だけで申し訳ないんだが
せっかく書くならターゲット読者をもっとはっきり想定すべきかな
プログラミング自体の初心者はこれでは読んでもわからない
Cの初心者向けとしても、コード見ろと突き放さずに、コード解説を増やす、
図を豊富につける、練習問題と解答例ページをつけるとか

291 :デフォルトの名無しさん (ワッチョイ 3fdf-8FG5):2017/03/17(金) 10:23:44.22 ID:AO+9LJwo0
>>287
「配列とポインタ」という節がでたらめもいいとこ。
初心者が勝手に思い込む誤解をそのまま書いてあるぞ。
編集するならまっさらから書き直しが必要だ。

292 :デフォルトの名無しさん (JP 0H57-2dGQ):2017/03/17(金) 10:59:28.61 ID:oAih26uCH
>>291
批判はもっと具体的に

293 :デフォルトの名無しさん (JP 0Hdf-tpgq):2017/03/17(金) 11:02:37.17 ID:sIrFKA5vH
char str1[] = "hello";
P1 = str1 + strlen(str1) - 1;
末尾を指すて書いてあるんですけど
最初のstr1は、どうして必要なんですか?

294 :デフォルトの名無しさん (ワッチョイ 4385-RUHq):2017/03/17(金) 11:05:17.08 ID:IUwDlrSU0
最初しか読んでないけどまずこれが違う
「配列の識別子」と「&配列の識別子[0]」は同じ

295 :デフォルトの名無しさん (ワンミングク MM5f-qjY6):2017/03/17(金) 11:15:06.58 ID:sdsUxTdsM
>>293
strlen はオフセットだからベースアドレスを指定している

296 :デフォルトの名無しさん (JP 0Hdf-tpgq):2017/03/17(金) 11:41:08.46 ID:sIrFKA5vH
>>295
ありがとうございます

297 :デフォルトの名無しさん (ワッチョイ 3fdf-8FG5):2017/03/17(金) 12:02:47.24 ID:AO+9LJwo0
>>292
最後の一行で「具体的に」言ってるんだが

298 :デフォルトの名無しさん (JP 0H57-2dGQ):2017/03/17(金) 12:15:35.09 ID:oAih26uCH
>>297
それただのパワハラ上司と同じ

299 :デフォルトの名無しさん (ワッチョイ 3fdf-8FG5):2017/03/17(金) 12:20:56.72 ID:AO+9LJwo0
>>298
それただの使えない社員と同じ

逆に聞くがあれの全部を書き直さないとして
どこを残すべきだと思っている?

300 :デフォルトの名無しさん (ワッチョイ 3fdf-8FG5):2017/03/17(金) 12:25:14.65 ID:AO+9LJwo0
「配列とポインタの基本」と称する節でもう「配列の識別子と&配列の識別子[0]は同じ」なんて大ウソこいてるし
「1次元配列を指すポインタ」は配列ではなく単体を指すポインタの説明しかしていない
「多次元配列を指すポインタ」に多次元配列を指すポインタが全く出てこない

301 :デフォルトの名無しさん (JP 0H57-2dGQ):2017/03/17(金) 12:33:20.85 ID:oAih26uCH
>>300
おう、これを、具体的な批判というのだよ

302 :デフォルトの名無しさん (アウアウウー Sa37-Rmg3):2017/03/17(金) 12:37:20.54 ID:zqIC+zida
ポインタまで書きたいならCには多次元配列なんて存在しないことも書いとかないと学習者はわけわかんなくならない?

303 :デフォルトの名無しさん (ワッチョイ 3fdf-8FG5):2017/03/17(金) 12:49:42.29 ID:AO+9LJwo0
>>302
じゃあ int (*pa)[3][4]; は何を指すポインタと言うべきかね?

304 :デフォルトの名無しさん (ワッチョイ 5319-v8EU):2017/03/17(金) 12:57:25.64 ID:Wd4E8hAa0
間違った情報を載せるということは載せないほうがましだということがわかってないね

305 :デフォルトの名無しさん (ドコグロ MMb7-yrln):2017/03/17(金) 13:19:26.79 ID:MT1dI4q4M
wikibookはC89前提なんでしょ。書いてないけどそんな感じがする

それでもint main()なのに返り値を返さないのは気になる
(関数の章で返却値の説明でもそうなのはどうかと)

「文字と文字列」はわりとひどい。1バイト=半角文字じゃないし、
unicode に半角文字は無いと思いこんでるようだし。
90年代に独学でパソコン上でCを勉強した人のメモにみえる

306 :デフォルトの名無しさん (ワッチョイ 3fdf-8FG5):2017/03/17(金) 13:31:01.59 ID:AO+9LJwo0
C89なら2.1.2.2 Hosted environmentでIf the main function executes a return that specifies no value, the termination status returned to the host environment is undefined.って書いてあるからmainにreturnがないのはNGだね。

C99では5.1.2.2.3 プログラム終了処理で「main 関数を終了する}に到達した場合,main 関数は,値0 を返す」となっているからmainのreturnなしはOK。

307 :デフォルトの名無しさん (ワッチョイ 3fdf-8FG5):2017/03/17(金) 13:39:02.86 ID:AO+9LJwo0
> int i, *pi=NULL;
> *pi=1;//必ずエラーになる。

未定義に「必ず」はねえんだよヴォケ

308 :デフォルトの名無しさん (JP 0Hdf-tpgq):2017/03/17(金) 15:20:45.47 ID:CLjQ7KbNH
while((ch = fgetc(fp) != EOF)
ferrorとEOFでエラーかそうでないか調べてるだろ?
feofってなんの意味があるの?

309 :デフォルトの名無しさん (JP 0Hdf-tpgq):2017/03/17(金) 15:37:30.17 ID:CLjQ7KbNH
本読んでたら自決しました

310 :デフォルトの名無しさん (ワッチョイ f37b-QFag):2017/03/17(金) 15:57:15.05 ID:XponhHf70
はやまるなよ

311 :デフォルトの名無しさん (ワッチョイ f3e8-2k4t):2017/03/17(金) 17:29:22.78 ID:QOMjQWO00
なんか文学っぽいね。
寺山修司と三島由紀夫を合わせた感じ。

312 :toya (ワッチョイ a37b-u6wT):2017/03/17(金) 20:54:03.91 ID:hFAn1F6/0
>>300
「C言語/配列とポインタ」のページに関しては自分は正しいと思っていたので、
現在確認中です。とりあえず、テンプレート:正確性を付けておきました。

>>305
「C言語/文字と文字列」のページに、制御文字についても追記しました。

>>307
「C言語/ポインタ#NULLポインタ」の節について修正しました。

313 :デフォルトの名無しさん (アウアウウー Sa37-Rmg3):2017/03/17(金) 21:02:08.87 ID:/pGD2dIka
>>303
intの配列(要素数4)を一つの要素とする配列(要素数3)へのポインタでしょ
ただの配列の配列を多次元配列と呼ぶのは違うでしょう

314 :デフォルトの名無しさん (ワッチョイ bfda-8FG5):2017/03/17(金) 21:08:39.12 ID:sgxnbWig0
> NULLポインタにアクセスした場合、OSがエラーを発生する場合もあるが、

ねえよヴォケ
int *pi;
pi = NULL;
printf("%p", pi); //エラーは生じない。生じるとしたらpanic状態だけ

315 :toya (ワッチョイ a37b-u6wT):2017/03/17(金) 21:17:55.46 ID:hFAn1F6/0
>>314
元の本では「OSが異常を検知して即座にプログラムを停止させてくれる」と書いていたのですが、
これを「OSがエラーを発生する場合もあるが」と記述したのは誤りなのでしょうか?

316 :デフォルトの名無しさん (ワンミングク MM5f-qjY6):2017/03/17(金) 21:25:57.94 ID:sdsUxTdsM
OS/9 68000とか実記憶系だと暴走するな

317 :デフォルトの名無しさん (ワッチョイ bfda-8FG5):2017/03/17(金) 21:31:52.99 ID:sgxnbWig0
>>315
誤りだよ、真っ黒、弁明の余地はまったくない
つーか、おまえやってみろよ
どこの世界であのコードをエラーにできるOSを見つけられたのか
読者が知りたいのはそこなんだよ
「元の本」なんか読者も読めばわかるんだよ
おまえの経験値を提供しろ、それ以外にあのサイトの存在意義は何だ?

318 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/17(金) 21:50:59.67 ID:8kMzXY9p0
>>314
未定義なんだからどんな動作しても不思議じゃない
それが「OSがエラーを発生する」という動作なだけだな

319 :デフォルトの名無しさん (ワッチョイ bf5b-2PX+):2017/03/17(金) 21:54:22.50 ID:9Couem/D0
AS400では確かエラーが出てた気がする。
ともかくウインドウズでは理解できんよ

ATMも壊した記憶がある。

320 :デフォルトの名無しさん (ワッチョイ bfda-8FG5):2017/03/17(金) 21:54:27.04 ID:sgxnbWig0
>>318
314のどこに未定義があんだよ
おまえ頭湧いてんのか??

321 :toya (ワッチョイ a37b-u6wT):2017/03/17(金) 22:02:07.25 ID:hFAn1F6/0
>>317

// HelloWorld.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"
#include <stdio.h>

int main(void)
{
int i, *pi = NULL;
*pi = 1;//必ずエラーになる。
}

「Windows 10 Pro」、「Visual C++ 2015」で、
上のプログラムを実行すると、
「HelloWorld.exeは動作を停止しました
問題が発生したため、プログラムが正しく動作しなくなりました。プログラム
は閉じられ、解決策がある場合はWindowsから通知されます。」
と表示されプログラムが終了しますが、
これはエラーメッセージとは呼ばないのでしょうか?

322 :デフォルトの名無しさん (ワッチョイ bf9f-spnv):2017/03/17(金) 22:14:02.68 ID:Wd9/xPhT0
>>321
それはNULLポインタにアクセスしただけじゃなく
NULLポインタの指し示す領域にアクセスしようとしたからでは

323 :デフォルトの名無しさん (ワッチョイ cf42-u6wT):2017/03/17(金) 22:20:21.45 ID:uumdUn730
>>314
pi = NULL;
printf("%p", pi);

これでエラーを生じさせるのは難しいな

324 :デフォルトの名無しさん (JP 0H77-Odst):2017/03/17(金) 22:26:08.25 ID:aH9iGnt2H
windowsでコンソールなしならコケるよ

325 :デフォルトの名無しさん (ワッチョイ bf17-u6wT):2017/03/17(金) 22:27:09.66 ID:q3WLQEZV0
>>323
それ変数の中身見てるだけでアクセスしてないじゃん
アクセスされるには*piにしないと

326 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/17(金) 22:32:57.53 ID:8kMzXY9p0
>>320
NULLポインタにアクセスとは、普通NULLポインタをデリファレンスする事だが
>>314の後半の��コードは知らん

327 :デフォルトの名無しさん (ワッチョイ bf25-8FG5):2017/03/18(土) 07:46:26.17 ID:BHNX1/aY0
>>321
最初に言っただろ「未定義に必ずはない」と
もう忘れたのか?

いいか、WindowsのSTOPダイアログはCの仕様じゃねえぞ
CではあくまでNULLを逆参照したら未定義の動作つってるだけだ
未定義の動作とは禁止に違反した場合にどのような保証もないことをいう

*** おまえの間違いは「必ず」という文言を入れたことだ ***

そしてその間違いに対する言い訳でもう1つ誤りを犯している
Cを教えるはずが論点がWindowsになってしまったことだ

328 :デフォルトの名無しさん (ワッチョイ 03fd-12+v):2017/03/18(土) 07:49:39.12 ID:HdcIx2lR0
アドレス0x0000に意味のあるデータがあってもC言語だとアクセス出来ないの?

329 :デフォルトの名無しさん (ワッチョイ 733c-tpgq):2017/03/18(土) 07:58:49.65 ID:+rfyF7Rl0
いにしえの割り込みハンドラ・・・

330 :デフォルトの名無しさん (ワッチョイ bf25-8FG5):2017/03/18(土) 08:10:46.63 ID:BHNX1/aY0
>>328
Cでは有効なオブジェクトは決して0x0000番地を含まない
もし0x0000番地を有効なオブジェクトに使うならば
それはもはやCではない、Cライクな別の言語だ

331 :デフォルトの名無しさん (ワッチョイ a351-tpgq):2017/03/18(土) 09:07:41.55 ID:87n2zRpL0
べつに、規格上の未定義動作に処理系が動作を定義することが禁止されているわけでもあるまい。
実際にVCがそう定義しているかどうかは知らんが、定義しているならその環境で「必ず」と言って
いいわけだし、一般論として「OSがエラーを出す場合もある」ってのも正しい。

332 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/18(土) 09:17:10.66 ID:1jN6Nl4i0
>>328
NULL は 0 番地と決まってる訳じゃない
違う例はほとんどないけど

333 :デフォルトの名無しさん (ワッチョイ 5319-v8EU):2017/03/18(土) 09:20:30.72 ID:d7Ob6ym/0
静的変数を定義してそのアドレスを番兵に使うイディオムと同じ。

334 :デフォルトの名無しさん (ワッチョイ bf25-8FG5):2017/03/18(土) 10:03:11.26 ID:BHNX1/aY0
>>331
そういうのは未定義じゃなく処理系定義だ

おまえは「必ず」と言った
それを一般論だとか場合もあるにすり替えるなら
おまえ自身が誤りを認めることになる

335 :デフォルトの名無しさん (ワッチョイ bf5b-2PX+):2017/03/18(土) 11:33:55.64 ID:WGf9t5s20
みんな触れるんじゃないぞ。

336 :デフォルトの名無しさん (ワッチョイ bfcf-12+v):2017/03/18(土) 11:37:10.99 ID:KONZKirJ0
>>320
http://kikakurui.com/x3/X3010-2003-01.html#206
( fprintf() の変換指定子について)
> p 実引数は,void へのポインタでなければならない。
...
> ... 実引数の型が対応する変換指定に対して正しくない場合,その動作は,未定義とする。

>>314 は %p に int* ( != void* )を渡しているので、動作は未定義。

337 :デフォルトの名無しさん (ワッチョイ f36f-MCO2):2017/03/18(土) 11:48:41.77 ID:tuXgGGJ00
>>328
アクセスできる。アドレス0x0000を指すポインタを使えばいい。

なお、WindowsやLinuxのプログラムがアドレス0x0000にアクセスできないのは
単にOSがガードしているってだけ。

>>330
んなことない

338 :デフォルトの名無しさん (ワッチョイ 73d4-9jmm):2017/03/18(土) 11:56:28.99 ID:emLmHug10
ポインタにNULLポインタ or 0を代入することはできても。
そのポインタの参照先がアドレス0番地であることは保証されてるんだっけ?

339 :デフォルトの名無しさん (ワッチョイ 8fc9-tpgq):2017/03/18(土) 12:02:21.90 ID:frTBE7qo0
鼻から牛乳が出るのは 未定義だっけ? 未定だっけ? 不定?

340 :デフォルトの名無しさん (ワッチョイ a351-tpgq):2017/03/18(土) 12:09:42.93 ID:87n2zRpL0
「0番地にアクセスできることを保証するポインタ」というものを処理系で用意することはできる。
ただまぁ、NULLとの比較の扱いがやっかいだから普通は「0番地にアクセスする関数」で済ませるだろうな。

341 :デフォルトの名無しさん (ブーイモ MM77-2dGQ):2017/03/18(土) 12:29:29.54 ID:nArQg9P4M
>>339
悪魔だろ

342 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/18(土) 12:51:42.82 ID:1jN6Nl4i0
>>339
それは嘉門達夫

343 :デフォルトの名無しさん (JP 0H77-0F0t):2017/03/18(土) 15:10:41.20 ID:kZzz1eqTH
ポインタに対する0リテラルは単なるNULLのシンタックスシュガー
ポインタに対するNULLは何も指さないことをコンパイラに指示しているだけであって具体的なアドレスを意味しているものではない
つまりどこも指していない

344 :デフォルトの名無しさん (ワッチョイ 836f-8FG5):2017/03/18(土) 17:35:41.69 ID:s2BlUuB40
>>337
んなことある
6.3.2.3 ポインタ
空ポインタ定数をポインタ型に型変換した場合,その結果のポインタを空ポインタ(null pointer)と呼び,いかなるオブジェクト又は関数へのポインタと比較しても等しくないことを保証する。

345 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/18(土) 18:43:55.02 ID:8T4/OjG20
>>330
NULLポインタリテラルとNULLポインタの違いを理解しよう
この二つがメモリ上で同一の表現である事を規格は求めていない

void *p = 0; // 正しい

void *p;
memset(&p, 0, sizeof p); // 間違い

346 :デフォルトの名無しさん (ワッチョイ 836f-8FG5):2017/03/18(土) 20:08:31.46 ID:s2BlUuB40
>>336
それは論点が違うのでこの騒動が収まったら相手してやる
逃げも隠れもしないからそれまで待ってろ

347 :デフォルトの名無しさん (ワッチョイ 5319-v8EU):2017/03/18(土) 21:11:59.62 ID:d7Ob6ym/0
struct{
char a;
T b[];
}
で、bの先頭アドレスは少なくとも2,4,8,16の倍数ではないです、
この構造体の実体が最大アラインメントの倍数のアドレスにいる限り
てことはアラインメントがそろわないからマクロTは1バイトのアラインメント
の型しか使えなくないですか?

348 :toya (ワッチョイ a37b-u6wT):2017/03/18(土) 22:05:18.85 ID:tH3TahT+0
>>289
読者に規格を読ませるのですか?
難易度高くないですかね。

>>290
コンピュータの一般的な知識については
別の教科書に書いて任せるのを考えていました。
解説、図、練習問題などは追加していきたいですが、
まずはこのスレで間違いだと指摘された部分を修正していきたいと思います。

>>302
配列の配列を便宜上多次元の配列と呼ぶ、
というように注釈を入れるのはどうでしょうか?

349 :デフォルトの名無しさん (アウアウウー Sa37-Rmg3):2017/03/18(土) 22:18:18.72 ID:oJMthdoca
っていうかマジでターゲットがわからんな
どの層狙ってんだか

350 :デフォルトの名無しさん (ワッチョイ c375-mbHe):2017/03/18(土) 22:43:58.68 ID:tkjBsxiU0
>>302
規格に配列の配列を多次元配列と呼ぶって書いてあるのに?

351 :デフォルトの名無しさん (ワッチョイ cf7b-vzQh):2017/03/18(土) 22:51:30.21 ID:STVlMw5Y0
ポインター = 0;
仮想関数 = 0;

キーワードを増やしたくないから、0 を使ったのだろう。
これがややこしさの原因

null pointer、\0 ヌル文字、"" 空文字列の、区別が分かりにくい

352 :デフォルトの名無しさん (ドコグロ MM1f-CEB8):2017/03/18(土) 22:53:56.20 ID:LkwmWgnzM
>>348
いやいや、規格書は読まなきゃ。
一番信頼出来る文書だよ。

353 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 06:48:40.61 ID:TnjIuaQ20
>>345
んなこたわかっている
328が0x0000番地というから同じ目線で話してやっただけのこと

354 :デフォルトの名無しさん (ワッチョイ 73d4-9jmm):2017/03/19(日) 08:05:10.25 ID:kdMLqmW60
C言語の多次元配列は、厳密な仕様をあまり理解できないまま使ってるんだよなあ。
その昔、先輩から
・C言語には多次元配列はない。
・多次元配列のように見えるものは配列の配列だ。

みたいに教えられた思い出があったり。手元にあるC++(Cじゃないが)の解説本にも
・1次元配列(ベクトル)は連続したメモリである
・多次元配列は「表現系」である

と、わざわざ記述あったりする。つまり、表現することはできるし、ゆえに型も存在するが。
その実体は、他の言語(例えばFortranとか)の多次元配列とは、何か違うんだぞ?!
と言っているようにも見える。何が違うのか良く分からんけど。

深く考えないで使った方がいいのかなあ

355 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/19(日) 08:19:38.21 ID:dbfovMwi0
>>330
いいや、わかってない

>Cでは有効なオブジェクトは決して0x0000番地を含まない
>もし0x0000番地を有効なオブジェクトに使うならば
>それはもはやCではない、Cライクな別の言語だ
そのような処理系を作ることは規格上許されている

356 :デフォルトの名無しさん (ワッチョイ f37b-c/YS):2017/03/19(日) 08:36:21.90 ID:4PgJANIM0
ポインタにリテラルを代入すること自体が処理系の独自拡張に依存してるのでは?

357 :デフォルトの名無しさん (ワッチョイ 5319-v8EU):2017/03/19(日) 08:40:06.10 ID:/fHKNSq50
多次元配列といいたいのは
a[x+N*y]をシンタックスシュガーでa[x,y]って書ける奴のことじゃない
配列の配列はa[x][y]でアクセスするやつで。

358 :デフォルトの名無しさん (ワッチョイ a351-tpgq):2017/03/19(日) 08:53:44.93 ID:j2JD5hFe0
>>256
そういうのは、アドレスを入れたらポインタが出てくる関数なんてのをライブラリとして用意する。

359 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 09:11:39.21 ID:TnjIuaQ20
>>355
許す? 禁止許可の話はしてねえぞ
もし作ったらそれは何だと書いただけだ

360 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 09:17:53.32 ID:TnjIuaQ20
つーかNULLの表現が0x0000かどうかって話だったはず
企業の製品開発を禁止するかどうかって話にブレんな

361 :デフォルトの名無しさん (ワッチョイ f36f-yrln):2017/03/19(日) 09:34:58.64 ID:cZ1Iduw30
330のCじゃないってのは間違いだったんでしょ。ユー認めちゃいなよ

362 :デフォルトの名無しさん (ワッチョイ 837b-4OD8):2017/03/19(日) 09:56:49.59 ID:CdTi66AD0
int *p = 0;
としたとき、pが0x0000以外を指す可能性はある
何故なら「値としての0」の内部表現が「全ビット0」とは限らないから
故にcalloc()はその仕様「全ビット0にする」によって忌避されるのだ
これが「0を代入したのと同じ結果になる」だったら皆歓迎しただろう

363 :デフォルトの名無しさん (ワッチョイ 5319-v8EU):2017/03/19(日) 10:07:18.04 ID:/fHKNSq50
NULLは危険だから使うなということでしょ。
安全なのはアドレス0ではなく
NULL用のメモリースペースを確保しておくことだね。

364 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 10:14:40.04 ID:TnjIuaQ20
>>361
どういう脈絡でそうなるんだよ
論破できないからって勝たせてくれはねえだろ

365 :デフォルトの名無しさん (ワッチョイ f36f-MCO2):2017/03/19(日) 10:24:58.00 ID:cZ1Iduw30
>>364
まだ分かってないのか

NULLポインタはアドレス0x0000を指すポインタではない。
NULLポインタをデリファレンスすることは未定義である。
しかしアドレス0x0000を指すポインタをデリファレンスすることは問題ない。

366 :デフォルトの名無しさん (ワッチョイ 4385-bPJ5):2017/03/19(日) 10:25:05.48 ID:6ANDe7B10
330はまだ全く理解できてないようだな
ポインタに代入されるときの0って文字は数字の0とは全く関係ないんだよ

367 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 10:30:07.62 ID:TnjIuaQ20
>>365
>>353

数字の0とか言ってるアフォはスルー

368 :デフォルトの名無しさん (ワッチョイ 5319-v8EU):2017/03/19(日) 10:32:21.33 ID:/fHKNSq50
アドレス0を示すポインターをデリファレンスする=(a=*adoresu0wosimesupointer)って
事なんだけどね。
使い慣れないデリファレンスなんてことば使うから間違えるんだよ。

369 :デフォルトの名無しさん (ワンミングク MM5f-qjY6):2017/03/19(日) 10:39:04.36 ID:xMsfh7w0M
offsetof マクロ「呼んだ〜」

370 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/19(日) 11:29:30.83 ID:dbfovMwi0
>>359
規格上許されてるんだから、Cのコンパイラに他ならない
こんな単純な事が理解できないのか?

371 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/19(日) 11:40:29.25 ID:dbfovMwi0
>>367
>>328はお前よりは遥かに理解している
お前のような馬鹿を駆除しておかないと混乱の元だから、彼の疑問は暫く放置

372 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 14:14:52.15 ID:TnjIuaQ20
>>370
おまえさ、ずいぶん自信たっぷりに「許されている」て言うけど
それは具体的に規格票のどこでそうなっている?
0x0000番地については>>353で説明したわけだが、
それを聞いてまだ空ポインタを逆参照した結果が処理系定義だと言うのか?
未定義は「許さない」規定だぞ
おまえが「許している」と言うためには処理系定義が必要だ
さあ、どこに書いてある?

373 :デフォルトの名無しさん (ワッチョイ a351-tpgq):2017/03/19(日) 14:32:24.95 ID:j2JD5hFe0
まさかここに来て、NULLポインタと0番地を指すポインタの区別がついてないとは思わなかったw

374 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 14:33:40.97 ID:TnjIuaQ20
日本語が読めない外人はどっか行ってくれ

375 :デフォルトの名無しさん (ワッチョイ bfcf-12+v):2017/03/19(日) 14:47:12.52 ID:eJrKZIBf0
>>372
逆じゃないかな?

規格で「0x0000番地を有効なオブジェクトに使う」ことが禁止されて
いなければ>>330の言うようなことは成り立たないわけで、そのような
禁止事項を>>330が示す必要があるでしょ。

ここで空ポインタを逆参照した場合の話が出てくることから
「空ポインタ」と「0x0000番地」の区別がついてないのは間違いないって
わかったからもういいんだけど。

「未定義は「許さない」規定」というのも違う。
規格はなんら規定を課さないというだけで、処理系が独自に動作を
規定することはできる。

376 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 14:52:14.14 ID:TnjIuaQ20
>>375
規格がなんら規定を課さないのは未規定だハゲ
>>353をどうしても無視したいしつけーキチガイとじゃ話にならん

377 :デフォルトの名無しさん (ワッチョイ bfcf-12+v):2017/03/19(日) 15:03:00.06 ID:eJrKZIBf0
>>376
脊髄反射で相手を否定する前に確認しよう。
http://kikakurui.com/x3/X3010-2003-01.html#7
> 3.4.3 未定義の動作 ...この規格が何ら要求を課さないもの。
...
> ...翻訳時又はプログラム実行時に,文書化された,環境に特有な方法で
> 処理してもよい...
...
> 3.4.4 未規定の動作 この規格が,二つ以上の可能性を提供し,個々の場合に
> どの可能性を選択するかに関して何ら要求を課さない動作。

「空ポインタ」と「0x0000番地」をただの言い換えだと思ってるんだよね?
でも大方の人にとって「0x0000番地」は明確に意味が違うんだ。
話が合わないのはそのせいだよ。
http://www.kouno.jp/home/c_faq/c5.html#17
> Honeywell-Bullのメインフレームの中には、ビットパターン06000を (内部の)ヌルポインターとして使っているものもある。

378 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 15:17:56.93 ID:TnjIuaQ20
>>377
正しくないプログラム構成要素って書いてあるだろ
Cとは何かを規定している規格票の中で正しくないと書かれたプログラムはCか?
脊髄反射はおまえだろ、ちゃんと文脈よめってのドスカタン
「参考」には勝手にしろと書いてあるだけだぞ、わかるか外人

> 「空ポインタ」と「0x0000番地」をただの言い換えだと思ってるんだよね?
あー、おまえ>>353がそう見えるのか
外人つーか幻視の類じゃね?
キチガイつったのは差別用語だったな統合失調症の患者さん

379 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 15:19:57.68 ID:TnjIuaQ20
河野氏がどんな御仁かも知らず
ハネウエルのマシンを触ったこともなく
リンク貼るだけのカスだからこそ
もっと身近にある0でないNULLの実装例に気付かないんだろうな

380 :デフォルトの名無しさん (ワッチョイ 4385-n4DX):2017/03/19(日) 15:33:43.87 ID:6ANDe7B10
>>353はよく意味の分からない言い訳をしてるだけにしか見えないが?
もう一度どういう意味で書いたか謝ったら許してやるよ

381 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 15:40:36.44 ID:TnjIuaQ20
言ったろ、どうしても>>353を無視したいしつけー統合失調症の患者さんとじゃ話にならんと
よっぽど>>353が困るということは判ったからそろそろ許してやろうか、こっちが

382 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 15:45:06.30 ID:TnjIuaQ20
もう1つ言ってやろう
自分の経験値でものを言ってない聞きかじりとじゃ話にならん

383 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/19(日) 15:53:31.32 ID:IinMJCLx0
>>378
> 正しくないプログラム構成要素って書いてあるだろ
普通の理解力があればわかると思うが(規格の範囲では)正しくないプログラム要素のことな

> Cとは何かを規定している規格票の中で正しくないと書かれたプログラムはCか?
GCC とかの拡張機能を使ったプログラムもその意味では正しくないプログラム
それをCのソースじゃないと言うならそう言ってればいいと思う

384 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/19(日) 15:54:35.31 ID:IinMJCLx0
>>379
> もっと身近にある0でないNULLの実装例に気付かないんだろうな
ほう、興味深いから是非教えてくださいよ

385 :デフォルトの名無しさん (ワッチョイ bfcf-12+v):2017/03/19(日) 15:56:03.87 ID:eJrKZIBf0
>>378
「正しくない」だけじゃなくて「可搬性がない若しくは正しくない」って書いてあるでしょ。

正直>>353からは何も読み取れないんだけど、
>>372で0x0000番地の話と空ポインタの話を絡めてるから区別できてないと思った。
区別できてるなら空ポインタの話を持ち出す必要が無いからね。

386 :デフォルトの名無しさん (ワンミングク MM5f-qjY6):2017/03/19(日) 15:59:01.21 ID:xMsfh7w0M
WhiteSmiss cなんざprintfすら無かったよなぁ

387 :デフォルトの名無しさん (ワッチョイ 5319-v8EU):2017/03/19(日) 16:03:39.41 ID:/fHKNSq50
>>347
に答えられる強者はいないか?

388 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 16:05:14.59 ID:TnjIuaQ20
>>383
ああ、おまえ規格とは何かが解ってないわけね
只で教えてやる筋合いはないから、そこで壊れたままでいろ

>>385
おまえは自分の主張が表現できず、人の話も読めてない
これ以上おまえと話すのは間違いなく徒労に終わるな

389 :デフォルトの名無しさん (ワッチョイ 4385-n4DX):2017/03/19(日) 16:11:34.27 ID:6ANDe7B10
よく分からないけどパディング抑制したりしなければ揃えられてるだろ

390 :デフォルトの名無しさん (ワンミングク MM5f-qjY6):2017/03/19(日) 16:18:35.61 ID:xMsfh7w0M
>>387
struct hack ってoffsetof を使った技法がある。
但し、規格上は動作する事は未保証

391 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/19(日) 16:20:03.52 ID:IinMJCLx0
>>388
> 只で教えてやる筋合いはないから、そこで壊れたままでいろ
結局これかよ w
>>384 もスルーみたいだし
知ったかの自爆乙

392 :デフォルトの名無しさん (ワッチョイ 5319-v8EU):2017/03/19(日) 16:26:33.70 ID:/fHKNSq50
勘違いしでした。
sizeofでパディングしてあるところまでの大きさになってました。

393 :デフォルトの名無しさん (ワッチョイ 5319-v8EU):2017/03/19(日) 16:28:23.54 ID:/fHKNSq50
なぜかというと昨日まで自分のパソコンのバグで
ideoneが使えなかったからです。
パソコンのバグを治したら使えるようになったので確認できました。

394 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 16:37:15.63 ID:TnjIuaQ20
>>391
無知なやつには恥をかかすより教えないことが一番堪えるからなあw

395 :デフォルトの名無しさん (ワッチョイ 8fc9-tpgq):2017/03/19(日) 16:41:46.80 ID:mGXfpPMY0
鼻から悪魔が出るのは不定だったか
牛乳で検索しても全然出てこなかったので助かった

396 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/19(日) 16:47:45.42 ID:IinMJCLx0
ID:TnjIuaQ20 が逃走モードに入りました w

397 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 16:50:36.58 ID:TnjIuaQ20
反論がこないのに一人でしゃべってろと? バカじゃねえのおまえ

398 :デフォルトの名無しさん (ワッチョイ bfcf-12+v):2017/03/19(日) 16:59:35.63 ID:eJrKZIBf0
反論しても根拠の無いレッテル貼りしか返ってこなかったのでもうやめた。

399 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/19(日) 17:02:14.20 ID:dbfovMwi0
ID:TnjIuaQ20逃げた?

400 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/19(日) 17:15:58.21 ID:dbfovMwi0
まだ、暴れてたか
ID:TnjIuaQ20は矯正不可能な基地外のようなのでNG

>>328
0番地に意味のあるオブジェクトを置く必要がある処理系ではNULLポインタの内部表現を0以外にして
0番地は普通にアクセスするのが正しい実装
NULLポインタの内部表現が0のままだと
ポインタの比較で破綻する

401 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 17:16:08.26 ID:TnjIuaQ20
何だよ

402 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 17:19:06.51 ID:TnjIuaQ20
>>400
空想論の域を出られるやつ呼んでこい
おまえじゃ話にならん

403 :デフォルトの名無しさん (ワッチョイ 5319-v8EU):2017/03/19(日) 17:30:27.69 ID:/fHKNSq50
結局NULLの初期値が0ってことだろうな。
NULLはマクロだから0のアドレスを使う場合
自分で設定可能にしてあるんだろうな。
NULLの初期値はぜったアドレスの表せる数値のどれかを決めなければいけなくて
設定しないという選択肢はNOだからな。

404 :デフォルトの名無しさん (ワッチョイ cf42-u6wT):2017/03/19(日) 17:37:39.33 ID:SiE28aj70
>>400
0番地に意味のあるデータを置けるというのは、
OSのサポートがあればと言うことなのかな?
C言語としては、置かない事を推奨するのだろうか?

405 :デフォルトの名無しさん (ワッチョイ bfcf-12+v):2017/03/19(日) 17:39:00.94 ID:eJrKZIBf0
>>403
NULLは自分で設定可能にするためのマクロじゃないよ。
http://www.kouno.jp/home/c_faq/c5.html#5

406 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 17:47:25.42 ID:TnjIuaQ20
また河野談話かw

# 俺は夕飯の支度をせにゃならん
# おまえら高齢童貞と違い妻子を背負ってるんでな

407 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/19(日) 18:04:07.73 ID:IinMJCLx0
>>400
別に破綻なんてしないでしょ
0 番地をアクセスすると言うことはそこに何らかの情報があることを知っての上でやってる話だからそもそも null チェックなんてする必要がない

408 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/19(日) 18:16:16.30 ID:dbfovMwi0
>>404
メモリ配置はOSの仕事
NULLポインタの内部表現はコンパイラが決める事

409 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/19(日) 18:17:16.39 ID:dbfovMwi0
>>407
頭悪いぞ 100年ROMってろ

410 :デフォルトの名無しさん (ワッチョイ cf42-u6wT):2017/03/19(日) 18:26:44.71 ID:SiE28aj70
0番地というのがC言語で特別な意味を持つと言うことで良いの?

411 :デフォルトの名無しさん (ワッチョイ 733c-tpgq):2017/03/19(日) 18:28:57.82 ID:8lmCIKta0
MSCのスモールモデルは NULLポインタは アドレス0 を指してなかった
アドレス0 を指す場合にはコンパイラの方言の補助によってなされてた

ボーランドCも同じく アドレス0 を指してなかった
(さらに そこはNULLポインターだぜ って文字並びが入ってて、ランタイムで書き換えチェックしてたような・・・

412 :デフォルトの名無しさん (ワッチョイ 5319-v8EU):2017/03/19(日) 18:49:39.06 ID:/fHKNSq50
C言語ではどんなアドレスもコンパイラー指定の場所以外はアクセスしてはいけない
事になってるだろ。
アドレス0にデータがあるという時点でもうコンパイラーがそこにアクセスしていいんだよ
ってクライアントにコミットしてるというコンプライアンスなんだよ。

413 :デフォルトの名無しさん (ワッチョイ 537b-hTwP):2017/03/19(日) 18:59:29.81 ID:4KDyw5U70
JIS X?3010:2003?(ISO/IEC?9899:1999)
6.3.2.3
値0をもつ整数定数式又はその定数式を型void *にキャストした式を,空ポインタ定数(null?pointer constant)(注)と呼ぶ。
空ポインタ定数をポインタ型に型変換した場合,その結果のポインタを空ポインタ(null?pointer)と呼び,いかなる
オブジェクト又は関数へのポインタと比較しても等しくないことを保証する。
(注)空ポインタ定数としてマクロ?NULL?が<stddef.h>(及び他のヘッダ)で定義されている。

414 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 19:03:52.69 ID:TnjIuaQ20
>>411
指していたよヴォケ
じゃあお前はNTの環境で仮想アドレスが0番地でも実アドレスが0番地以外に
マッピングされてるのを0番地を指していないとかほざくのか

415 :デフォルトの名無しさん (ワッチョイ bfa9-JN/B):2017/03/19(日) 19:08:30.87 ID:GmJCDs4Q0
打たれ弱いやつ…

416 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 19:14:09.32 ID:TnjIuaQ20
https://www.ibm.com/support/knowledgecenter/ja/SSLTBW_2.2.0/com.ibm.zos.v2r2.ieaa600/iea3a6_Load_real_address__LRA__instruction.htm

417 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/19(日) 19:14:50.90 ID:IinMJCLx0
>>409
そんなことしか書けないならレスするなよ w

418 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/19(日) 19:16:10.98 ID:dbfovMwi0
>>410
NULLポインタの内部表現として0番地を使う実装が多いと言うこと

レス番飛んでるな、基地外がまだ暴れてるのか

419 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/19(日) 19:39:08.68 ID:dbfovMwi0
>>417
0番地に置いたオブジェクトを標準関数に渡すとか、全然思いつかないわけ?

お前頭悪すぎてこの業界向いてない
ホームレスにでも転職しろ

420 :デフォルトの名無しさん (ワッチョイ d3a1-CANY):2017/03/19(日) 19:54:10.06 ID:g8OM3BRu0
0の発見
インド人もびっくり

421 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/19(日) 19:59:23.95 ID:IinMJCLx0
>>411
スモールモデルの話をするなら
オフセットの話なのかセグメント:オフセットの話なのかを明確にしてくれ
ちなみに実アドレスガーとか言ってるアホは無視でいいから w

422 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/19(日) 20:00:36.81 ID:IinMJCLx0
>>419
思い付かない
あると言うなら具体的に書いてみそ

423 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 20:09:28.87 ID:TnjIuaQ20
>>418
ああ「許されている」を突っ込まれて逃げたバカかw

424 :デフォルトの名無しさん (ワッチョイ 733c-tpgq):2017/03/19(日) 20:23:37.44 ID:8lmCIKta0
>>421
あえてアヤフヤにしてた箇所ー
スモールモデルの操作するポインタはオフセットだけなのに

>>411 文中のアドレス0 と表現してるのは セグメント:オフセットのペアで
そもそも取り扱いの空間が違うという話

425 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/19(日) 20:34:21.29 ID:dbfovMwi0
>>422
0番地に文字列を置く
ホームレスに転職しろ バカ

426 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 20:37:45.19 ID:TnjIuaQ20
nearなのかfarなのかはあやふやじゃ絶対に済まされねえだろうが
smallどころかtinyでさえ絶対の鉄則だぜ

427 :デフォルトの名無しさん (ワッチョイ 33cb-8FG5):2017/03/19(日) 20:38:34.90 ID:TnjIuaQ20
>>425
空想論を不特定多数に喚き散らしてる
おまえこそホームレスさながら

428 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/19(日) 20:49:54.17 ID:IinMJCLx0
>>424
さすがにそれは実アドレスガーって騒いでる奴と同類な気がするけど...

429 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/19(日) 20:54:58.93 ID:IinMJCLx0
>>425
で、どの標準関数に渡すんだ?
いちいちレスするのが面倒だからそれぐらいは書いてくれよ
自分で
> 標準関数に渡すとか
って書いてあるんだからさ
それともホームレスだとそれもできないのかい? w

430 :デフォルトの名無しさん (ワッチョイ 239a-y740):2017/03/19(日) 21:50:25.57 ID:SRd22OVa0
ぬるぬる

431 :デフォルトの名無しさん (ワッチョイ bf5b-2PX+):2017/03/19(日) 22:00:04.38 ID:uEahj1PR0
0番地は使えるだろう。OSで使えないようにしてるだけだ。

0番地にアクセスして暴走なんてのは昔はよくあった。
それこそプログラマー任せのC言語だ。

それがC言語では無いと言うならば、一体それは何だ。

432 :デフォルトの名無しさん (ワッチョイ cf42-u6wT):2017/03/19(日) 22:11:56.60 ID:SiE28aj70
>>431
>0番地は使えるだろう。OSで使えないようにしてるだけだ。

釣りですよね?

433 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/19(日) 22:18:36.29 ID:dbfovMwi0
>>429
なんでも良いが、例えばfopen

本当に頭悪いんだな
今すぐホームレスに転職しろ

434 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/19(日) 22:20:37.55 ID:dbfovMwi0
>>432
0番地にメモリが割り当てられてれば使える

435 :デフォルトの名無しさん (ワッチョイ cf7b-vzQh):2017/03/19(日) 22:27:10.76 ID:MM3vmS8Q0
ポインター = 存在しない;
仮想関数 = 存在しない;

存在しないを表す、キーワードを増やしたくないから、0 を使ったのだろう。
これがややこしさの原因

ポインター = 0;
仮想関数 = 0;

数値リテラルの、0 じゃない!
絶対にあり得ない表現だから、これを使っても問題ないだろうという、単なる暗号

まあ、古い言語だから、あちこちおかしくて、一般人には理解できない

436 :デフォルトの名無しさん (ワッチョイ a351-tpgq):2017/03/19(日) 22:49:48.29 ID:j2JD5hFe0
C++の仮想関数の=0とはちょっと違う。
ポインタは整数型と相互にキャストでき、NULLポインタと整数の0が対応すると定められている。
だからそれは数値リテラルの0で正しい。そもそもポインタのリテラルってないしな。

437 :デフォルトの名無しさん (ワッチョイ bf85-doFW):2017/03/19(日) 23:21:38.87 ID:xzxt/RKX0
じゃあNULLポインタのアドレスを知りたかったらprintfを使うか
アセンブラコードを見るしかないってこと?

438 :デフォルトの名無しさん (ワッチョイ f36f-MCO2):2017/03/20(月) 00:56:15.53 ID:UNA38bnS0
>>437
NULLポインタのアドレスってなんだ。NULLポインタはどこも指してない

439 :デフォルトの名無しさん (ワッチョイ bfa9-JN/B):2017/03/20(月) 03:36:45.06 ID:j9IxIyz40
バイナリ表現を見たかったらunion使うとか
ポインタのアドレスを(char *)にキャストして
ごちゃごちゃやるとかすればいいんじゃね。
もっとも規格に則ったやり方かどうかは知らんがね。

440 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/20(月) 06:36:17.55 ID:LcNjV7jZ0
>>433
null が 0 番地の環境ってことは 0 番地の領域は配列や malloc で取得した領域じゃないってことだよな
そんな領域に文字列置いて fopen に渡す?
ホームレスの発想って面白いな w

441 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/20(月) 06:37:49.85 ID:LcNjV7jZ0
>>437
コンパイラーの仕様書とかソースコードを見るとかでもいいかもな

>>438
アスペかよ w

442 :デフォルトの名無しさん (ワッチョイ 537b-hTwP):2017/03/20(月) 07:18:42.66 ID:u3I2WX630
JIS X 3010:2003 (ISO/IEC 9899:1999)
6.3.2.3
値0をもつ整数定数式又はその定数式を型void *にキャストした式を,空ポインタ定数(null pointer constant)(注)と呼ぶ。
空ポインタ定数をポインタ型に型変換した場合,その結果のポインタを空ポインタ(null pointer)と呼び,
いかなるオブジェクト又は関数へのポインタと比較しても等しくないことを保証する。
(注)空ポインタ定数としてマクロ NULL が<stddef.h>(及び他のヘッダ)で定義されている。

443 :デフォルトの名無しさん (ワッチョイ 73d4-9jmm):2017/03/20(月) 07:27:21.79 ID:29VmeOvG0
つまり、どこかのアドレスは指している、ってことだな。
どこも指してない、というのはインジケータとしての意味に過ぎず、解釈としては間違いか

444 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 08:37:58.12 ID:03OBGWSB0
>>440
>null が 0 番地の環境ってことは
そんな事一言も言っていない
お前バカ過ぎる本当にこの業界向いてない、ホームレスに転職しろ今すぐだ

445 :デフォルトの名無しさん (ワッチョイ 839b-8FG5):2017/03/20(月) 08:52:54.28 ID:I/L1t1T+0
ホームレスをニートが見下してもねえ

446 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/20(月) 09:04:12.11 ID:LcNjV7jZ0
>>443
現実的にどこも指さないポインタって作れないからな
保証されてるのは規格の範疇で作成したオブジェクトのアドレスと重ならないアドレスと言うことだけ
規格上は単一の値である必要もなかったと思う

447 :デフォルトの名無しさん (ワッチョイ 839b-8FG5):2017/03/20(月) 09:07:56.29 ID:I/L1t1T+0
いや単一の値である必要はあるでしょ
空ポインタ同士を比較したら等しくなければならないんだから

448 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/20(月) 09:10:36.34 ID:LcNjV7jZ0
>>445
まあそう言ってやるなよ
自分で何を書いてかも怪しいみたいだし w

449 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/20(月) 09:11:28.86 ID:LcNjV7jZ0
>>447
> 空ポインタ同士を比較したら等しくなければならないんだから
それ規格にあったっけ?

450 :デフォルトの名無しさん (ワッチョイ 537b-c/YS):2017/03/20(月) 09:23:06.95 ID:u3I2WX630
mallocがメモリ確保に失敗した場合の戻り値は何になる?
失敗しているのにどこかのアドレスを指しているのか?
NULLはあくまで空ポインタ定数であってアドレスではない

451 :デフォルトの名無しさん (ワッチョイ 73d4-9jmm):2017/03/20(月) 09:24:39.36 ID:29VmeOvG0
難しい議論になってまいりました

452 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 09:31:53.69 ID:03OBGWSB0
ID:I/L1t1T+0とID:LcNjV7jZ0
バカは群れたがるんだな

>>447
>いや単一の値である必要はあるでしょ
>空ポインタ同士を比較したら等しくなければならないんだから
バカ過ぎる

453 :デフォルトの名無しさん (ワッチョイ a351-tpgq):2017/03/20(月) 09:34:19.17 ID:MXp+WHcu0
>>449
6.3.2.2 void
4 Conversion of a null pointer to another pointer type yields a null pointer of that type.
Any two null pointers shall compare equal.

SQLのような3値論理のNULLとは違う。

454 :デフォルトの名無しさん (ワッチョイ a351-tpgq):2017/03/20(月) 09:43:07.50 ID:MXp+WHcu0
セクション間違えた。
6.3.2.3 Pointers

455 :デフォルトの名無しさん (ドコグロ MM1f-3fK7):2017/03/20(月) 09:56:11.13 ID:6RAbChbAM
>>453
ああ、あるのか
教えてくれてありがとう

456 :デフォルトの名無しさん (ワッチョイ 5319-v8EU):2017/03/20(月) 10:03:40.62 ID:hOjZeIpo0
規格は絶対というものではないから余り過信しすぎるのもよくないよ。
法律を全部守ってたら生きていけないのと同じで、規格も全部守ってたら
プログラム出来ない。

457 :デフォルトの名無しさん (ワッチョイ 537b-gO1F):2017/03/20(月) 10:08:01.76 ID:+YHRRlIg0
>>456
ウソつくなよ

458 :デフォルトの名無しさん (ワンミングク MM5f-qjY6):2017/03/20(月) 10:24:31.38 ID:8700tGFOM
sockaddr ってCの規格全て守っている?

459 :デフォルトの名無しさん (ワッチョイ 03fd-12+v):2017/03/20(月) 11:11:55.38 ID:np9p/Hhl0
NULLチェックって

int *p;
...
if(p==NULL) {...};

とやらないとダメ?

if(!p){...};
はバグ?

460 :デフォルトの名無しさん (ワッチョイ 839b-8FG5):2017/03/20(月) 11:16:41.34 ID:I/L1t1T+0
>>452
ねえ、今どんな気持ち?

461 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 11:31:05.55 ID:03OBGWSB0
もしかして理解してないのかと思ってたら、案の定理解してないのか

> 空ポインタ同士を比較したら等しくなければならない
から
> いや単一の値である必要はあるでしょ
これを導いちゃう頭の悪さは救いようがない
お前もホームレスに転職しろ

ねえ、勝ち誇って
>>460
>>>452
>ねえ、今どんな気持ち?
とか言ってたけど、今、どんな気持ち?

462 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 11:41:59.43 ID:03OBGWSB0
バカの理解力のなさは想像を絶するから↑でも理解できないかもな
バカに理解し易いように極端な環境を設定しよう

32ビットでNULLポインタの内部表現を「最上位ビットが1である」とする
この定義では通りのNULLポインタが存在して
ポインタの比較は
(a & b & 0x80000000) || (a == b)

単一の値である必要は無いね

463 :デフォルトの名無しさん (ワッチョイ ef13-nbRU):2017/03/20(月) 11:54:17.03 ID:osGsQQ0u0
>>390
おいおい,その struct hack て,ついちょっと前にお題になった
flexible array member だし,C99 で合法になったんじゃない?

464 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 11:55:14.34 ID:03OBGWSB0
ちなみに
> (a & b & 0x80000000) || (a == b)
はアドレス演算をC言語風にかいただけだからね
バカにつまらないあげ足取られないように、念のため

>>460
ねえ、今どんな気持ち?

465 :デフォルトの名無しさん (ワッチョイ ef13-nbRU):2017/03/20(月) 11:55:15.89 ID:osGsQQ0u0
>>459
NULL なんか使うな

466 :デフォルトの名無しさん (ワッチョイ 537b-hTwP):2017/03/20(月) 11:58:13.93 ID:u3I2WX630
>>459
式の中で空ポインタ定数の評価結果は偽(値0ではあるがアドレス0番地を意味するものではないことに注意)
となるからその使い方で問題ない

467 :デフォルトの名無しさん (ドコグロ MM17-CEB8):2017/03/20(月) 12:18:10.91 ID:MfyRzqQ9M
>>464
0x80000000 以降を使えない変な環境作るなよ。

468 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 12:21:13.83 ID:03OBGWSB0
>>467
バカに理解し易い極端な環境っただろ
バカの理解力のなさは想像を絶するからな

>>460
ねえ、今どんな気持ち?

469 :デフォルトの名無しさん (ドコグロ MM17-CEB8):2017/03/20(月) 12:40:06.63 ID:MfyRzqQ9M
>>468
だから、それだとヌルポ=0と同じだろ。

470 :デフォルトの名無しさん (ワッチョイ a351-tpgq):2017/03/20(月) 13:03:35.92 ID:MXp+WHcu0
元々が

>>446
>規格上は単一の値である必要もなかったと思う

てことだから内部表現の話をしているわけじゃないだろう。
仮にNULLに異なる複数の内部表現が存在していたとしても、規格上はプログラム側から
その違いを検知することはできない。

471 :デフォルトの名無しさん (ワッチョイ 5319-v8EU):2017/03/20(月) 13:20:03.85 ID:hOjZeIpo0
ある特殊なパソコンはメインメモリーとは別にNULL専用の
補助メモリーを搭載していてそのメモリー空間にアクセスするには
NULLという特殊なメモリーアドレスを使用する可能性も否定できない。

472 :デフォルトの名無しさん (ワッチョイ f36f-MCO2):2017/03/20(月) 13:43:07.64 ID:UNA38bnS0
>>471
CもCPUもよく分かってなさそうだけど、とりあえず上の変なのを真に受けちゃいけない。
補助メモリとか持ち出さなくても0番地はアクセスできる。
但しNULLがヌルポインタのことなら、NULL経由ではアクセスできない

473 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/20(月) 13:45:18.75 ID:LcNjV7jZ0
>>462
それ equal じゃないだろ...

474 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 13:57:08.57 ID:03OBGWSB0
>>473
ホームレスは引っ込んでろ

475 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/20(月) 14:07:41.46 ID:LcNjV7jZ0
>>474
ねえ、今どんな気持ち? w

476 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 14:17:01.77 ID:03OBGWSB0
>>475
>>449のように基本的な事知らないバカが絡んで来て鬱陶しいから、早くホームレスに転職してこの板から去って欲しいと言う気持ち

0番地にオブジェクト置く一例も理解できないんだろ
バカ過ぎて話にならないからとっとと転職しろよホームレスに

477 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/20(月) 14:38:04.87 ID:LcNjV7jZ0
バカとしか返せなくて悔しいね w

478 :デフォルトの名無しさん (ワッチョイ 2352-tW1y):2017/03/20(月) 14:38:50.57 ID:JgeJM1UH0
エラい勢いなのに内容がほとんど無い…
暴言系キーワードが多いのか…
また触っちゃいけない人が暴れているのか…

479 :デフォルトの名無しさん (ワッチョイ 537b-gO1F):2017/03/20(月) 14:42:14.62 ID:+YHRRlIg0
>>470
内部表現みたいなら
void* nullptr=0;
char raw[sizeof(nullptr)];
memcpy(raw,&nullptr,sizeof(nullptr));
とか、比較はmemcmpで出来るでしょ

480 :デフォルトの名無しさん (アウアウカー Sa57-RXeS):2017/03/20(月) 15:05:43.66 ID:gHpTyHSqa
>>479
それは言語規格上の空ポインタの内部表現
処理系依存のNULLと一致するとは限らない

481 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 15:12:43.22 ID:03OBGWSB0
>>477
バカに理解できる典型例を示されて↓こう言う反論しかできないホームレスに言ってやれ
ホームレス転職仲間のID:I/L1t1T+0は逃亡したようだけど、お前ホームレスにすら転職できずにしがみついてんのか? w

440 デフォルトの名無しさん (ワッチョイ bf3c-3fK7)[sage] 2017/03/20(月) 06:36:17.55 ID:LcNjV7jZ0

>>433
null が 0 番地の環境ってことは 0 番地の領域は配列や malloc で取得した領域じゃないってことだよな
そんな領域に文字列置いて fopen に渡す?
ホームレスの発想って面白いな w

482 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 15:20:55.40 ID:03OBGWSB0
>>479,480
この文脈で迂闊に「NULL」と使っちゃう軽率なレスは放置推奨

> The macros are
> NULL
> which expands to an implementation-defined null pointer constant
なので

> 仮にNULLに異なる複数の内部表現が存在していたとしても、
は意味不明

483 :デフォルトの名無しさん (ワッチョイ 5319-v8EU):2017/03/20(月) 15:30:30.19 ID:hOjZeIpo0
NULLはマクロじゃなくてもいいんだよな。
NULLリテラルというものが存在して
NULLは存在しないとしないわけは
NULLをアドレスとして使いたいからだろ。
すなわちNULLがアドレスであることに意味がある。

484 :デフォルトの名無しさん (ドコグロ MM1f-3fK7):2017/03/20(月) 15:53:42.44 ID:WHkWYxkrM
>>481
equal に触れられたくなくて必死だな

485 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 16:11:16.20 ID:03OBGWSB0
>>484
バーカ 構って欲しけりゃ

>>440の方が先だから、そっちの弁明先にしろ

486 :デフォルトの名無しさん (ワッチョイ f35b-tpgq):2017/03/20(月) 16:26:02.90 ID:5J3+8zMD0
つかお前ら、そのエネルギーは>>287にぶつけて有効的に使うべきだろ。
編集日時から、対象は「ポインタ」「配列とポインタ」だし。

ざっくり見たところ確かにいろいろ突っ込みどころが多すぎるが、一つずつやるしかない。
そこでヌルポの記述を抜き出してみる。

> NULLポインタ[編集]
> NULLポインタ(ナルポインタ、ヌルポインタ、空ポインタ)とは、
> 何も指しておらず、有効などんなポインタと比較しても等しくならないことが保証されているポインタのことである。
> そのため、返却値にポインタをとる関数の異常時の返却値として用いたり、
> 連結リストで末尾のデータで次の要素がないことを示すために使われたりする。
> なお、NULLポインタを経由して参照した場合、OSが異常を検知して即座にプログラムを停止させてくれることもあるが、
> そうでない環境も存在するので注意が必要である。 [2]
> NULLポインタの使用例として、 fopen関数はオープン操作に失敗した場合、空ポインタを返す。
> 詳細はC言語/標準ライブラリ/入出力#fopen関数を参照せよ。

うむ、全部書き直せと言いたくなるのは分かる。
そこで、俺が全部書き直してみよう。

NULLポインタ(ヌルポインタ)とは、
何も指していないことを意味する値が入ったポインタである。
有効なポインタとの比較は、等しくないことが保証されている。
ヌルポインタ同士の比較は、等しいことが推奨されている。(>>453)
ヌルポインタ自身の真偽は、偽であることが保証されている。(>>466)
これらの仕様等に簡便に整合するため、多くの処理系では0が割り当てられている。
ポインタを返す関数呼び出しが失敗した場合、ヌルポインタを返すことが多い。(fopenやmalloc)
これは、成功/失敗の判定が容易であり、また、バグ等でその領域を参照した場合にも、
メモリ保護が行われている一般のOS(Windows等)上ならエラーが検出されるからである。

安価の場所には、仕様書の該当項目へのリンクよろしくってことで。

487 :デフォルトの名無しさん (ワッチョイ 73d4-9jmm):2017/03/20(月) 16:32:17.26 ID:29VmeOvG0
レスが付かない、というのも1つのレスだってお婆ちゃんが言ってた

488 : ◆QZaw55cn4c (ワッチョイ ef13-nbRU):2017/03/20(月) 16:33:56.26 ID:osGsQQ0u0
>>486
>ヌルポインタ同士の比較は、等しいことが推奨されている。>>453
その shall は,ほとんど話者の意志,すなわち規格による強制を示している,やわらかくする必要はない
ヌルポインタ同士の比較は等しい,として十分

489 :デフォルトの名無しさん (ワッチョイ 839b-8FG5):2017/03/20(月) 16:42:10.56 ID:I/L1t1T+0
shallが推奨だってさ、こいつ文系だろ
適当がいい加減だと思ってるやつと同じだ

おーいバカ、おまえ「歪み」って何と読む?

490 :デフォルトの名無しさん (ワッチョイ f35b-tpgq):2017/03/20(月) 17:02:53.83 ID:5J3+8zMD0
>>487
やたら「前橋和弥著」が多くて臭いってやつか?
だったらここ書き換えてしまえば脚注から剥がせるんだから踏み絵になるだろ。

>>488
まあ確かに規格準拠してないケースは無視していいな。では以下か。
(変更無しの場所は> を付けてる)

> NULLポインタ(ヌルポインタ)とは、
> 何も指していないことを意味する値が入ったポインタである。
有効なポインタとの比較は、常に等しくない。
ヌルポインタ同士の比較は、常に等しい。(>>453)
ヌルポインタ自身の真偽は、常に偽である。(>>466)
> これらの仕様等に簡便に整合するため、多くの処理系では0が割り当てられている。
> ポインタを返す関数呼び出しが失敗した場合、ヌルポインタを返すことが多い。(fopenやmalloc)
> これは、成功/失敗の判定が容易であり、また、バグ等でその領域を参照した場合にも、
> メモリ保護が行われている一般のOS(Windows等)上ならエラーが検出されるからである。

>>489
いちいち噛み付くなよめんどくせー奴だな。

491 :デフォルトの名無しさん (ワッチョイ 839b-8FG5):2017/03/20(月) 17:12:43.72 ID:I/L1t1T+0
まあ「歪み」はともかく>>476はブルブルって読むよな

492 :デフォルトの名無しさん (ワッチョイ f35b-tpgq):2017/03/20(月) 17:16:08.32 ID:5J3+8zMD0
つかそれ何?初めて聞くんだけど?
ひずみ←理系
ゆがみ←文系
とかなの?

493 :デフォルトの名無しさん (ワッチョイ f35b-tpgq):2017/03/20(月) 17:19:41.56 ID:5J3+8zMD0
すまん、ぐぐったら出てきた。てか纏められまくってるな。
しかし、関係ねーなこれ。

494 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 17:56:48.31 ID:03OBGWSB0
>>491
ねえ、今どんな気持ち?

495 :デフォルトの名無しさん (ワッチョイ 839b-8FG5):2017/03/20(月) 18:04:23.35 ID:I/L1t1T+0
女呼んで抱いて揉んでいい気持ち♪

496 :デフォルトの名無しさん (ワッチョイ bfa9-JN/B):2017/03/20(月) 18:06:03.09 ID:j9IxIyz40
沖田浩之かよ

497 :デフォルトの名無しさん (ワッチョイ 839b-8FG5):2017/03/20(月) 18:12:02.55 ID:I/L1t1T+0
あったねーE気持ちだっけ

498 :デフォルトの名無しさん (ドコグロ MM1f-3fK7):2017/03/20(月) 18:13:13.31 ID:WHkWYxkrM
>>485
図星突かれてアイタタタってか ww

499 :デフォルトの名無しさん (ワッチョイ cf9d-aEwW):2017/03/20(月) 18:25:09.53 ID:N/1+9uyT0
サザンだろがw

500 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 20:19:21.07 ID:03OBGWSB0
>>498
> 有効なポインタとの比較は、常に等しくない。
ねえ、今どんな気持ち?

501 :デフォルトの名無しさん (ワッチョイ 839b-8FG5):2017/03/20(月) 20:30:48.39 ID:I/L1t1T+0
わかる人にはわかるねえ♪

502 :デフォルトの名無しさん (ワッチョイ bf3c-3fK7):2017/03/20(月) 20:39:01.24 ID:LcNjV7jZ0
>>500
>>484

503 :片山博文MZ ◆T6xkBnTXz7B0 (スププ Sddf-W8JT):2017/03/20(月) 20:48:24.35 ID:/NLNF+jbd
あなたの頭に役に立たない知識をインストール中。。。

504 :デフォルトの名無しさん (ワッチョイ bf3c-5NuA):2017/03/20(月) 20:50:53.21 ID:QillsqV80
だれか三行で結論

505 :デフォルトの名無しさん (アウアウカー Sa57-UZwX):2017/03/20(月) 20:55:06.45 ID:cWwQvKi8a


らねえ

506 :デフォルトの名無しさん (ドコグロ MM17-CEB8):2017/03/20(月) 21:04:45.13 ID:MfyRzqQ9M
ぬるぽ

507 :デフォルトの名無しさん (ワッチョイ bf5b-2PX+):2017/03/20(月) 21:37:47.15 ID:yZQWbF0t0
C言語で0番地にアクセスできるのが理解できるかできないかってだけだろう。

508 :デフォルトの名無しさん (ワッチョイ 839b-8FG5):2017/03/20(月) 21:54:25.12 ID:I/L1t1T+0
>>507
できることとやっていいことの違いだよ
大人の分別ともいう
製造物責任が法律的なことってくらいはおまえも解るだろうけど
じゃあ規格って何だってあたりからハチャメチャになってやがる

509 :デフォルトの名無しさん (ワッチョイ bfcf-12+v):2017/03/20(月) 21:58:38.49 ID:6okaUTo50
我慢大会開始

510 :デフォルトの名無しさん (ワッチョイ 839b-8FG5):2017/03/20(月) 22:14:26.84 ID:I/L1t1T+0
高齢童貞の我慢大会って何を我慢するんだかw

511 :デフォルトの名無しさん (ワッチョイ 537b-gO1F):2017/03/20(月) 22:16:16.44 ID:+YHRRlIg0
C言語でnullポインタをdereferenceするのは違法。コンパイラによってその後のコード含めて抹消される可能性すらある。

0番地のメモリを参照しにいくコード自体は環境によっては合法nullポインタが0以外の内部表現の場合は0番地にデータを割り当てる事も出来るだろう。ただし、整数0をポインタに入れるとnullポインタになってしまうので注意

これだけの話なのになんでグダグダ続いてんの?

512 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 22:49:00.68 ID:03OBGWSB0
>>502
> 有効なポインタとの比較は、常に等しくない。
ねえ、今どんな気持ち?

513 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 22:50:15.45 ID:03OBGWSB0
>>510
ねえ、今どんな気持ち?

514 :デフォルトの名無しさん (ワッチョイ a351-tpgq):2017/03/20(月) 22:59:33.93 ID:MXp+WHcu0
不条理系ホラー漫画を連想するw

515 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 23:19:17.62 ID:03OBGWSB0
>>511
>C言語でnullポインタをdereferenceするのは違法。コンパイラによってその後のコード含めて抹消される可能性すらある。
いや、コード削除しちゃダメだろ、正しく「未定義動作」すべき

516 :デフォルトの名無しさん (ワッチョイ 537b-gO1F):2017/03/20(月) 23:24:48.71 ID:+YHRRlIg0
>>515
未定義動作だから何もしない含めて何がおきてもいい。

”未定義動作 はタイムトラベルを引き起こす”でググれ

517 :デフォルトの名無しさん (ドコグロ MM1f-3fK7):2017/03/20(月) 23:26:32.54 ID:oLSEmtobM
>>512
>>484
バカの必死ループ

518 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/20(月) 23:39:34.50 ID:03OBGWSB0
>>517
> 有効なポインタとの比較は、常に等しくない。
ねえ、今どんな気持ち?

519 :デフォルトの名無しさん (ワッチョイ cf42-u6wT):2017/03/20(月) 23:51:40.94 ID:1OeZAfgS0
私に会いに来た私を見ている二人の私

520 :デフォルトの名無しさん (ワッチョイ cf42-tpgq):2017/03/20(月) 23:58:21.83 ID:GWfrNwZR0
また宗教戦争してんのか

521 :デフォルトの名無しさん (ドコグロ MM1f-3fK7):2017/03/21(火) 00:08:27.12 ID:hvONl54jM
そんなに必死にならなくても w

522 :デフォルトの名無しさん (ワッチョイ 337b-7mwY):2017/03/21(火) 00:37:43.24 ID:/+jzi6Fk0
>>516
読んだが「全てのCプログラマが未定義な振る舞いについて知っておくべきこと」の方が良いね

523 :toya (ワッチョイ a37b-u6wT):2017/03/21(火) 01:54:57.76 ID:Vm2G+Ucw0
タイムトラベルの話になってるとは……
ごめん、私にはついていけそうにないです。

524 :デフォルトの名無しさん (ワッチョイ 33e6-8FG5):2017/03/21(火) 02:53:37.31 ID:+DL1LwCN0
s/未定義な振る舞い/未定義の動作/
undefined behaviorというISO/IEC9899用語をJISではこう訳している

525 :デフォルトの名無しさん (ワッチョイ 534f-v8EU):2017/03/21(火) 08:10:28.70 ID:bH1u/9cj0
未定義というのは規格で未定義ってことで、自由に未定義な部分を定義していいよ
新しく定義した部分で既存の定義を改変するようなことをしてもいいよってことだよな。
タイムマシーンはそれを悪意のあるように話を故意に捻じ曲げて
未定義=悪い動作をすることと思想を植え付けたいみたいだな

526 :デフォルトの名無しさん (ワッチョイ 5375-gO1F):2017/03/21(火) 08:27:43.61 ID:3WUWYr7R0
>>525
何言ってんのか解んねえけど、プログラマーは未定義動作をするコードを書いてはならない。それ以上でもいかでもない。

527 :デフォルトの名無しさん (ワッチョイ 534f-v8EU):2017/03/21(火) 08:40:29.97 ID:bH1u/9cj0
コンパイラーによって定義がかわる部分が未定義動作だろ。
コンパイラーの実装によっては未定義動作がクラッシュするとか
間違った動作をするかもしれないと
定義されてるだけで、未定義なわけではない。

528 :デフォルトの名無しさん (ワッチョイ 5375-gO1F):2017/03/21(火) 08:43:03.73 ID:3WUWYr7R0
>>527
またまた何言ってんのか解んねえけど、コンパイラによって定義が変わる部分は処理系定義。
未定義動作は文字通り未定義

529 :デフォルトの名無しさん (ワッチョイ 534f-v8EU):2017/03/21(火) 08:45:51.54 ID:bH1u/9cj0
未定義動作は規格で動作を定義しないということだから
コンパイラーが独自に定義していいってことだろ。
良い方向に定義するなら大歓迎。使わないなんてもったいない。

530 :デフォルトの名無しさん (ワッチョイ 5375-gO1F):2017/03/21(火) 09:12:14.39 ID:3WUWYr7R0
使わないなんてもったいないって何を?

531 :デフォルトの名無しさん (ワッチョイ 534f-v8EU):2017/03/21(火) 09:21:56.24 ID:bH1u/9cj0
良い方向に定義された規格では未定義な動作

532 :デフォルトの名無しさん (ワッチョイ 33e6-8FG5):2017/03/21(火) 10:43:52.29 ID:+DL1LwCN0
>>527
それは未規定だタコ助

未規定のうち文書化義務のみ課されているのが処理系定義で
未定義は禁止以外の何者でもない

CPUの未定義命令には隠し命令があったりするが
このスレではISO/IEC9899、つまりCについてのみの話だ
混同してんじゃねえよつるっパゲ

533 :デフォルトの名無しさん (ワッチョイ bfc8-2PX+):2017/03/21(火) 10:45:25.94 ID:awqkwsPY0
移植性無視だな

534 :デフォルトの名無しさん (ワッチョイ 534f-v8EU):2017/03/21(火) 11:27:10.77 ID:bH1u/9cj0
未定義はめんどくさいから禁止にしておこうということなかれ主義の慣例だからね。
仕来りや伝統を重んじる日本人にはこの手の人間が多い。
大事なのは自分で考えて使うか使わないか決める事。
理由も無く禁止と言われて従うのは個人の自由。

535 :デフォルトの名無しさん (ワッチョイ 33e6-8FG5):2017/03/21(火) 11:36:55.55 ID:+DL1LwCN0
文系ですらねえなこいつ
決めごとは、それが何であり何でないのか境界を示すんだよ
未定義は後者、つまりCではないという排除だ

536 :デフォルトの名無しさん (ワッチョイ 534f-v8EU):2017/03/21(火) 11:42:42.81 ID:bH1u/9cj0
動作が未定義なわけで定義してない動作が起こるということじゃないよ
例えば一つの実装として、NULLポインターをデリファレンスすると
全てのキーワードやステートメントがJavaと置き換わるとしてもいいんだよ。
なぜなら未定義動作で今まで定義したものを変えてもいいと定義されているのだからね。
CがJavaに自由に拡張できる、これがCの寛容さなんだね。

537 :デフォルトの名無しさん (ワッチョイ 33e6-8FG5):2017/03/21(火) 11:59:45.78 ID:+DL1LwCN0
おまえの言い回しを真似て言うなら
CがC++に自由に拡張されたが、それは断じてCではない
かつて禿はC84と名乗ろうとしたがそんな勝手は通らなかった

538 :デフォルトの名無しさん (ワッチョイ 534f-v8EU):2017/03/21(火) 12:04:48.72 ID:bH1u/9cj0
C++は初期状態がC++だからCじゃないだけだろ。
ちゃんと未定義動作をしてからCがC++にならないとCじゃない。

539 :デフォルトの名無しさん (ドコグロ MM17-yrln):2017/03/21(火) 12:53:40.06 ID:UCmYUrR8M
>>535
Cの仕様で未定義と決められてるんだからCでしょ
もしかして>>330なの?

540 :デフォルトの名無しさん (ワッチョイ 33e6-8FG5):2017/03/21(火) 13:58:56.85 ID:+DL1LwCN0
>>538
おまえの言い回しを真似て言うなら
Javaも初期状態がJavaだからCじゃないだけだぜ

さっきおまえはこうも言っていたんだが
> CがJavaに自由に拡張できる、これがCの寛容さなんだね。
どっちなんだ?

541 :デフォルトの名無しさん (ワッチョイ 3392-7mwY):2017/03/21(火) 14:07:31.83 ID:/+jzi6Fk0
未定義動作の濫用が許されるのは最適化まで

*ぬるぽ, "?- write('hello world!')";
こんなのがCだとは認めない

542 :デフォルトの名無しさん (ワッチョイ 5375-gO1F):2017/03/21(火) 14:57:56.17 ID:3WUWYr7R0
>>531
それって例えば現実にどんなものがあると?

543 :デフォルトの名無しさん (ワッチョイ a37b-tpgq):2017/03/21(火) 20:46:55.55 ID:fjLA+enk0
仕様上の未定義動作に処理系が定義を与えちゃだめだと言うなら、clangの
UndefinedBehaviorSanitizerなんかもNGだな。

544 :デフォルトの名無しさん (ワッチョイ 5375-gO1F):2017/03/21(火) 21:04:09.67 ID:3WUWYr7R0
誰もそんな事言ってないと思うけど?

545 :デフォルトの名無しさん (ワッチョイ 5399-3xgA):2017/03/21(火) 21:54:42.42 ID:GykJf1ZS0
自然言語能力の重要性を教えてくれるスレ

546 :デフォルトの名無しさん (ワッチョイ bf25-12+v):2017/03/22(水) 02:36:18.39 ID:RsCcPqM10
>>542
*(uint32_t*)0x???????? = 0x???????? が任意アドレスへのストア命令にコンパイルされる、
とかいうのは伝統的に利用されてきた未定義動作と言えるかな。

547 :デフォルトの名無しさん (ワッチョイ cfa0-8FG5):2017/03/22(水) 05:43:13.61 ID:aJsdldWQ0
空ポインタじゃねえじゃん

548 :デフォルトの名無しさん (ワッチョイ 5375-gO1F):2017/03/22(水) 06:44:01.56 ID:sj71GTBZ0
>>546
そのアドレスが有効なら未定義動作じゃないんだけど

549 :デフォルトの名無しさん (ワッチョイ 5375-gO1F):2017/03/22(水) 09:21:55.79 ID:sj71GTBZ0
いや、訂正int32_tで書きこむのであればアドレスが有効でも場合によっては未定義動作になりうるね。

550 :デフォルトの名無しさん (ドコグロ MM17-CEB8):2017/03/22(水) 09:28:43.52 ID:UeMV6rw8M
>>546
volatile 付けてね。

551 :デフォルトの名無しさん (フリッテル MM7f-HSBd):2017/03/22(水) 18:18:23.27 ID:lkiNKfPzM
*(uintptr_t*)0x???????? = 0x????????
C99以降はuintptr_t

552 :デフォルトの名無しさん (フリッテル MM7f-HSBd):2017/03/22(水) 18:20:31.40 ID:lkiNKfPzM
失礼volatile付け忘れた
*(volatile uintptr_t*)0x???????? = 0x????????

553 :デフォルトの名無しさん (ワッチョイ cfa0-8FG5):2017/03/22(水) 18:53:09.70 ID:aJsdldWQ0
意味不明
ポインタのビット数以上の整数を
ポートのワード幅に使って何がしたい

554 :デフォルトの名無しさん (フリッテル MM7f-HSBd):2017/03/22(水) 19:15:08.79 ID:iVKayQlAM
551-552です
すまん間違えた
ポインタをその幅の整数型にキャストする時に使うのがuintptr_tだった
勘違いした

555 :デフォルトの名無しさん (ワッチョイ 733c-tpgq):2017/03/22(水) 19:49:14.31 ID:Jve7RGmN0
*(volatile int*)((uintptr_t)0x??????) = 0x????

556 :デフォルトの名無しさん (ワッチョイ be6b-72yv):2017/03/23(木) 08:20:53.77 ID:xx3Et9SY0
意味不明
キャストする前の式がuintptr_tよりも
ビット数が多かったら失われる情報はどうするのか
ビット数が少なかったらMSBがどのように拡張されるのを意図しているのか
いずれにせよ文面に出ている値と違うアドレスにアクセスする不明瞭なコードにしかならない

そもそも、546がuint32_tを使ったのはポート幅という意味だったのに
ドヤ顔でuintptr_tと言い出した551からが間違いの始まりだ
普段、組み込みを全くやらないヤツであることが見え見え

557 :デフォルトの名無しさん (ワッチョイ be03-72yv):2017/03/24(金) 12:55:04.86 ID:Kvw1duXH0
ポインタ型のリテラルや、ポインタのビット演算は欲しい
C++14に追加された0bと桁区切りはありがたい

558 :デフォルトの名無しさん (ワッチョイ 7bd4-sIi0):2017/03/24(金) 17:36:29.47 ID:175B8D420
型変換かUNIONするかして、必要な演算は整数型変数側で実施するとか。
大筋それで済むような気がするけど。
ポインタ直でインデックス以外の計算できた方がいい場面て、そんなにある?

559 :デフォルトの名無しさん (ワッチョイ be03-72yv):2017/03/24(金) 18:09:44.29 ID:Kvw1duXH0
自前基板用にmemtestみたいの作るとき
デコーダの構造でホワイトボックステストするのに
ビットORとか欲しくなるんだ
あと相対アドレスを扱うときポインタ同士の加算が欲しくなる
そこもとの言うとおり今んとこ整数にキャストでやってるけど
ときどき悲しくなってくることがある

560 :デフォルトの名無しさん (ワッチョイ 7bd4-sIi0):2017/03/24(金) 18:38:39.76 ID:175B8D420
ほほう

561 :デフォルトの名無しさん (ワッチョイ b77b-VHv+):2017/03/24(金) 21:35:12.56 ID:Z1YGpz2h0
それはポインタじゃなくてアドレスを操作したいってことなんじゃないか?
だとしたらどうやっても環境依存にならざるを得ないし、そうであればその環境で
ポインタとアドレスを表す整数値の相互変換が用意されればいいだけのような。

562 :デフォルトの名無しさん (ワッチョイ be03-72yv):2017/03/24(金) 22:13:25.18 ID:Kvw1duXH0
556のような心配をせずに済むなら
どんなやり方でもhowにはこだわらない

563 :デフォルトの名無しさん (ワッチョイ 1bc8-aw5l):2017/03/25(土) 01:30:58.03 ID:tFfHtaL60
初心者です、5分毎に2chに勝手に書き込むプログラムってどうやったら作れるの?

564 :デフォルトの名無しさん (ワッチョイ 7f28-DR2J):2017/03/25(土) 17:35:29.00 ID:DpWyOpIH0
CPUの動作周波数を計測するにはどうしたら良いでしょうか
定格周波数なら問題ないのですが、ターボブーストがかかったものや、OCされているものも計測できますかね

565 :デフォルトの名無しさん (ワッチョイ 2a2b-2oVS):2017/03/25(土) 18:28:25.65 ID:SWo7K2yf0
>>563
Cでやらずにスクリプトのほうがいいよ。

566 :デフォルトの名無しさん (ワッチョイ 7f28-DR2J):2017/03/25(土) 22:13:52.03 ID:DpWyOpIH0
>>564
すみません、自己解決しました

567 :デフォルトの名無しさん (ガラプー KK0b-3j27):2017/03/25(土) 23:17:08.96 ID:I5hadjT7K
プレミア見れない
ブンデス見れない
CLEL見れない
代表も見れねえちきしょう
結果知らされて見れねえちきしょうクソったれ同和のクソ野郎地獄へ落ちろ
音楽聞けねえちきしょう
テレビ見れねえちきしょう
同和のクズ共死ねクソ共がざまあみろ気違い共
ほれ気違い共もっともっとドア閉めろ通れ
それしか能のない能無し共がざまあみろ地獄に落ちろ
悔しいか、ざまあみろくたばれクソ同和
お前らの恐ろしさをもっと見せてみろ。そんなんじゃなんともねえぞ
袋とじ見たぞ
悔しいか、ざまあみろくたばれクソ同和
生きる権利もねえクズ共が藁地獄へ落ちろ
嫌がらせがエスカレートするのが楽しみでしょうがない
今それだけが楽しみだ
俺の生き甲斐藁
それだけ怒ってるってことだもんな藁
分かったか?お前らは生きる権利すらねえクソ野郎共だ
ラブホ行ったのがそんなに悔しいかざまあみろチンカス共が藁
思う存分楽しんでくるぞあばよ
椎名茉莉、知っちゃったよ。ラブホに来なければ知らなかったはずだけどな。サンキューお前ら藁
超美形。嬉しくてたまらん。お前らどうしてくれる?藁ほれ赤字分を取り返すために必死になれ
ピザ食ったぞ。羨ましいだろう?藁ざまあみろ
音楽聞いたぞざまあみろ
非人が美人

568 :デフォルトの名無しさん (ワッチョイ f36e-1WRf):2017/03/26(日) 00:03:11.36 ID:WlbZhdKe0
自己解決しましたとかいわれてもなー
まずオシロスコープか周波数カウンタで測定することを連想したけどなー
やったことないからなー

569 :デフォルトの名無しさん (ワッチョイ 2a2b-2oVS):2017/03/26(日) 09:59:08.80 ID:i70DjqT80
内部で逓倍してるから直接は測れないな。

570 :デフォルトの名無しさん (ワッチョイ 5728-TrMc):2017/03/26(日) 10:21:01.09 ID:BEDaSedw0
計らなくても値が取れれば良かったんでしょ
というか実際に計りたい人とかいるのか

571 :デフォルトの名無しさん (ワッチョイ eb5e-72yv):2017/03/26(日) 17:58:03.39 ID:FsanfKak0
ドライバ作るしかないね

572 :デフォルトの名無しさん (ワッチョイ 2b92-5Mbg):2017/03/26(日) 19:59:18.16 ID:XGKn8aF80
「しかないね」無能のボヤキ

インテルのツール起動して表示されてるのを覗けばよい

573 :デフォルトの名無しさん (ワッチョイ eb5e-72yv):2017/03/26(日) 22:01:36.19 ID:FsanfKak0
ここが何スレかも忘れた末期症状のアフォ

574 :デフォルトの名無しさん (ワッチョイ 2b92-5Mbg):2017/03/27(月) 08:30:20.54 ID:6STS5oue0
ああいう質問をする奴は確実にWindows/intel

575 :デフォルトの名無しさん (ワッチョイ eb37-72yv):2017/03/27(月) 09:04:52.45 ID:jX19x/Eb0
ターボブーストって言ってるんだから見破るもうんこもなかろう

576 :デフォルトの名無しさん (ワッチョイ be8c-N8vi):2017/03/27(月) 15:48:29.13 ID:YTkDzohr0
Linux/AMD ←超カッケー

577 :デフォルトの名無しさん (ワッチョイ eb37-72yv):2017/03/28(火) 15:24:59.06 ID:JfwQ0DgC0
まさかとは思うがGHzオーダーの測定を受動プローブでとか
クソたわけたことを考えたりしてねえよな

578 :デフォルトの名無しさん (ワッチョイ 4aab-VHv+):2017/03/28(火) 23:22:27.14 ID:C1cSHzBN0
バイト列[0C 69]を2バイト整数で【3177】として代入したいんだけど
このコードで、ビッグエンディアンの環境でも意図通り動く?
リトルエンディアン環境では正しく動作してる

unsigned short us;
unsigned char bb[] = {0x0C, 0x69};

int x = 1;
if( *(char *)&x ){
puts("LE");

us = (bb[0] << 8) + bb[1];
}else{
puts("BE");
us = (bb[1] << 8) + bb[0];
}
printf("%d\n", us);

579 :デフォルトの名無しさん (ワッチョイ aa0e-sHWo):2017/03/28(火) 23:46:23.14 ID:CV1H9vOH0
LEだろうがBEだろうが bb[0] は 0x0c だし bb[1] は 0x69 だから駄目だろ

580 :デフォルトの名無しさん (ワッチョイ aa0e-sHWo):2017/03/28(火) 23:47:59.32 ID:CV1H9vOH0
いや、スマン
やっぱり分からん

581 :デフォルトの名無しさん (ワッチョイ 1bae-HDPe):2017/03/29(水) 00:21:40.51 ID:TE60yoif0
big endianは 0x690c になるね

582 :デフォルトの名無しさん (ワッチョイ cf92-OyFU):2017/03/29(水) 00:37:23.73 ID:1Y5JkvJH0
>>578
なんか勘違いしてないか?
エンディアンの違いは入出力の違い
つまりこの場合bb[]の中が逆順になるわけで
bb[] = {0x0C, 0x69}; // BE
bb[] = {0x69, 0x0C}; // LE
となってusへの代入が逆だからLEでも正しくないはずだぞ

583 :デフォルトの名無しさん (ワッチョイ 0ad1-yqOs):2017/03/29(水) 00:49:27.44 ID:M4UnQvMB0
us = (bb[0] << 8) + bb[1];
この式の結果はエンディアンに依存してない
エンディアンによって結果が変わるのは*(unsigned short *)bb みたいにバイト列を直接2バイト以上の変数として読み出したとき

584 :デフォルトの名無しさん (ワッチョイ 0ad1-yqOs):2017/03/29(水) 00:51:34.17 ID:M4UnQvMB0
>>582
トンチンカンなこと吹き込むのはやめたげてよぉ…

585 :デフォルトの名無しさん (ワッチョイ 5728-TrMc):2017/03/29(水) 02:22:24.89 ID:Bb2qhsdR0
エンディアンが違うマシンで同じバイナリが動くわけ無いんだから
そういう判定はプリプロセッサに任せるのが妥当じゃないだろうか

586 :デフォルトの名無しさん (ワッチョイ 7bd4-sIi0):2017/03/29(水) 03:18:24.23 ID:zi+6m3Qx0
ソケットライブラリ使っていいなら、こうかなあ
unsigned char bb[]={0x0c,0x69};
printf("%d\n",ntohs(*(unsigned short*)bb));

587 :デフォルトの名無しさん (ドコグロ MMe3-hXJm):2017/03/29(水) 08:07:46.79 ID:H5Zs8YVxM
>>585
>>584

588 :デフォルトの名無しさん (ワッチョイ 934f-aw5l):2017/03/29(水) 08:10:12.15 ID:8zEKqVfn0
C言語の構文規則のようなものをまとめたものはありませんか?
ifが出てきたら次はブロック次にelseかelse ifが来るだろうなどと分かりたいです。
出来たらそういう規則がプログラムにとり込めるような形式のものないですか?

589 :デフォルトの名無しさん (ドコグロ MMe3-hXJm):2017/03/29(水) 08:29:19.45 ID:H5Zs8YVxM
>>588
C言語 BNF でググれ

590 :デフォルトの名無しさん (ワッチョイ 934f-aw5l):2017/03/29(水) 08:51:42.73 ID:8zEKqVfn0
ありがとうございます
C言語 BNF でググったらBNFが見つかりました。
BNF のC11 のBNFは見つかりますか?

591 :デフォルトの名無しさん (ワッチョイ cff9-72yv):2017/03/29(水) 10:00:52.04 ID:NU8Q9yFr0
>>588
ISO/IEC 9899:2011規格票のP.458 (物理ページP.477)
Annex A Language syntax summaryにまとめてある

規格票はここで入手する
正規版 http://www.jsa.or.jp/store/iso.html
ドラフト http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf

592 :デフォルトの名無しさん (ワッチョイ 73e1-HQfx):2017/04/05(水) 16:54:57.64 ID:M914HUmM0
勉強始めたばかりの初心者です。
よくおまじないと言われる#include <stdio.h>というのはなぜ必要になっているのでしょうか
ヘッダーファイルとかprintf関数が使えるようになるため外部から持ってくる……とか色々読んでみてはいます
でも例えばpythonとかならいきなりprint使っても問題無いじゃないですか。Cは一体何が違うんですかね

593 :デフォルトの名無しさん (アウアウウー Sab7-19VF):2017/04/05(水) 17:54:18.50 ID:fGmDSsA2a
>>592
裏で勝手に処理してくれるか自分で手動で処理するかの違いです
AT車とMT車の違いみたいなもん
手動だと管理は面倒になるけどその分必要なときだけインクルードすればよくなるのでリソースの節約になる

594 :デフォルトの名無しさん (アウアウオー Sa1f-kVPK):2017/04/05(水) 18:07:54.36 ID:MYxUBMY8a
>>592
組み込み用途とかだと容量限られるし、画面が無くてLEDとポートにしか入出力しないのも有るからね。
組み込みのCだと浮動小数も無い。
徹底的に無駄を省けるからこそ普及したとも言える。

595 :デフォルトの名無しさん (ドコグロ MM1f-rt+z):2017/04/05(水) 18:11:49.45 ID:Jfl2gxW0M
>>592
おまじないじゃない
printf関数のman見ると必要と書いてあるはず

596 :デフォルトの名無しさん (アウアウオー Sa1f-kVPK):2017/04/05(水) 18:23:02.75 ID:MYxUBMY8a
>>592
594だけど、説明になって無かったね。
Cはもともとアセンブラで書かれたUnixを書き直すために作られた。
printfはOSの機能を使うので、OS自体を作る際にはprintfは使えない。
要はOS上で動くことしか想定して無いか、OS無い状態も想定してるかが違うって事。

597 :デフォルトの名無しさん (アウアウカー Sad7-8ugA):2017/04/05(水) 23:21:46.60 ID:VdHy3lf0a
>>592
pythonと比べるとかなり違うけど、javaで考えたら分かりやすいんじゃない?
import文をつけなきゃフルでクラス名指定しなきゃいけないでしょ?ああいう感じだよ。includeしなくても関数とか変数の型が分かればいいんだけどね。

598 :デフォルトの名無しさん (ワッチョイ 73ae-47ib):2017/04/05(水) 23:47:30.28 ID:totaCjOi0
>>596
意味不明すぎてなんか怖い。どこから組み込みとかOSが・・・

>>597
関数や変数の型が分かればincludeしなくていいんじゃなくて、
関数や変数の型を分かるためにincludeしなければならない

初心者は、includeしなくてもリンクすれば動くことを知ると
includeは必須でないと思いがちだけど、
ヘッダファイルにはプロトタイプ以外に定数やtypedefや色々が
含まれているから、必要なヘッダファイルはincludeすべき

599 :デフォルトの名無しさん (ワッチョイ f272-8Vmj):2017/04/06(木) 01:19:10.89 ID:e/cyi26A0
日経ソフトウェア5月号にC言語がわかる記事が掲載されてるよ

600 :デフォルトの名無しさん (ワッチョイ d2ed-2ODd):2017/04/06(木) 03:02:07.73 ID:Fa+jLA710
そんなにごちゃごちゃ考えなくても、とりあえずおまじない扱いで先に進めば良い
自分でヘッダ書くようになればstdio.hが必要になる理由も分かる

601 :デフォルトの名無しさん (ワッチョイ 7f93-+TA9):2017/04/06(木) 07:14:23.75 ID:3pIc1pJU0
>>598
思いがちって、事実じゃん
初心者が事実をまずはドライに憶えることに俺は賛成だ
だからいじくり倒すための実機を与えるわけじゃん
きれい事だけ吹き込むには却って邪魔なものをね
そうして集めた事実から帰納したものこそ経験値ってやつ
「べき」論を持つこと自体がその上に成り立つわけだろ

602 :デフォルトの名無しさん (アウアウオー Saca-DYLG):2017/04/06(木) 12:01:20.41 ID:8kC83+ZYa
>>598
質問者はincludeの意味は後々理解はしてて、Pythonと違ってprintfまでincludeが必要なのは何で?って質問なんだから、組み込みやOSなどでprintf使えない環境のプログラミングも想定(と言うか、作られた目的がそれ)だからって回答。

603 :デフォルトの名無しさん (スップ Sdb2-H1JN):2017/04/06(木) 13:29:35.74 ID:tVouRW8Ld
>>596
ウソばっか書いてんじゃねーよ

604 :デフォルトの名無しさん (ワッチョイ efc3-/e+Y):2017/04/06(木) 16:17:22.73 ID:JYd3gytF0
>>592 の疑問「printf を使うのに #include <stdio.h> が必要な理由は?」

個人的な経験だけど、このことが腑に落ちたのは
printfで画面に文字列が表示されるのは関数の「副作用」なのだ、と
何かの資料を見たときだったな。
Cには文字列を表示する命令は存在しない、て題目の理解も含めて。

605 :デフォルトの名無しさん (ワッチョイ bf92-R2Im):2017/04/06(木) 17:03:07.38 ID:3D70ivY/0
そういう愚かな経験談は語らないように

606 :デフォルトの名無しさん (ワッチョイ 7243-Jcuu):2017/04/06(木) 17:45:47.51 ID:OpCyiUfW0
インクルードいるのは、プロトタイプ宣言と、マクロや型宣言のためだろ。
正直に中身言えばいい

607 :デフォルトの名無しさん (アウアウウー Sa93-ajVR):2017/04/06(木) 17:50:31.26 ID:a4NxHu4Ca
削れる部分はガンガン削るべき
謎のheader.hとか作って必要ないものまで詰め込むんじゃあないぞ?

608 :デフォルトの名無しさん (ワッチョイ bf35-D1KF):2017/04/06(木) 18:33:51.95 ID:YhjdHSXi0
分割コンパイルやライブラリのリンクを知らない限り、ヘッダファイルの存在を理解するのは難しいだろうね

609 :デフォルトの名無しさん (ドコグロ MM83-synR):2017/04/06(木) 19:12:12.23 ID:9VEHVWdQM
>>601
それは初心者の発想なんだって。百歩譲って中級者

610 :デフォルトの名無しさん (ワッチョイ 7f93-+TA9):2017/04/06(木) 19:54:19.03 ID:3pIc1pJU0
>>609
俺は永久初心者だよ
おまえみたいに慢心しないことが信条だ

611 :デフォルトの名無しさん (ワッチョイ 72c8-Tsvi):2017/04/06(木) 21:10:47.38 ID:LK8rGfci0
慢心した人間の口調にしか見えないが

612 :デフォルトの名無しさん (ワッチョイ bf92-R2Im):2017/04/06(木) 21:21:28.46 ID:3D70ivY/0
K&Rの頃と違ってライブラリが標準化されててインクルードファイルも指定されてるのにインクルードしない理由は無い

613 :デフォルトの名無しさん (ドコグロ MMca-3HFK):2017/04/06(木) 22:26:21.55 ID:SR4XZy36M
>>607
#include "printf.h"

614 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd92-+G+c):2017/04/06(木) 23:24:28.43 ID:e0OshZYPd
#ifdef _WIN32
__declspec(dllimport)
#endif
int
#ifdef _WIN32
__cdecl
#endif
printf(const char *, ...);

システムハッカーだったら、このくらい書けないと。

615 :デフォルトの名無しさん (ワッチョイ 32b6-P5ls):2017/04/06(木) 23:26:20.76 ID:nUMecF4W0
しすてむはっかぁ

616 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd92-+G+c):2017/04/06(木) 23:29:58.35 ID:e0OshZYPd
オンラインコンパイラのOSがWindowsだったら、あっという間に四苦八苦できちゃうよ。

617 :デフォルトの名無しさん (ワッチョイ d20b-+TA9):2017/04/07(金) 22:48:49.18 ID:yH2NYea40
それはすごいねーさすがシステムハッカーだね、かっこいー

618 :デフォルトの名無しさん (ワッチョイ bf01-ExwK):2017/04/09(日) 19:52:45.06 ID:kppXmAWS0
web版の苦しんで覚えるC言語終わったら、次何すればいいですか
具体的には買うべき本を教えてほしいです
C++を学ぶべきですか?
やりたいことはDxlibでのゲーム制作です
コミケで売りたいです

619 :デフォルトの名無しさん (アウアウウー Sa93-ajVR):2017/04/09(日) 19:59:57.30 ID:c0gwQMp6a
C言語ポインタ完全制覇を読む

620 :デフォルトの名無しさん (ワッチョイ f272-8Vmj):2017/04/09(日) 20:19:46.70 ID:+eXxcQKg0
>>618
http://dxlib.o.oo7.jp/
・14歳からはじめるC言語わくわくゲームプログラミング教室
・超本格! サンプルで覚えるC言語3Dゲームプログラミング教室

621 :デフォルトの名無しさん (ワッチョイ bf01-ExwK):2017/04/09(日) 20:47:10.03 ID:kppXmAWS0
>>619
ポインタとc++どっち勉強するのか迷ってます
>>620
その本は持ってます
一応14歳から始めるは持ってますがいいゲームソースは無いと思いました…
自分でリファレンスを見ながら作るのと、14歳を見ながら作るのどっちかで迷ってます
3Dは素材を作るのが大変なので買うかは分かりません

622 :デフォルトの名無しさん (ワッチョイ f272-8Vmj):2017/04/09(日) 21:05:49.96 ID:+eXxcQKg0
・12歳からはじめるゼロからのC言語ゲームプログラミング教室

623 :デフォルトの名無しさん (ワッチョイ bf01-ExwK):2017/04/09(日) 21:17:27.03 ID:kppXmAWS0
>>622
こちらはDxlibで作られているのでしょうか?
教えてほしいです

624 :デフォルトの名無しさん (ワッチョイ 7296-6kFs):2017/04/10(月) 01:05:43.39 ID:uIxtaV+10
読書はもういいから作り始めた方がよっぽど勉強になるよ

625 :デフォルトの名無しさん (スッップ Sd92-ExwK):2017/04/10(月) 11:36:04.04 ID:oSuGtbL2d
>>624
分かりました!
色々意見ありがとうございます

626 :デフォルトの名無しさん (アウアウカー Sa7f-ExwK):2017/04/10(月) 14:37:52.49 ID:smEOwdaka
がんばれー!コミケで売るとか夢があっていいね

627 :デフォルトの名無しさん (ワッチョイ 7ec8-oCke):2017/04/11(火) 17:54:16.73 ID:wONLZxuG0
すみません!教えて下さい!

マイコンでCを使っているのですが、ADコンバーターで読み込む値が0から255までの範囲であるのですが、
その値を逆(255=0、100=155、155=100、0=255)というようにする一番簡単な方法とか関数があればお願いします!
ちょっとわかりづらくてすみません
要は0−255が本当の値で、本当の値が上がるに連れて別の値が255−0に下がることをしたいです

628 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd92-+G+c):2017/04/11(火) 17:57:31.27 ID:Kut+59had
int f(int value)
{
return 255 - value;
}

629 :デフォルトの名無しさん (ワッチョイ 7ec8-oCke):2017/04/11(火) 18:28:55.86 ID:wONLZxuG0
>>628

ありがとうございました!

630 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd92-+G+c):2017/04/11(火) 18:42:52.22 ID:Kut+59had
数学の等差数列や一次関数を知っていれば、解ける問題だな。

631 :デフォルトの名無しさん (ワッチョイ f3c2-3HFK):2017/04/11(火) 23:32:34.82 ID:DKpQ91C40
(unsigned char)~value

632 :デフォルトの名無しさん (ワッチョイ 7f54-+TA9):2017/04/12(水) 13:00:45.47 ID:VsnTi5TK0
74ABT540

633 :デフォルトの名無しさん (ワッチョイ 0bfe-alIo):2017/04/13(木) 01:46:13.23 ID:aI3QvCn30
これ 通常 データが int int int .... ok 想定どおり
     
int int char int int 、 char 以降のデータが 00にしかならないのだけど・・
  

           
   
sscanf(line, "%d %d %d %d %d %d %d %d", &num1, &num2, &num3, &num4, &num5, &num6 ,&num7,&num8);

634 :デフォルトの名無しさん (JP 0Hef-XQdm):2017/04/13(木) 02:41:15.39 ID:DU6rbm7bH
それは途中で打ち切られて初期値のままになってるだけ。
sscanfの戻り値調べてみ。

635 :デフォルトの名無しさん (ワッチョイ 5bf3-CJGP):2017/04/13(木) 09:37:01.11 ID:7Ya9aS0O0
標準Cライブラリ(libc)とシステムコールの違いが判りません。

関数printfは内部でシステムコールwriteを読んでいるところまでは判りました。
それから、printfは、libc.so.6にアーカイブされている事も判りました。
では、writeシステムコールは、どこにあるのでしょう?カーネルに組み込まれているのでしょうか?
システムコールのみでプログラミング(例えばprintfの再発明)したら、ライブラリのリンク無しで実行ファイルが作られるのでしょうか?

なお、「ふつうのLinuxプログラミング」青木峰郎著を読んでるところです。

636 :デフォルトの名無しさん (ワッチョイ 4ff3-HE/W):2017/04/13(木) 09:49:23.98 ID:dIyM6wgk0
>>635
それそのまんまBinary Hacksに書いてあるから読むといい
ttp://amazon.jp/dp/4873112885

637 :デフォルトの名無しさん (JP 0Hef-XQdm):2017/04/13(木) 10:06:38.66 ID:pen620Y0H
>>635
システムコールの中身はカーネルにあるけど、
Cからは直接にはカーネルを呼ぶ機能がないので、
それをしてくれるwriteという橋渡し用の関数がlibc内にある。

638 :デフォルトの名無しさん (アウアウオー Sabf-gqNS):2017/04/13(木) 10:13:22.57 ID:m/ZfxtWHa
>>635
そうだお。
Winでも内部的にWin32の同じ機能のAPIが呼ばれてる。
んで、Win32APIはdllの中に入ってる。
そのdllはsystem32フォルダにある。
今のOSだとファイルの名前違うかもだけど、基本は一緒。

639 :デフォルトの名無しさん (アウアウオー Sabf-gqNS):2017/04/13(木) 10:14:07.06 ID:m/ZfxtWHa
xファイルの名前違うかもだけど
oフォルダの名前違うかもだけど

640 :デフォルトの名無しさん (ワッチョイ 0bfe-alIo):2017/04/13(木) 10:53:57.69 ID:aI3QvCn30
>>634
ああ そういうことですか
なぞがとけた ありがと

641 :デフォルトの名無しさん (ワッチョイ 5bf3-CJGP):2017/04/13(木) 11:07:39.23 ID:7Ya9aS0O0
>>638
THX!

ggってみるとwrite関数を呼ぶとKernelのsys_call_tableが走査されて、
処理ルーチンへ行って実行されるみたいです。

「0から作るLinuxプログラム」
http://softwaretechnique.jp/Linux/SystemCall/sc_02.html

642 :デフォルトの名無しさん (ワッチョイ 5bf3-CJGP):2017/04/13(木) 11:12:40.11 ID:7Ya9aS0O0
>>637
それ間違い、ちゃいいまっか?
libcにはprintfはあるけど、writeは無いんちゃいます?

けど、man 2 writeってmacOSでやると、

WRITE(2) BSD System Calls Manual WRITE(2)
LIBRARY
Standard C Library (libc, -lc)

って出てくるんですよねぇ。謎ダァ。

643 :デフォルトの名無しさん (ドコグロ MMaf-ADWx):2017/04/13(木) 12:27:56.92 ID:5NPFDLkkM
>>642
システムコールもCから呼ぶためのラッパーは必要
システムコールは特定にレジスタやスタックをインターフェイスいするから
C言語の関数に見えるようラップする

644 :デフォルトの名無しさん (ワッチョイ 5bf3-CJGP):2017/04/13(木) 12:55:20.15 ID:7Ya9aS0O0
>>643
めちゃ、嘘っぽい。

645 :デフォルトの名無しさん (ドコグロ MMaf-ADWx):2017/04/13(木) 12:56:44.73 ID:5NPFDLkkM
なんでよ?

646 :デフォルトの名無しさん (ガックシ 067f-8aNn):2017/04/13(木) 13:18:34.37 ID:8QVh9iHQ6
普通に>>643は何も間違ってないと思いますが

647 :デフォルトの名無しさん (ワッチョイ 5bf3-CJGP):2017/04/13(木) 13:36:00.76 ID:7Ya9aS0O0
>>646
nm libc.so | grep write
を実行するとwriteがヒットする?
すまんが、今Linux環境が無いのだ。

648 :デフォルトの名無しさん (ワッチョイ 5ba8-ho19):2017/04/13(木) 13:37:54.39 ID:zgGH6F9W0
000e6cd0 W write
あったよ

649 :デフォルトの名無しさん (ワッチョイ 5bf3-CJGP):2017/04/13(木) 14:31:16.61 ID:7Ya9aS0O0
Wって種別が良くわからんが、libc.soには未定義って事なのでは?

もしlibc.soにwriteがあれば、T = Global text symbolって表示されるはず。
libc.soにはprintfがあり、printfはwriteを呼ぶから

W write

って表示されるんちゃうの?

650 :デフォルトの名無しさん (ワッチョイ 5ba8-pKWl):2017/04/13(木) 15:06:55.12 ID:zgGH6F9W0
Wとwってのはweak symbolとからしくリンクするときに通常のstrong symbolがあると
そっちが優先されるらしい

glibcのwrite見てみたら何もやってなかった
/* Write NBYTES of BUF to FD. Return the number written, or -1. */
ssize_t
__libc_write (int fd, const void *buf, size_t nbytes)
{
if (nbytes == 0)
return 0;
if (fd < 0)
{
__set_errno (EBADF);
return -1;
}
if (buf == NULL)
{
__set_errno (EINVAL);
return -1;
}

__set_errno (ENOSYS);
return -1;
}

ld-2.24.so
0001cab0 t write
多分こっちのが使われるのかな

651 :デフォルトの名無しさん (ワッチョイ 5bf3-CJGP):2017/04/13(木) 15:22:05.22 ID:7Ya9aS0O0
>>9
Unixプログラミング

652 :デフォルトの名無しさん (アウアウカー Saef-DPRV):2017/04/13(木) 19:57:35.71 ID:XISlQxJMa
libcに定義されてる
実行ファイルにnm叩いたら、write@GLIBC_2.2.5とか出るでしょ
実際のシンボルは__libc_writeでweak_aliasで呼び変えさせてる
libcの中身はアーキテクチャによって違うったり、雑多な処理はあるけど、要はint 0x80

653 :デフォルトの名無しさん (ワッチョイ 5bf3-CJGP):2017/04/14(金) 08:48:57.71 ID:DhuHJM1H0
>>652
レスあんがと!

CPU例外(割り込み)を使って保護モード(User Mode)から特権モード(Supervisor Mode)へ遷移させてsystem callを実行させる、って所まで、
昨日ggって理解しました。

状態遷移に必要なCPU命令(asm命令)がint 0x80ってのも理解したんですが、
int 0x80は古くて、最新のCPUではPentium6?以降は使用されてないってどっかでみたんですけどぉ。。。

違うのかな?

654 :デフォルトの名無しさん (ワッチョイ 5bf3-CJGP):2017/04/14(金) 10:07:03.22 ID:DhuHJM1H0
INT 0x80よりも負荷の軽いsysenter/syscallってのが使われるみたい。最近は!

qitta://システムコールめもめも

655 :デフォルトの名無しさん (アウアウカー Saef-DPRV):2017/04/15(土) 00:51:54.67 ID:Q6X7yreia
アーキテクチャに依存するし、代表例としてint 0x80挙げただけで実際は色々

656 :デフォルトの名無しさん (ワッチョイ 1f86-aYkx):2017/04/15(土) 02:29:14.45 ID:wVDYL7uR0
Supervisor Modeってカーネルモードのことか
前者はあまり聞かないな

657 :デフォルトの名無しさん (ワッチョイ dbc5-EaKP):2017/04/15(土) 07:37:39.51 ID:moDerlFh0
例外で問題プログラムモードから監視プログラムモードに切り替えって
オーバーヘッドがめちゃ大きいから無闇にやらなくなってるだろ

コールゲートとかsysenterとか軽量化された遷移機能が色々あるわけで

658 :デフォルトの名無しさん (ワッチョイ 2b35-woc+):2017/04/15(土) 10:05:50.15 ID:nr8sMSoj0
コールゲートは x86_64 で廃止になったらしい

659 :デフォルトの名無しさん (ワッチョイ 5b54-axuq):2017/04/15(土) 10:14:41.94 ID:a5YsKM5y0
>>656
じゃぁ、前者はなんて言うの?

660 :デフォルトの名無しさん (ワッチョイ 5b54-axuq):2017/04/15(土) 10:22:27.50 ID:a5YsKM5y0
wikipedia://リングモード
が詳しいな。
Win, LinuxはRing 0, 3のみを使うらしい。
前者はSupervisor mode, 後者はUser mode

呼び名はCPUにより異なり、上記はIntelの話。
AMDではHypervisor modeって言うらしい。

あぁ、ややこしい。

661 :デフォルトの名無しさん (ワッチョイ 5b54-axuq):2017/04/15(土) 10:23:28.19 ID:a5YsKM5y0
>>660
>wikipedia://リングプロテクション

662 :デフォルトの名無しさん (ワッチョイ 6b92-Lld5):2017/04/15(土) 10:38:54.27 ID:I20g9b3x0
SVC(super visor call)を知らないのか
無知自慢しなくて良いぞ

663 :デフォルトの名無しさん (ワッチョイ 5b54-axuq):2017/04/15(土) 15:25:53.38 ID:a5YsKM5y0
>>662
あんた、凄腕Hackerなのね。
すごぉーい。

664 :デフォルトの名無しさん (ワッチョイ 1fb6-AUHz):2017/04/15(土) 18:00:15.61 ID:bK+0/AQY0
醜い争いだw
争いは同じレベルでうんぬんってやつだなw

665 :デフォルトの名無しさん (ワッチョイ 1fb2-EaKP):2017/04/15(土) 18:08:36.60 ID:53BEnEdf0
>>662
DC X'83だろjk

666 :666 (ワッチョイ ebd4-O9Wd):2017/04/15(土) 18:11:42.05 ID:DaclR97r0
666

667 :デフォルトの名無しさん (ワッチョイ 1f86-aYkx):2017/04/15(土) 19:45:12.63 ID:wVDYL7uR0
>>660
Wikipediaの知識鵜呑みにするなよ

668 :デフォルトの名無しさん (ワッチョイ 5b01-E3Pp):2017/04/15(土) 22:54:03.18 ID:C8M5Q5/I0
下のコードですが、もっとスマートなコードに出来ませんかね?


if(L1 == 1 && L2 == 0)
{
if(L3 == 0)
{
L2 = 1;
}
}

if(L1 == 0 && L2 == 1)
{
L2 = 0;
}

669 :デフォルトの名無しさん (ワッチョイ 0f1f-HE/W):2017/04/15(土) 23:17:25.30 ID:emWn6yHd0
booleanなのか整数なのか、それが問題だ

670 :デフォルトの名無しさん (ワッチョイ 1fb6-AUHz):2017/04/15(土) 23:33:30.64 ID:bK+0/AQY0
>>668
初めのifとその中のifは &&で連結できるよね

671 :デフォルトの名無しさん (アウアウウー Saaf-Sirm):2017/04/15(土) 23:46:35.09 ID:SFMcONw8a
L2 = (L1==1 && L2==0 && L3==0)
|| (L1==0 && L2==1)
? L1 : L2 ;

672 :デフォルトの名無しさん (ワッチョイ 6b3c-8gjR):2017/04/16(日) 01:18:39.30 ID:L6zAmhp30
http://i.imgur.com/5AMjioV.jpg

2eの問題自分なりに作ってみたんだけど,

#include <stdio.h>
int main(void){
int sum;
char c[3];
printf("3つの文字を入力してください: ");
scanf("%s", c);
sum = 1000*1000*c[0]+1000*c[1]+c[2];
printf("%d\n", sum);
}

以外に解答ある?
前のページ見返すと%sなんて一つも出てきてなかったから違う書き方あるのかなと思った
まぁこれが一番手っ取り早いとは思ってるけど

ちなみにこれ以前に出てきたのはprintf, getchar, putchar, scanfくらい

673 :デフォルトの名無しさん (ワッチョイ 1f13-XQdm):2017/04/16(日) 02:13:08.25 ID:bUP2qex60
配列サイズが足りない以外はそんなもんじゃね?
もちろん別解はあるよ。いちいち掛け算とかしなくても題意は満たせる。

674 :デフォルトの名無しさん (ワッチョイ 1f96-ofgl):2017/04/16(日) 07:14:16.97 ID:Xmi0XFCj0
cはunsigned

675 :デフォルトの名無しさん (ワッチョイ 6bc3-L7yR):2017/04/16(日) 07:28:50.03 ID:zCGp260H0
%s を紹介する前に出た問題なら、
scanf("%c%c%c", &c[0], &c[1], &c[2]);
という具合に1文字ずつ3回とる書き方を想定してるのかも。

もちろん、書式指定文字を自分で調べてみろ、という可能性もある。

676 : ◆QZaw55cn4c (ワッチョイ efff-LgMU):2017/04/16(日) 07:42:04.49 ID:3PeEvH/A0
>>674
unsigned か signed かは処理系依存

677 :デフォルトの名無しさん (ワッチョイ db92-tzbf):2017/04/16(日) 08:29:33.38 ID:IGu7vgmw0
#include <stdio.h>
int main(void){
long sum = 0;
printf("3つの文字を入力してください: ");
sum += 1000000 * getchar();
sum += 1000 * getchar();
sum += getchar();
printf(" %ld\n", sum);
}

ループ制御文もまだ、という前提ならこんな書き方もあるかな

678 :デフォルトの名無しさん (ワッチョイ 0fc5-nNzh):2017/04/16(日) 09:25:30.90 ID:ZkGvv/eh0
>>677
戻り値がないよ。

679 :デフォルトの名無しさん (ワッチョイ 8b6e-wfVM):2017/04/16(日) 09:47:09.36 ID:KtytiiHR0
int table[2][2][2];
table[0][0][0] = 3;
table[0][0][1] = 1;
table[0][1][0] = 0;
table[0][1][1] = 3;
table[1][0][0] = 3;
table[1][0][1] = 3;
table[1][1][0] = 0;
table[1][1][1] = 3;

if(table[L3][L2][L1] != 3) {
L2 = table[L3][L2][L1];
}

680 :デフォルトの名無しさん (ワッチョイ 5b54-axuq):2017/04/16(日) 10:26:09.76 ID:rJDcEpUw0
>>671
参考になった

681 :デフォルトの名無しさん (ワッチョイ 1f3c-RLAq):2017/04/16(日) 21:37:35.53 ID:lPPq8pqC0
>>679
なんのためにそんなアホなことしてるんだ?

682 :デフォルトの名無しさん (ワッチョイ 0f1f-HE/W):2017/04/16(日) 21:45:59.33 ID:eotLVbou0
bool限定

if(L1) {
if(!L3) {
L2 = true
}
}
else {
L2 = false
}

683 :デフォルトの名無しさん (ワッチョイ 5ba8-sdet):2017/04/16(日) 21:52:23.15 ID:BxtB+HP30
それならL3のところは比較なしにL2 = !L3;ってできるんじゃないか

684 :デフォルトの名無しさん (ワッチョイ 0f1f-HE/W):2017/04/16(日) 22:05:16.60 ID:eotLVbou0
dekin

685 :デフォルトの名無しさん (アウアウウー Saaf-Sirm):2017/04/16(日) 23:49:15.20 ID:TVwRllmJa
L2 = L2 ? L1 : (L1 && !L3) ;

686 :デフォルトの名無しさん (ワッチョイ 0f1f-HE/W):2017/04/17(月) 00:12:13.82 ID:eF77F0Lm0
if文あといっこ減

687 :デフォルトの名無しさん (ワッチョイ 1fc8-l5Yj):2017/04/17(月) 00:14:15.44 ID:5ZyamKxI0
int M3=0;
if(L3!=0){
M3=1;
}

char a[3]={L1+'0',L2+'0',M3+'0'};
int ans = strtol(a,NULL,2);
if(ans==2 || ans==3){
L2=0;
}
else if(ans==4){
L2=1;
}

688 :デフォルトの名無しさん (ワッチョイ 0f1f-HE/W):2017/04/17(月) 00:29:38.04 ID:eF77F0Lm0
L2 = L1 && (L2 || !L3)
こうkqあ

689 :デフォルトの名無しさん (ワッチョイ 0f57-pXXn):2017/04/17(月) 19:37:41.40 ID:LFb/nWYs0
初心者のC言語学習におすすめのC言語開発環境教えて下さい

visual studio2015は重い、容量が大きい、多機能ゆえに複雑で
またC言語の本に載っているscanf()か忘れましたがvisualstudioで使えない関数があって勉強に向きませんでした

学習用C言語開発環境は使いやすかったのですが「ハンドルされてない例外が云々」で開けなくなってしまいました

690 :デフォルトの名無しさん (アウアウカー Saef-63li):2017/04/17(月) 19:55:35.30 ID:JOlgQg3xa
gccでいいのでわ

691 :デフォルトの名無しさん (アウアウカー Saef-8aNn):2017/04/17(月) 19:57:50.26 ID:3Tw61MUoa
cygwin + gccが一番

692 :デフォルトの名無しさん (ワッチョイ 0f57-pXXn):2017/04/17(月) 20:02:43.16 ID:LFb/nWYs0
>>690,691
ありがとうございます
それでやってみます

693 :デフォルトの名無しさん (ワッチョイ 1f3c-xLT8):2017/04/17(月) 20:44:11.37 ID:rZd85UOy0
最近はClangがかなり優秀なんだけど、Windowsの世界ではまだあまりメジャーじゃない?

694 :デフォルトの名無しさん (ワッチョイ 0f1f-V7Gz):2017/04/17(月) 20:50:37.73 ID:WSFbMZnM0
Strawberry Perl って言うのがあって、
インストールするとWindowsで
そのままGCCが使えるようになる

695 :デフォルトの名無しさん (ワッチョイ 0f1f-HE/W):2017/04/17(月) 21:16:19.66 ID:VvYNlkfx0
Perlなのかgccなのかはっきりしろ

696 :デフォルトの名無しさん (ワッチョイ 0f1f-V7Gz):2017/04/17(月) 21:27:42.83 ID:WSFbMZnM0
Strawberry Perl is a perl environment for MS Windows containing all you need to run and develop
perl applications. It is designed to be as close as possible to perl environment on UNIX systems.
It includes perl binaries, compiler (gcc) + related tools, all the external libraries (crypto, math,
graphics, xml ...), all the bundled database clients and all you expect from Strawberry Perl.

697 :デフォルトの名無しさん (ドコグロ MM6f-nNzh):2017/04/17(月) 21:56:31.37 ID:K4zMJw1pM
オンラインコンパイラでいいだろ。

698 :デフォルトの名無しさん (ワッチョイ db92-tzbf):2017/04/17(月) 23:07:09.98 ID:n47simZf0
>>693
というかもはやwindowsがマイナーなので積極的にサポートする気もないのでは

699 :デフォルトの名無しさん (ササクッテロル Sp6f-cQmk):2017/04/18(火) 00:27:10.64 ID:mT3cn5tTp
C言語でC++のSTLのmapやunordered_map相当のコレクションを使おうと思ったら自分で1から作るしかないんでしょうか
ライブラリがあれば使いたいんですが

700 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd3f-L+dC):2017/04/18(火) 00:31:22.31 ID:IWAr0eMMd
>>699
std::mapのポインタ型を抽象化して、extern "C" 関数で包み込めば、C言語で使えるよ。

701 :デフォルトの名無しさん (アウアウオー Sabf-63li):2017/04/18(火) 01:13:17.24 ID:d6pyL/2ia
C++で必要な機能だけC++使って、あとはCで書けば良いだけでは。。。
C++だからってベターCで使っちゃいけないとかは無い。
昔は馬鹿にされてたみたいだけど、オブジェクト指向のメリット/デメリット分かってきたからこそ使い分けるってのは今ならアリじゃ無いかな。

702 :デフォルトの名無しさん (ワッチョイ 1f96-ofgl):2017/04/18(火) 01:14:22.42 ID:XGeX8lCt0
cからc++のライブラリとか呼べないだろ。コンストラクタとかグローバル変数の初期化ロジックがcとは違うと思うんだけど

703 :デフォルトの名無しさん (ワッチョイ 4b3c-93S+):2017/04/18(火) 02:53:03.52 ID:bFJ8kS/S0
L2 ^= L2 | !L3 && L1 ^ L2;

704 :デフォルトの名無しさん (ワッチョイ 4b3c-93S+):2017/04/18(火) 03:15:10.11 ID:bFJ8kS/S0
アホだった
これでOK
L2 ^= L2 | L3 ^ L1;

705 :デフォルトの名無しさん (ワッチョイ 4b3c-93S+):2017/04/18(火) 03:18:20.17 ID:bFJ8kS/S0
ってダメじゃん…orz

706 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd3f-L+dC):2017/04/18(火) 03:27:35.19 ID:IWAr0eMMd
大学や専門学校とかで、ブール代数や真理値表を習わなかった?

707 :デフォルトの名無しさん (ワッチョイ 6b7b-HE/W):2017/04/18(火) 07:42:48.54 ID:s3RYESJE0
>>698
えっ。clang-clなんてここまでやるかというくらい力入っているのに。

708 :デフォルトの名無しさん (ワッチョイ 1f0b-8aNn):2017/04/18(火) 09:53:55.83 ID:GbxEFlpT0
理系大学でもブール代数なんてやるの一部だろ
工学系の俺はやってない
真理値表くらいはしってるが

709 :デフォルトの名無しさん (ワッチョイ db65-EaKP):2017/04/18(火) 12:12:48.38 ID:opmIphTi0
ブール代数だけで1単位とかネタが持たんだろ

710 :デフォルトの名無しさん (ドコグロ MM3f-nNzh):2017/04/18(火) 12:21:18.26 ID:OiYR9ME0M
ブール代数原論
ブール代数概論
ブール代数総論

711 :デフォルトの名無しさん (JP 0Hef-XQdm):2017/04/18(火) 18:04:32.24 ID:rFffWSG4H
別に1単位もないけど、情報系と電気系なら論理回路の一部で習うでしょ

712 :デフォルトの名無しさん (ワッチョイ db92-tzbf):2017/04/18(火) 21:16:41.04 ID:k6m1elBa0
>>707
ライブラリをスタティックリンクしまくって60MB超える実行ファイルを
別名で用意するためだけにいくつもコピペした結果
寄生先であるgcc本体の倍近いパッケージサイズになってるあたり
全くもってやる気が感じられないのだが

713 :デフォルトの名無しさん (ワッチョイ 1f86-aYkx):2017/04/19(水) 02:34:42.36 ID:4wkZySHo0
clangは細かいバグが多いと聞いたが今もそうなのかな

714 :デフォルトの名無しさん (ワッチョイ 5fd4-O9Wd):2017/04/19(水) 07:04:47.79 ID:0iRfCWR80
むしろいろんな講義で重複して教えてて無駄だと思った>ブール代数

715 :デフォルトの名無しさん (ワッチョイ 2b51-EaKP):2017/04/19(水) 07:59:27.42 ID:NVOSG7Tn0
それはあるね

716 :デフォルトの名無しさん (ワッチョイ 5bf3-CJGP):2017/04/19(水) 08:23:26.68 ID:2o4P71X40
>>715
それはない
NANDだけで全ての論理回路を構成できると知ってビックリした。

717 : ◆QZaw55cn4c (ワッチョイ 2b35-woc+):2017/04/19(水) 08:26:32.22 ID:uqxRmUzE0
むしろ出力から帰還のある回路(RS-フリップフロップ)が不思議
これも NAND だけで構成できる

こういう帰還のある回路を表現する数学ってなに?

718 :デフォルトの名無しさん (ドコグロ MMbf-RLAq):2017/04/19(水) 08:30:08.02 ID:CJSzniGcM
>>716
> NANDだけで全ての論理回路を構成できる
なるほどねぇ
っては思ったけどビックリするほどのことか?
って言うかいくつかの講義で重複してる件となんの関係があるんだよ

719 :デフォルトの名無しさん (ワッチョイ 2b51-EaKP):2017/04/19(水) 08:51:22.09 ID:NVOSG7Tn0
>>716
結論だけ聞くと意外性がありそうに聞こえるけど
入力を束ねるとNOTが作れて、ならばANDもORも合成できるってだけのこと

俺はむしろ束ねた入力に対するドライブ能力が1本分でよいことに驚いた

720 :デフォルトの名無しさん (ワッチョイ 5bf3-CJGP):2017/04/19(水) 09:21:23.94 ID:2o4P71X40
>>717
俺も、flip-flopが不思議。
これで、メモリが実現できるってのも、不思議。

なんども、理解したつもりになって、あれ?なんだっけ!

となる。

721 :デフォルトの名無しさん (ワッチョイ 1f59-HE/W):2017/04/19(水) 09:41:15.94 ID:DwFiyMU60
VisualStudioを使っており2つのプロジェクトにまたがって定義した関数を使いたいのですがうまくいきません
プロジェクトAに、関数を定義した.cファイルと、その関数のプロトタイプ宣言をしたヘッダーファイルが入っています。
そしてプロジェクトBの.cファイルで、Aのヘッダーファイルをincludeし定義した関数を使うと
外部シンボル"関数名"は未解決です。とエラーが出ます。
どのようにすれば使えるようになるでしょうか?

ちなみに上にあげた3つ全てのファイルを同一プロジェクトに入れた場合は上手くいったので
内容は問題ないと思います。

722 :デフォルトの名無しさん (ワッチョイ 2b51-EaKP):2017/04/19(水) 09:56:29.07 ID:NVOSG7Tn0
自分の出力が、自分の入力に回ってくるのは
Cで言うところの再帰だね

723 :デフォルトの名無しさん (ワッチョイ 5bf3-CJGP):2017/04/19(水) 10:00:43.68 ID:2o4P71X40
>>722
論理回路では帰還をかけるっていうんだけど、再帰と帰還は同じ意味かなぁ?

724 :デフォルトの名無しさん (ワッチョイ 0b28-XQdm):2017/04/19(水) 10:08:36.13 ID:p8FC279M0
>>721
ようは中身が見つからないよってエラーなんで、libファイルを作るか
中身もプロジェクトに登録しちゃうかすればいい

725 :デフォルトの名無しさん (ワッチョイ 2b51-EaKP):2017/04/19(水) 10:20:04.55 ID:NVOSG7Tn0
>>723
あれかSendMessageじゃなくPostMessageで
同じIDのメッセージを繰り返すパターンみたいなもんか

726 :デフォルトの名無しさん (ワッチョイ 1f59-HE/W):2017/04/19(水) 11:39:50.63 ID:DwFiyMU60
>>724
初学者でそもそもライブラリというものをよく理解できていませんでした。
プロジェクトAをライブラリプロジェクトとして設定することで、前述の形式でも上手くいきました。
回答ありがとうございました。

727 :デフォルトの名無しさん (ワッチョイ 4ff3-HE/W):2017/04/19(水) 12:46:31.52 ID:ICxr7JON0
NANDの話は何度も出てくるよね

728 :デフォルトの名無しさん (ワッチョイ 1fda-EaKP):2017/04/19(水) 15:38:58.74 ID:8zIV4zu80
RSFFが2個のNANDとだけ憶えてるやつって
回路図のエチケットを知らないのまる出しで草生えるな

本来は正論理入力で負論理出力のANDと
負論理入力で正論理出力のORで
1段目のANDよりも右に2段目のORがあり
帰還をかけているワイヤ同士はクロスしないのに

729 :デフォルトの名無しさん (JP 0Hef-XQdm):2017/04/19(水) 18:58:08.94 ID:X47Ii0W0H
NORの話はナンドも出てこないけど
NORラッチの方が理解しやすいのは確か。

730 : ◆QZaw55cn4c (ワッチョイ 2b35-woc+):2017/04/19(水) 19:37:40.56 ID:uqxRmUzE0
>>728
え?
http://akademeia.info/index.php?RS%A5%D5%A5%EA%A5%C3%A5%D7%A5%D5%A5%ED%A5%C3%A5%D7
一段だけで帰還が構成されているのでは?

731 :デフォルトの名無しさん (ワッチョイ 1fda-EaKP):2017/04/19(水) 20:19:00.20 ID:8zIV4zu80
>>730
おまえ今日は何グラム入れてるんだ?
そのラリった脳では厳しいかも知れんが
信号の流れを辿って何ゲート通って元の観測点へ戻ってくるか数えてみろ

732 : ◆QZaw55cn4c (ワッチョイ efff-LgMU):2017/04/19(水) 21:22:38.34 ID:OZ2ZI/cd0
>>731
NAND の出力が NAND の入力に直接帰還しているよ?

733 :デフォルトの名無しさん (ワッチョイ 1fda-EaKP):2017/04/19(水) 21:35:52.99 ID:8zIV4zu80
>>732
あー確かにな
74001個でRSFF作れるもんな
それでNAND1個のつもりなんだ
よかったねーバカで

734 : ◆QZaw55cn4c (ワッチョイ efff-LgMU):2017/04/19(水) 21:43:10.74 ID:OZ2ZI/cd0
>>733
NAND の出力が NAND の入力に直接帰還しているよ?

735 : ◆QZaw55cn4c (ワッチョイ efff-LgMU):2017/04/19(水) 21:45:55.80 ID:OZ2ZI/cd0
>>733
TTL ならトランジスタ2個で NAND ゲート1個が作れるよ
https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/TTL_npn_nand.svg/200px-TTL_npn_nand.svg.png
二段目とかないよ

736 :デフォルトの名無しさん (ワッチョイ 9b5c-vZSP):2017/04/19(水) 22:34:42.99 ID:3e789RbQ0
>>727
俺は評価するよ

737 :デフォルトの名無しさん (ワッチョイ db80-EaKP):2017/04/19(水) 22:50:26.83 ID:hzDEZAlD0
なあクズ、NAND1個でRSFFておまえそれ画像でうpしる
昨今のテレビの衰退でみんなドリフ並みのメガトン笑いを渇望してるから

738 :デフォルトの名無しさん (ワッチョイ 0fe2-epbm):2017/04/19(水) 22:54:12.47 ID:bMwg4OgE0
>>735
エミッタが2つあるトランジスタって、ディスクリートだとどういう回路で代用すればいいんだろう…

739 :デフォルトの名無しさん (ブーイモ MMc7-KrKL):2017/04/20(木) 00:15:32.38 ID:8f2LuB9kM
>>734
どのNANDの出力がどのNANDに?

740 :デフォルトの名無しさん (ブーイモ MMc7-KrKL):2017/04/20(木) 00:22:01.87 ID:8f2LuB9kM
>>738
直接にはできないんじゃないかな
NORの入力段をpnpにしてベースをgndにつなぐとかでできるかもしれんが
電気的特性がだいぶ変わる

741 : ◆QZaw55cn4c (ワッチョイ 46ff-hcLM):2017/04/20(木) 04:06:03.21 ID:sXSbPPmM0
>>737
そんなことはいっていないよ
お前のいうことがわからないから聞きなおしているだけだよ

742 : ◆QZaw55cn4c (ワッチョイ 46ff-hcLM):2017/04/20(木) 04:22:34.46 ID:sXSbPPmM0
>>739
なるほど,でもNANDを直列に二段に書く図面なんてみたことないよ‥

743 :デフォルトの名無しさん (ワッチョイ 1f8f-AhUp):2017/04/20(木) 06:29:11.85 ID:dzDslOc/0
>>738
マルチエミッタもディスクリートだよ
ああいうベース接地はダイオード的な使い方なので
エミッタ接地よりは簡単にダイオードで近似できる

744 :デフォルトの名無しさん (ワッチョイ 1f8f-AhUp):2017/04/20(木) 06:29:57.93 ID:dzDslOc/0
つーかノーマルTTLでものを考えてる化石まだいるんだなw

745 :デフォルトの名無しさん (ワッチョイ 1ee2-DniR):2017/04/20(木) 06:53:52.11 ID:v2PcEvkm0
>>740 >>743
レス中の言葉を参考に「マルチエミッタトランジスタ」で検索し
http://shin20070212.seesaa.net/article/392218331.html
これのQ3,Q4あたりの回路で代用できそうだとわかりました。
ありがとう

746 :デフォルトの名無しさん (ドコグロ MM2b-AsB1):2017/04/20(木) 07:21:09.57 ID:D3pkWduBM
俺は組込屋だから RS-FF 程度の話にはついていけるしスレチも多少なら別にいいと思うけど下らん言い争いはさすがによそでやってくれよ...

747 :デフォルトの名無しさん (ワッチョイ 1e75-QHks):2017/04/20(木) 08:44:57.51 ID:h1pZDmmR0
PICの本を読んで、電子電気回路、電験三種を勉強したら、

結局、フリップフロップも、HDL, PLC も同じ

748 :デフォルトの名無しさん (ワッチョイ 8792-BYkr):2017/04/20(木) 09:04:05.43 ID:SMHVPSc+0
つ 双安定マルチバイブレータ回路

749 :デフォルトの名無しさん (ラクッペ MM33-Xafy):2017/04/20(木) 09:54:19.41 ID:KEWTycAlM
>>748
ガチレズっぽい回路で興奮するよね

750 :デフォルトの名無しさん (ワッチョイ 1f8f-AhUp):2017/04/20(木) 18:10:04.32 ID:dzDslOc/0
クズ早く来い
いじめたい

751 :デフォルトの名無しさん (ワッチョイ bb35-RQEZ):2017/04/20(木) 18:11:03.22 ID:HZYJXQaH0
>>747
電験三種というのはさすがにレベルが低いのでは?(三種持ち談)

752 : ◆QZaw55cn4c (ワッチョイ bb35-RQEZ):2017/04/20(木) 18:11:37.77 ID:HZYJXQaH0
>>750
Hi !!

753 :デフォルトの名無しさん (ワッチョイ 1f8f-AhUp):2017/04/20(木) 18:15:42.57 ID:dzDslOc/0
>>752
RSFFをNANDひとつで作る技術を教えてくれ

754 :デフォルトの名無しさん (ワッチョイ 46ff-Irzi):2017/04/20(木) 20:02:02.14 ID:sXSbPPmM0
>>753
そんなことを言ったおぼえはない
そんなことを言ったというのなら,具体的に指摘してみろ

755 :デフォルトの名無しさん (ワッチョイ 1f8f-AhUp):2017/04/20(木) 21:15:56.69 ID:dzDslOc/0
おまえ誰?

756 :デフォルトの名無しさん (JP 0H7f-3eFr):2017/04/20(木) 22:43:27.28 ID:DqAtegP3H
おまえこそ誰だよ?

757 :デフォルトの名無しさん (ワッチョイ 0a76-MAHZ):2017/04/21(金) 01:05:56.51 ID:qgBOXVoB0
sqrt()関数が読み込めない・・・
math.hはincludeしたしコンパイルも-lmオプションつけたのに定義されていない参照ですってなる・・・

758 :デフォルトの名無しさん (ワッチョイ 0a76-MAHZ):2017/04/21(金) 01:07:05.17 ID:qgBOXVoB0
Cの馬鹿!嫌い!

759 :デフォルトの名無しさん (ワッチョイ 0a76-MAHZ):2017/04/21(金) 01:16:38.56 ID:qgBOXVoB0
引数がどっかでdoubleじゃなくなったっぽいな
意味わからんしね

760 :デフォルトの名無しさん (ブーイモ MMef-KrKL):2017/04/21(金) 01:25:19.12 ID:lICwVJkwM
環境とコード晒してみなよ

761 :デフォルトの名無しさん (ワッチョイ 2ec9-HIZF):2017/04/21(金) 04:27:26.07 ID:Pc56TYGS0
リファレンス本いいのないかな?
Cは20年ちょいやってるから単純に引数何だっけかなくらいを調べられればOKです
ネット使えない&スマホはロッカーに保管しなきゃならないセキュリティ厳重な職場に異動になったので

762 :デフォルトの名無しさん (アウアウオー Sac2-Xafy):2017/04/21(金) 04:42:17.36 ID:H6APCPmEa
>>757
どんな環境か知らんが、setbccがやってるような事を環境に合わせてやればええんちゃう?
って事でsetbccでググって参考にしてみて。

763 :デフォルトの名無しさん (アウアウオー Sac2-Xafy):2017/04/21(金) 04:48:10.76 ID:H6APCPmEa
>>761
技術評論社のポケットリファレンスシリーズがC99に対応してた。
言語編とライブラリ編の2冊構成。

C言語辞典だっけ?ってのも評価高かった希ガス。

アマゾンで適当にC言語と辞典とかリファレンスで検索して、お好きなのどうぞで良い気もするけど。

764 :デフォルトの名無しさん (ワッチョイ 2ec9-HIZF):2017/04/21(金) 05:01:31.36 ID:Pc56TYGS0
こんな時間にありがとー
参考にさせてもらいます

765 :デフォルトの名無しさん (ワッチョイ 8a2b-bojU):2017/04/21(金) 10:03:16.64 ID:le4iIyyX0
Ubuntu じゃないのか?

766 :デフォルトの名無しさん:2017/04/21(金) 12:03:09.74 ID:tIUIoLThO
え?

767 :デフォルトの名無しさん (ワッチョイ 1eb9-5GSV):2017/04/21(金) 14:38:54.02 ID:pJ0Q6Hqv0
>>761
その開発環境の標準のヘッダファイルの中の記述を見て済むケースもあるかもねー

768 :デフォルトの名無しさん (アウアウウー Sacf-QbKS):2017/04/21(金) 15:44:19.66 ID:Eu/IT/IZa
>>761
オライリーのCクイックリファレンス第2版とかいいかも

769 :デフォルトの名無しさん (アウアウカー Saeb-41eg):2017/04/21(金) 16:07:29.07 ID:UpWhrYhsa
>>761
オライリー本は分厚いだけあってなかなか

770 :デフォルトの名無しさん (ワッチョイ 0a76-dpSJ):2017/04/21(金) 19:43:41.98 ID:qgBOXVoB0
お言葉に甘えてコード晒します
クソ初心者なのでなんか変だったらワロてください

環境
OS: Ubuntu MATE 16.10
コンパイラ:gcc

コード
/******************************************
ex8_3.c
0(rad)から2π(rad)までのsinの表を作る
書式指定文字による表示の違いを学ぶため
2017-4-21
******************************************/
#include <stdio.h>
#include <math.h>

main()
{
double theta; //角θ
double ans; //答え
int i; //カウンタ変数

for (i = 0; i <= 20; i++) {
theta = M_PI * (double)i * 0.1;
ans = sin(theta);
printf("%14.4lf %14.4le %14.4lg\n", ans, ans, ans);
}
return 0;
}

771 :デフォルトの名無しさん (ワッチョイ 0a76-dpSJ):2017/04/21(金) 19:44:07.57 ID:qgBOXVoB0
実行結果
:~/c$ gcc -lm ex8_3.c
ex8_3.c:10:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
main()
^~~~
/tmp/ccVwCopF.o: 関数 `main' 内:
ex8_3.c:(.text+0x46): `sin' に対する定義されていない参照です
collect2: error: ld returned 1 exit status

772 :デフォルトの名無しさん (ワッチョイ bb35-RQEZ):2017/04/21(金) 19:48:35.11 ID:ltNsXQxm0
>>770
-lm

773 :デフォルトの名無しさん (ワッチョイ 0a76-MAHZ):2017/04/21(金) 19:50:41.68 ID:qgBOXVoB0
>>772
コンパイルの際の-lmオプションなら付けたつもりなんだがもしかしておれ勘違いしてるのか

774 :デフォルトの名無しさん (ワッチョイ 8a2b-bojU):2017/04/21(金) 19:58:48.49 ID:le4iIyyX0
これ↓チェックするべし
ttps://forums.ubuntulinux.jp/viewtopic.php?id=13673

775 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-HtkD):2017/04/21(金) 19:58:53.26 ID:7wWIo+lUd
-lmは最後に。

776 :デフォルトの名無しさん (ワッチョイ 0a76-MAHZ):2017/04/21(金) 20:01:58.94 ID:qgBOXVoB0
うおおおお通った!!!!!!!
ありがとう!!!!!!!!
昨日からずっと中の変数書き換えて試行錯誤してたのでくそ嬉しい

777 :デフォルトの名無しさん (エーイモ SE4a-8wDQ):2017/04/21(金) 23:04:55.94 ID:DOzdPvj8E
カレントディレクトリには100個のディレクトリとファイルが存在するんですが
d = opendir(".")で
sizeof(d)してみると8にしかなりません
100と出ません
どうやって正しくカウントできますか?

778 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-HtkD):2017/04/21(金) 23:09:30.97 ID:7wWIo+lUd
int count = 0;
while (readdir(d)) count++;
後始末も忘れずに。

779 :デフォルトの名無しさん (エーイモ SE4a-8wDQ):2017/04/21(金) 23:11:50.64 ID:DOzdPvj8E
検索しても地道にカウントする方法しかないのでこういうものなんですね
ありがとうございます

780 :デフォルトの名無しさん (ワッチョイ 2ec9-HIZF):2017/04/22(土) 01:43:00.38 ID:0WIHEwtq0
sizeof()を勘違いしてるっぽい

781 :デフォルトの名無しさん (JP 0Hc7-gHWX):2017/04/22(土) 11:15:59.67 ID:UEy9WSpBH
Cの基本理念は

君は最低限やってくれればいい
後はプログラマー(俺)が何とかする

あと sizeof はわかりにくいけど今後も C を使うならしっかり理解すべき

782 :デフォルトの名無しさん (ワッチョイ 0a1a-AhUp):2017/04/22(土) 16:39:03.18 ID:bB5FqC4/0
Cの基本理念は

頼んだことだけを確実にやれ、余計なことを勝手にやるな
俺が何を考えているかは俺の領分で、おまえはしゃしゃり出るな

あとsizeofの結果を予測しきれないバカはいじけるまで罵ってやれ

だろうjk

783 :デフォルトの名無しさん (ワッチョイ abae-PBrc):2017/04/22(土) 16:47:18.76 ID:+5rvIbLJ0
Cの基本理念は

プログラマー君は自由に書いてくれ
俺は書いたとおりに動くから

あと sizeof は size がメモリ上のサイズなことだけ理解すればいい

784 : ◆QZaw55cn4c (ワッチョイ bb35-RQEZ):2017/04/22(土) 19:13:09.95 ID:DhkWvB0D0
Cの基本理念は

俺様の指示どおりに malloc()/free() しろ、それさえ守れれば俺様が好きに使ってやる
俺様が void * といったら void * なんだ、具体的なサイズは俺様が正確に把握しているから文句をいうな

sizeof?しらん、好きにしろ、いざとなったら俺様が #define すればすむ話

785 :デフォルトの名無しさん (ワッチョイ 6aed-m8Mb):2017/04/23(日) 01:51:17.42 ID:GzSJWa/20
割り込み+最適化=バグの温床
ですか?

786 :デフォルトの名無しさん (ワッチョイ 0e70-OKBh):2017/04/23(日) 03:08:12.68 ID:H8Cvp+NU0
LSI-Cとか16ビットのCはどこ行けばいいの?

787 :デフォルトの名無しさん (ワッチョイ 8792-cWbb):2017/04/23(日) 03:45:48.05 ID:lA2wjBqB0
SDCC
http://sdcc.sourceforge.net/

788 :デフォルトの名無しさん (ワッチョイ 0a66-AhUp):2017/04/23(日) 06:53:44.96 ID:tNuy8rra0
>>786
x64環境ではWin16が使えないとか言われてるけど
x64ホストにx86ゲストを作れば、その中でWin16は普通に使える
つーことはx64では仮想86が使えないなんて嘘ってことだ

789 :デフォルトの名無しさん (ワッチョイ 8792-BYkr):2017/04/23(日) 07:58:36.97 ID:lA2wjBqB0
Windowsの16bit環境であればVC++1.52
今更わざわざ試してみる気はないけど…
http://i.imgur.com/88M1VwL.png

790 :デフォルトの名無しさん (ワッチョイ 8a3c-AsB1):2017/04/23(日) 10:10:01.48 ID:OLTDB5Ux0
>>788
そりゃ仮想マシンでよけりゃなんでもありありだわな

791 :デフォルトの名無しさん (ワッチョイ 2756-2VNN):2017/04/23(日) 11:56:01.75 ID:VmCxZvh+0
for ポインタ
near ポインタ

792 :デフォルトの名無しさん (ワッチョイ bf92-97Qr):2017/04/23(日) 12:17:30.03 ID:gAaWGuwA0
far だね

793 :デフォルトの名無しさん (ワッチョイ 7fc2-3eFr):2017/04/23(日) 12:48:36.00 ID:vYXnpSRG0
>>790
スーファミもPS2も動くしな。

794 :デフォルトの名無しさん (ワッチョイ 8792-BYkr):2017/04/23(日) 13:00:50.97 ID:lA2wjBqB0
仮想の話なのか、エミュの話なのか?
もはやC言語処理系の話ですらないな

795 :デフォルトの名無しさん (ワッチョイ 1ff9-AhUp):2017/04/25(火) 15:17:32.54 ID:KWfMbSXU0
亀レスすまそ
16bit環境なら↓で落としてvirtualboxで動かせば?
https://winworldpc.com/library/

796 :デフォルトの名無しさん (ワッチョイ 0a72-x1G/):2017/04/25(火) 22:31:34.41 ID:npds17lG0
for文のところから具体的にどうのような処理をしているプログラムか
各行ごとに教えてください。おねがいします。
#include<stdio.h>
#include<ctype.h>

int main(void){
char s[]="Spring\tSummer\tAutumn\tWinter";
int i = 0;
unsigned int value = 0,num;
int count = 0;

for(i=0;s[i] != '\0';i++){
if(isspace(s[i])){
count++;
}else if(isxdigit(s[i])){
num = toupper(s[i]) - 'A' + 10;
value *= 16;
value += num;
}
}
printf("count = %d\n",count);
printf("value = %u\n",value);
return 0;
}

797 :デフォルトの名無しさん (ワッチョイ abae-XKVh):2017/04/25(火) 22:34:12.04 ID:9EUo4uCt0
宿題は自分でやれ

798 :デフォルトの名無しさん (ワッチョイ 8a96-0iG2):2017/04/25(火) 23:24:13.67 ID:y0mNrhgR0
スペースと16進文字だね。後は自分でやりな

799 :デフォルトの名無しさん (ワッチョイ 1e1f-MAHZ):2017/04/25(火) 23:48:55.94 ID:sIXYwkrg0
isspace
isxdigit
toupper

isで始まる関数は判定を行う
toで始まる関数は文字の変換を行う
どういう判定、変換をするのかは、
今教わっている教科書を読んでみる
その上で、
toupper(s[i]) - 'A' + 10 が何をしているかが分からない時は
もう一度質問しにくるといい
今よりも多分理解してきたと思うし

800 :デフォルトの名無しさん (ワッチョイ ab75-QHks):2017/04/26(水) 04:28:10.14 ID:dix/8AKS0
// 文字列の終端まで、繰り返す
for(i=0;s[i] != '\0';i++){
if(isspace(s[i])){ // 空白なら
count++;
}else if(isxdigit(s[i])){ // 16進数字なら
// 小文字を大文字にして、A を起点にしてから、さらに10を足す
num = toupper(s[i]) - 'A' + 10;
value *= 16;
value += num;
}
}

コードを書くよりも、コードを読む方が、何倍も時間がかかるから、コードを読まないように

「仕様書 → コード」は簡単だが、「コード → 仕様書」は難しい。
なぜなら、仕様書は人間に近い表現だが、コードは機械に近い表現だから

「コード → 仕様書」は難しいから、やってはいけない

801 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-HtkD):2017/04/26(水) 04:44:29.36 ID:ZFKZUpWMd
>>800
それ、数字の場合に間違ってるよ。

802 :デフォルトの名無しさん (ブーイモ MMaa-KrKL):2017/04/26(水) 06:21:47.96 ID:/hy+QkuhM
>>800
読まずにデバッグできるかよ

803 :ich1 (アウアウウー Sacf-CGRX):2017/04/26(水) 07:31:03.11 ID:KcpaNie5a
https://goo.gl/Y4tSAe
これは嘘でしょ?
本当なら落ち込むわ。。

804 :デフォルトの名無しさん (ワッチョイ bff3-QkHB):2017/04/26(水) 09:32:03.32 ID:3mj2KO3W0
>>803
美容、健康は嘘がまかり通ってるからなぁ。
ついでに生化学、医学も同じ。

特に、統計の知識、検定力を無視した統計分析からは、おかしな結果が出てくる事がある。

例:xxx万人の調査から、yyyってのが明らかになった。

805 :デフォルトの名無しさん (ササクッテロル Sp23-EGrg):2017/04/26(水) 10:28:21.96 ID:H1kYZtUSp
>>799
>>800
796ですが解決しました。
isxdigitが具体的に分かっていませんでした。
ありがとうございます。

806 :デフォルトの名無しさん (ワッチョイ 1e1f-MAHZ):2017/04/26(水) 11:44:19.80 ID:PFRt72KQ0
確かに数字の場合の動作はおかしくなるが、
設問で与えている文字列の範囲で処理するのだから構わないでしょう

807 :デフォルトの名無しさん (ワッチョイ 1fba-AhUp):2017/04/26(水) 11:49:29.59 ID:iP2k3JrG0
職業PGなら要求にないことを勝手にやる前に疑義照会だよな

808 :デフォルトの名無しさん (ワッチョイ cfcd-MAHZ):2017/04/26(水) 18:54:57.22 ID:B4gGsvYj0
細かいこと言いだしたら A〜Zが連続している保証もないし、「- 'A'」の時点でアウトだろ
ASCIIかつ与えられた文字列だけ処理する前提で十分だろ

809 :デフォルトの名無しさん (ワッチョイ 533c-OoJT):2017/04/26(水) 20:23:55.90 ID:9Ogkzjvi0
初心者です。
二進数理解することってC言語を学ぶ上でどんなときに必要になるんですか?
わかりやすく説明いただけると助かります。

810 :デフォルトの名無しさん (ワッチョイ 1e1f-MAHZ):2017/04/26(水) 20:25:22.23 ID:PFRt72KQ0
処理がisxdigitの範囲になっているし流石にA〜Fの範囲で
連続していないという文字コード体系はないのではないかな?
そこまで想定するとしたら、加減算ではなくテーブルルックアップでやるのかな

811 :デフォルトの名無しさん (ブーイモ MMc7-lqRy):2017/04/26(水) 20:46:44.02 ID:0C8+NbMrM
>>809
C言語を「学ぶ」事に限定すれば、2進数を理解する必要は無いんじゃないかな。

812 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-HtkD):2017/04/26(水) 20:54:24.55 ID:ZFKZUpWMd
>>809
2進数一桁が1ビットに相当することは知ってるだろう。C/C++ではビット単位の演算ができる(~, |, &, ^)。
たいていのパソコンでは8ビットが1バイトだ。ほとんどの場合、charが1バイトになる。
これはsizeof(char)で確認できる。つまり、char型の変数には8桁の符号つき2進数に相当する整数を格納できる。つまり
256は、charには格納できない。

813 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-HtkD):2017/04/26(水) 21:00:01.47 ID:ZFKZUpWMd
すべてのファイルの中身は、バイト列で表現できる。ファイルにおいてはバイトがデータの最小単位だ。
整数をファイルに出力したり、ファイルから読み出すときに、バイト数は重要になる。
C/C++ではさまざまなバイトサイズの型の変数を操れる。

814 :デフォルトの名無しさん (ドコグロ MMaa-3eFr):2017/04/26(水) 21:15:32.26 ID:uVr9LBvIM
つまり、2進数の理解なんて必要ないってことだ。

815 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-HtkD):2017/04/26(水) 21:19:43.42 ID:ZFKZUpWMd
C/C++では、CPUやOSで禁止されている場合を除き、すべてのアドレス空間のメモリーに対してバイト単位でアクセスできる。
また、配列や動的メモリーというものを使えば、連続したアドレスを確保できる。
C/C++は開かれている。OSを書けるほど自由なんだ。

816 :デフォルトの名無しさん (ワッチョイ 1ee2-DniR):2017/04/26(水) 21:21:49.04 ID:j3HgHy9g0
>>795
Windows Me のスクリーンショットが全部ブルースクリーンでわろたw

817 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-HtkD):2017/04/26(水) 21:28:47.48 ID:ZFKZUpWMd
オレは実際、ReactOSというOSの開発に携わっているがね。

818 :デフォルトの名無しさん (ワッチョイ 1e1f-MAHZ):2017/04/26(水) 21:33:11.53 ID:PFRt72KQ0
国産OSと国産CPU使って、世界を制服しよう!

819 :デフォルトの名無しさん (ワッチョイ 1fba-9YAC):2017/04/26(水) 21:45:48.33 ID:iP2k3JrG0
>>815
なのに狭い村のルールを世界標準にしたがる
地球全体のカッペが次から次へとくだらん言いがかりをつけてくるよな

820 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-HtkD):2017/04/26(水) 21:47:43.68 ID:ZFKZUpWMd
>>818
投資効率、人件費、言語の壁、どれをとっても伝統的な日本企業は勝てないよ。

821 :デフォルトの名無しさん (ワッチョイ 7f54-2dAw):2017/04/26(水) 21:57:18.86 ID:H5XmXuTS0
>>820
言語の壁でかいよなぁ。

822 :デフォルトの名無しさん (ワッチョイ 7fc2-3eFr):2017/04/26(水) 22:32:23.33 ID:GreYiU3v0
C言語で通じ合う

823 :デフォルトの名無しさん (ワッチョイ 1e1f-MAHZ):2017/04/26(水) 22:35:20.83 ID:PFRt72KQ0
さしあたって変数名を漢字にしてみよう

824 :デフォルトの名無しさん (ワッチョイ 1fdf-3WpC):2017/04/26(水) 22:39:10.35 ID:5DpYjYxD0
日本が弱いのはミドルウェアじゃないの?

825 :デフォルトの名無しさん (ワッチョイ 8a96-0iG2):2017/04/26(水) 23:03:58.71 ID:u7C4hzJq0
二進数がどんな時に役立つのかという質問に自分語りは不要だけど、役立つのはビット演算するときだね。ビットシフトとか論理和とかね。別にCに限った話じゃなく、コンピュータ全般の常識だけどね

826 :デフォルトの名無しさん (ワッチョイ 8a96-0iG2):2017/04/26(水) 23:09:22.70 ID:u7C4hzJq0
>>818
Tーkernelとルネサスのチップ使えば?
世界征服はTOYOTAがやってくれてるじゃん。

827 :デフォルトの名無しさん (ワッチョイ 0a21-lqRy):2017/04/26(水) 23:23:41.08 ID:omXG80eo0
>>825
ビット演算に2進数はあまり関係ないと思うけど。

828 :デフォルトの名無しさん (ワッチョイ 1fdf-3WpC):2017/04/26(水) 23:36:29.06 ID:5DpYjYxD0
あのー、ミドルウェア・・

829 :デフォルトの名無しさん (ワッチョイ 1fdf-3WpC):2017/04/26(水) 23:40:03.45 ID:5DpYjYxD0
フレームワークって言ったらいいんですかね

830 :デフォルトの名無しさん (ワッチョイ 8a96-0iG2):2017/04/26(水) 23:45:15.67 ID:u7C4hzJq0
>>827
そう?
ビット演算するときは二進数で値を表現するけどね。
0x12って書くより00010010って書いた方がマスクしたりシフトしたりしやすくない?

831 :デフォルトの名無しさん (ワッチョイ 8a96-0iG2):2017/04/26(水) 23:59:26.50 ID:u7C4hzJq0
>>829
ミドルだろうがplatformだろうが今の日本にはITで世界をリードできるものが少ない事実だよね。
でもそれは研究費の選択と集中をしただけであって、今でも世界でも通用する技術はあるよ。ルネサスでもfelicaでも、μItronでも、すごい技術だと個人的には思うんだけどね。
世界征服できるかはビジネスと絡むから色々難しさはあるだろうけど。

832 :デフォルトの名無しさん (ワッチョイ 7b6b-L1Lv):2017/04/27(木) 00:54:47.76 ID:W/IpW5MW0
>>830
Cに2進数表現は無いでしょ?
重箱の隅の様で申し訳ないけど…

833 :デフォルトの名無しさん (ドコグロ MM7f-lWNK):2017/04/27(木) 06:44:35.17 ID:LtunFxe4M
>>830
対象によるだろ
バイト単位でマスクするなら 0x000000ff, 0x0000ff00 の方が分かりやすいし
ビット単位でも桁数が多いと16進の方が楽だし

834 :デフォルトの名無しさん (ワッチョイ 5fda-WBDQ):2017/04/27(木) 06:58:47.69 ID:oSk5cO+B0
>>820
勝ちかけたのにクリントンにやられたんだよ

835 :デフォルトの名無しさん (ワッチョイ 5bae-pkgA):2017/04/27(木) 06:59:51.73 ID:luSli2q70
>>832
gccなら使えるけどね・・・

836 :デフォルトの名無しさん (ワッチョイ 5fb6-L5sk):2017/04/27(木) 11:04:07.67 ID:XTQI/lN20
>>832
c++にはあるね

837 :デフォルトの名無しさん (ワッチョイ 6f13-P0NY):2017/04/27(木) 11:12:58.43 ID:rfmHKJdL0
C++ には最近2新表記が追加されたようだけど、C にはないの?
ずっと組み込みで使われてきてるのに、2進表記がないんだよね。

838 :デフォルトの名無しさん (JP 0H1f-1Y5j):2017/04/27(木) 11:28:48.85 ID:LJbuWXuoH
16進で十分だからなぁ
それともお前ら、16進見て2進数思い浮かばないの?

839 :デフォルトの名無しさん (ワッチョイ 7bb9-XZJj):2017/04/27(木) 12:20:53.82 ID:5fCXpicr0
グラフィックスでビットによる線パターンの指定で欲しくなるけど、
そんときはマクロ使ってる

840 :デフォルトの名無しさん (ササクッテロル Sp1f-PXQB):2017/04/27(木) 13:05:39.55 ID:ey25EfiQp
>>812
char型に符号があるかは規定されて無かったはず

841 :デフォルトの名無しさん (ワッチョイ 4ff3-Ahd3):2017/04/27(木) 14:56:03.78 ID:YeWsTkIw0
>>838
LSBとMSBはときごきごっちゃになるねん

842 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd7f-Zq4q):2017/04/27(木) 16:58:08.66 ID:Nwh2sTTfd
企業内天皇はマネジメントの敵だ。全員消し去るつもりだ。

843 :デフォルトの名無しさん (ワッチョイ dbd4-FeVf):2017/04/27(木) 19:14:54.61 ID:sfFozIq50
(・∀・)?

844 :デフォルトの名無しさん (ワッチョイ 0bc2-J0sa):2017/04/27(木) 21:00:30.16 ID:80bkT6jQ0
>>841
Largest Significant Bit
Minimum Significant Bit

ちゃんと覚えろよ。

845 :デフォルトの名無しさん (ワッチョイ 0b54-uXsk):2017/04/27(木) 21:48:08.10 ID:v1goNDLa0
>>844
お前こそ、インチキばら撒くな!

Least Significant Bit
Most Significant Bit

846 :デフォルトの名無しさん (ワッチョイ 7bab-L1Lv):2017/04/27(木) 23:13:35.02 ID:jJ44RZUT0
>>844
人が悪すぎだろw

847 :デフォルトの名無しさん (ワッチョイ cbc8-ymwg):2017/04/29(土) 05:41:03.43 ID:ccm/X45r0
C言語というか単なるアルゴリズムの質問なんですがいいですか?
A,B,Cという処理があったとしてそれぞれをある確率に従って実行したいんですが
その場合どういう書き方が一番スマートでしょうか?
それぞれまったく等しくなら単純に1/3としてrand()の結果に従えばいいだけですが
A=3,B=5,C=2みたいな形にしたい場合はどのように書くのがいいでしょうか?

848 :デフォルトの名無しさん (ワッチョイ 6f92-fb7/):2017/04/29(土) 07:24:58.66 ID:gnS1oH9P0
if(3/10 <= rand()) a();
else if(8/10 <= rand()) b();
else c();

849 :デフォルトの名無しさん (ワッチョイ 0b92-PAjp):2017/04/29(土) 07:39:57.26 ID:xw7lDITZ0
>>848
rand()を2回使うとダメ、同じ条件(変数値)を利用しないと確率が変わる
そのプログラム構造では質問者の意図から外れる
a()の確率 3/10=0.3
b()の確率 (1-0.3)*8/10=0.56
c()の確率 1-0.56=0.44

850 :デフォルトの名無しさん (ワッチョイ 0b92-PAjp):2017/04/29(土) 07:41:43.59 ID:xw7lDITZ0
訂正
c()の確率 1-0.3-0.56=0.14

851 :デフォルトの名無しさん (ワッチョイ 5f3c-lWNK):2017/04/29(土) 07:54:47.73 ID:ggsZ+ODY0
それ以前の問題だと思うが...

852 :デフォルトの名無しさん (アウアウカー Sa1f-I6Fm):2017/04/29(土) 08:09:29.95 ID:hTOUScoaa
rand で1から100までの間の数字を作って、
A 30以下だったら
B 80以下の数字だったら
C else

853 :デフォルトの名無しさん (ワッチョイ 0b92-PAjp):2017/04/29(土) 08:23:25.38 ID:xw7lDITZ0
修正するとすればこんな感じかな

if ((r = rand()) <= (double)3/10) a();
else if (r <= (double)8/10) b();
else c();

854 :デフォルトの名無しさん (ワッチョイ 8bdf-wADs):2017/04/29(土) 08:33:58.54 ID:N8p+LVXq0
10000回実行するとこんな感じです
int cnt[3] = {0};
for (int i=0; i<10000; i++) {
int prob = rand()%10;
if (prob < 3) { cnt[0]++; }
else if (prob > 4) { cnt[1]++; }
else { cnt[2]++; }
}
printf("A:%d B:%d C:%d¥n", cnt[0], cnt[1], cnt[2]);

855 :デフォルトの名無しさん (ワッチョイ 0b92-PAjp):2017/04/29(土) 08:34:00.89 ID:xw7lDITZ0
rand関数の戻り値が整数であること見落としてたわ
>>853は間違い

856 :デフォルトの名無しさん (ワッチョイ db28-1Y5j):2017/04/29(土) 09:39:55.56 ID:XzsrE9yB0
rand()%10みたいな使い方は実装によってはすごく偏るからやめた方が…

857 :デフォルトの名無しさん (アウアウウー Sa9f-YKnx):2017/04/29(土) 10:33:24.54 ID:vsTnLVa8a
メルセンヌツイスタ使いなよ

858 :デフォルトの名無しさん (ワッチョイ 5bae-pkgA):2017/04/29(土) 11:51:53.13 ID:gRCJQf6F0
>>847
普通に作ればこんな感じ

#include <stdio.h>
#include <stdlib.h>
int a,b,c;
int A=3, B=5, C=2;
sub() {
double d = drand48() * (A+B+C);
if(d < A) {
a++;
}else if(d < (A+B)) {
b++;
}else{
c++;
}
}
main(){
int i;
for(i=0; i<1000;i++) {
sub();
}
printf("A=%.3f%% B=%.3f%% C=%.3f%%\n",
a*100/1000.0, b*100/1000.0, c*100/1000.0); //=> A=30.400% B=50.000% C=19.600%
}

859 :0847 (ワッチョイ cbc8-ymwg):2017/04/29(土) 12:57:46.04 ID:ccm/X45r0
みんなありがとう。
単純に考えて例えば配列の表を作って
それに、b,b,a,c,b,b,a,c,b,a とか割り振って
rand()で適当に決定でもいいのかな?
10000回まわしたら大体a=3,b=5,c=2で収束したので。

860 :デフォルトの名無しさん (ワッチョイ 5f6b-J0sa):2017/04/29(土) 13:08:38.87 ID:4VT3hv2u0
aaabbbbbccでいいよもう。

861 :デフォルトの名無しさん (ドコグロ MM7f-lWNK):2017/04/29(土) 13:08:54.15 ID:lkMDrCJ9M
>>859
>>858 は本質的には a, a, a, b, b, b, b, b, c, c って割り振ってるのと同じだから

862 :デフォルトの名無しさん (ワッチョイ cbc8-ymwg):2017/04/29(土) 21:45:38.38 ID:ccm/X45r0
>>0861
ああ本質的には同じってわけだね。
あとは自分が表現しやすい方でいいってことかな?
要するに考え方はこれで問題ないってことで。

863 :デフォルトの名無しさん (エーイモ SE7f-cD9Q):2017/04/29(土) 22:21:08.89 ID:l/gdy+P/E
文字列を置換するための関数ってないんでしょうか?
検索しても文字列を1つずつ文字と比較して該当文字があればそこに文字を再代入するようなやり方しかヒットしないのですが

864 :デフォルトの名無しさん (アウアウウー Sa9f-YKnx):2017/04/29(土) 22:23:28.12 ID:y1rMzUYGa
そりゃ線形演算って意味では同じだがrandとdrand48じゃ全然違う
が、randの偏りが自分の中で許容範囲内なら別にどうでもいい

865 :デフォルトの名無しさん (ワッチョイ cbc8-ymwg):2017/04/29(土) 22:34:27.06 ID:ccm/X45r0
>>0864
あとはrandとdrand48の違いって事ですね。
ありがとうございます。

866 :デフォルトの名無しさん (アウアウカー Sa1f-I6Fm):2017/04/29(土) 22:42:29.06 ID:UTCBieBIa
文字列を置き換えるんだったら
strstrで文字列を探しstrlenで長さを調べその位置まで書き込む
その後に置き換える文字を書き込む
後の部分を書き込む

867 :デフォルトの名無しさん (エーイモ SE7f-cD9Q):2017/04/29(土) 23:41:31.13 ID:l/gdy+P/E
>>866
なるほど
C言語って全部自分で面倒見ないといけないんですね
phpみたいに用途ごとに関数が用意されていると思ってました
カルチャーショックを受けてるなうでうs

868 :デフォルトの名無しさん (アウアウカー Sa1f-YKnx):2017/04/29(土) 23:52:53.52 ID:87XG9qKia
PHPを基準にしてはいけない

869 :デフォルトの名無しさん (ワッチョイ 9fff-qIlJ):2017/04/30(日) 11:48:12.56 ID:Zv70jJMx0
必要なら用途ごとに関数を作るんだよ

870 :デフォルトの名無しさん (ワッチョイ 0f1f-VhBr):2017/04/30(日) 12:19:38.81 ID:jTcDgcD/0
シェルを介してPHP呼び出せば?

871 :デフォルトの名無しさん (ワッチョイ 9fff-qIlJ):2017/04/30(日) 13:53:16.93 ID:Zv70jJMx0
そのPHPに追加された便利な関数も結局はCで書かれてること多いけどなw

872 :デフォルトの名無しさん (ワッチョイ 5f86-DhJm):2017/04/30(日) 16:39:04.28 ID:Mzq9354r0
Cは必要なら配列もリストもマッブも自作する
そういう言語

873 :デフォルトの名無しさん (ワッチョイ 5f3c-lWNK):2017/04/30(日) 17:03:01.22 ID:Rh9C8HGt0
>>872
リストとマップはわかるけど配列を自作しないとダメな環境って...

874 :デフォルトの名無しさん (ワッチョイ cbcd-VhBr):2017/04/30(日) 17:11:19.52 ID:gDvuhIem0
動的配列とか連想配列とか

875 :デフォルトの名無しさん (ワッチョイ 9fff-qIlJ):2017/04/30(日) 18:03:43.77 ID:Zv70jJMx0
連想配列ってマップのことだべ
Cじゃハッシュって言うことが多いけど

876 :デフォルトの名無しさん (ワッチョイ cbcd-VhBr):2017/04/30(日) 18:15:56.86 ID:gDvuhIem0
知ってる
そういうのはマップ自作は理解的でも配列自作を理解できない>>873に言ってあげて

877 :デフォルトの名無しさん (ドコグロ MM1f-lWNK):2017/04/30(日) 18:30:40.72 ID:3ckUqlZnM
さすがにマップって書いてあるのにどや顔で連想配列とか書くのは恥ずかしすぎる w
動的配列も基本的にmalloc()で確保するだけのことでアクセスする部分はサポートされてるから自作と言うほどのものじゃないし

878 : ◆QZaw55cn4c (ワッチョイ 6fff-jU/V):2017/04/30(日) 18:44:14.05 ID:hePjQ2k/0
マップって c++/STL にもあるよね,別に連想配列と呼んでも間違いではないとおもうよ

879 :デフォルトの名無しさん (ワッチョイ 8bf9-WBDQ):2017/04/30(日) 21:33:34.74 ID:Pxnbiwmk0
>>867
その関数群とやらを提供する立場の者が使う言語なんだよ

何にもないってそこで嘆くのは愚かなことだ
だからあんたがそこに呼ばれたのに

880 :デフォルトの名無しさん (ワッチョイ 8bdf-wADs):2017/04/30(日) 21:44:44.80 ID:Lu7GCTk80
ここで言う動的配列って連結リストだろ?

881 : ◆QZaw55cn4c (ワッチョイ 6fff-jU/V):2017/04/30(日) 21:52:56.56 ID:hePjQ2k/0
>>880
案外 c++ の vector かもしれない

882 :デフォルトの名無しさん (ワッチョイ 0f1f-VhBr):2017/04/30(日) 22:03:34.03 ID:jTcDgcD/0
何か作ってよ

883 :デフォルトの名無しさん (ワッチョイ 0b92-sfYr):2017/04/30(日) 22:06:12.07 ID:TA4Hx/9q0
動的配列では要素のランダムアクセスが可能だけど連結リストでは無理
連結リストは要素の途中挿入が容易だけど動的配列では無理
両者は異なるデータ構造

884 :デフォルトの名無しさん (ワッチョイ 0f1f-VhBr):2017/05/01(月) 01:06:34.48 ID:/mCI59KR0
そうなると、動的配列の動的という意味は、
実行時に必要なサイズの配列を確保し
不要になったら解放するという意味で、
要素の追加や削除の機能は提供しないと言うことですね
これだと自作と呼ぶには物足りない気がする

885 :デフォルトの名無しさん (ワッチョイ 8bdf-wADs):2017/05/01(月) 01:35:43.07 ID:J7HugZOh0
>>884
配列じゃなくてコレクションと言わないと、Cの文脈では意味が通じないだろう
コレクションは連結リストで作るよ

886 :デフォルトの名無しさん (ワッチョイ 5f3c-lWNK):2017/05/01(月) 07:36:24.48 ID:It0eo2Yd0
>>883
べつに連結リストでもランダムアクセスはできるし動的配列でも挿入削除は可能
ただ遅いと言うだけ

887 :デフォルトの名無しさん (ワッチョイ 0b92-PAjp):2017/05/01(月) 10:30:48.16 ID:OSlA3sT+0
>>886
それ言い出すとスタックだろうがキューだろうが、実行速度は遅くメモリ効率も悪くなるけどやろうと思えば出来る
ただしそんなことすればデータ構造そのものの意味がなくなる

888 :デフォルトの名無しさん (ワッチョイ 5f3c-lWNK):2017/05/01(月) 10:38:13.10 ID:It0eo2Yd0
>>887
> それ言い出すとスタックだろうがキューだろうが、実行速度は遅くメモリ効率も悪くなるけどやろうと思えば出来る
(少なくとも単体では)はできないでしょ
やるために別に配列用意するとか言いそう w

889 :デフォルトの名無しさん (ワッチョイ 0b92-sfYr):2017/05/01(月) 10:51:55.89 ID:OSlA3sT+0
配列使わなくても同じデータ構造変数を2本用意してやり取りすれば出来るだろ
動的配列で2本の間でデータのやり取りしながら要素の挿入するのと同じ

890 :デフォルトの名無しさん (ワッチョイ 5f3c-lWNK):2017/05/01(月) 11:03:35.02 ID:It0eo2Yd0
>>889
だからそれって「単体」じゃないだろ
他になにかを使っていいならそりゃなんでもありありだよ

891 :デフォルトの名無しさん (ワッチョイ 5b3c-ZmVS):2017/05/03(水) 09:41:03.05 ID:PsoWO9250
http://i.imgur.com/dg94hoh.png
http://i.imgur.com/AZ8KgXf.png
http://i.imgur.com/kedY19y.png

この問題なんだが、ヒントの通りにやってみたが全く分からん
やっぱエスケープシーケンスとか使うの?

int main() {
int x, y;
x=0;
y=0;
for(;;) {
printf("\033[H\033[J");
print_ret(y);
print_spc(x);
printf("(V)oo(V)");

printf("x >> ");
scanf("%d", &x);
printf("y >> ");
scanf("%d", &y);
}

892 :デフォルトの名無しさん (ワッチョイ 9fff-qIlJ):2017/05/03(水) 10:31:35.23 ID:+RmyCFf30
>>891
>printf("\033[H\033[J");

これがエスケープシーケンスだろ
環境依存だよ、環境何?
もしWindowsで、
XPとかならANSI.SYS組み込みで
7以降ならansicon使っては

893 :デフォルトの名無しさん (ワッチョイ 5b3c-KGu8):2017/05/03(水) 10:48:08.22 ID:PsoWO9250
>>892
大学の環境だから詳しいことは分かんないけど、VMwareでUbuntu使ってる

894 :デフォルトの名無しさん (ワッチョイ 5f3c-lWNK):2017/05/03(水) 11:07:17.15 ID:yMHwWAzs0
>>893
> 詳しいことは分かんないけど
ならまずそこから調べろよ
お前さんの環境は俺らにはわからんのだから

895 :デフォルトの名無しさん (ワッチョイ cbcd-VhBr):2017/05/03(水) 11:13:49.44 ID:AX7ZOydL0
全く分からんというのが、何がどうわからんのか全く分からんからエスパーだけど
ANSI云々というより、改行文字の読み捨てできずにscanfで数字取れてないとかだろ

896 :デフォルトの名無しさん (ワッチョイ 9fff-qIlJ):2017/05/03(水) 11:44:23.30 ID:+RmyCFf30
>>893
んじゃターミナルは?
VT100エミュレーションするターミナル使えばいけるかもよ

897 :デフォルトの名無しさん (ワッチョイ 5f92-PAjp):2017/05/03(水) 11:58:29.06 ID:FFUwcBml0
int main() {
int x, y; // 現在座標
int fx, fy; // 目標座標
int d;
printf("x >> "); // 目標x座標設定
scanf("%d", &fx);
printf("y >> "); // 目標y座標設定
scanf("%d", &fy);
if (fx >= fy) d = 2 * fy - fx; // 初期設定
else d = 2 * fx - fy;
x = 0; y = 0;
for (;;) {
if (x > fx || y > fy) break; // 終了判定
// 描画
printf("\033[H\033[J");
print_ret(y);
print_spc(x);
printf("(V)oo(V)");
// 座標更新
if (fx != 0 && fy == 0) x++;
else if (fx == 0 && fy != 0) y++;
else if (fx >= fy) {
x++;
if (d > 0) y++, d += 2 * (fy - fx);
else d += 2 * fy;
} else {
y++;
if (d > 0) x++, d += 2 * (fx - fy);
else d += 2 * fx;
}
return 0;
}

898 :デフォルトの名無しさん (JP 0H9f-CxRO):2017/05/03(水) 16:52:46.95 ID:vae9tRPyH
>>891
キー入力は必要ないとみたがw

一定の速さで横に進むとかそういう単純な課題じゃないの
つまり画面クリア以外は特殊なこと何もしてない

899 :デフォルトの名無しさん (ワッチョイ 5bae-pkgA):2017/05/03(水) 17:21:58.99 ID:tt/7nJiL0
>>891
そのコードは fflush(stdout) しないとうまくいかない
かもしれない

900 :デフォルトの名無しさん (ワッチョイ 4b78-Ahd3):2017/05/03(水) 19:16:33.48 ID:SQdYOQFp0
おいQZ相手にされないからって宿題自演スレに逃げ込むなよ

901 : ◆QZaw55cn4c (ワッチョイ 6fff-jU/V):2017/05/03(水) 19:33:06.22 ID:L6jbQPh90
>>900
自スレがでてくるな

902 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd7f-Zq4q):2017/05/03(水) 21:13:58.28 ID:/tZ+edl3d
strcpy(buf, "abc");
strcat(buf, "def");
strcat(buf, "ghi");
↓↓↓
stpcpy(stpcpy(stpcpy(buf, "abc"), "def"), "ghi");
どうだ? 早くなっただろう。

903 :デフォルトの名無しさん (ワッチョイ 7b19-L1Lv):2017/05/03(水) 23:04:39.46 ID:DzqQO5zv0
>>902
いや、それ駄目だろ

904 :デフォルトの名無しさん (ワッチョイ 7b19-L1Lv):2017/05/03(水) 23:08:03.87 ID:DzqQO5zv0
まあ、ダメなのはstrcpy/strcat/stpcpyに限らないが…

905 :デフォルトの名無しさん (ワッチョイ e7ff-9Vi6):2017/05/04(木) 01:23:16.34 ID:hVadC+uu0
コテハンにまともな奴は居ない。
これ豆な。

906 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd52-5sSZ):2017/05/04(木) 11:42:31.79 ID:N2R6QoSBd
stpcpyが標準だったらいいのに。

907 :デフォルトの名無しさん (ワッチョイ a3cd-W+y+):2017/05/04(木) 12:17:32.80 ID:R9kS/Khl0
それはないわ

908 :897 (ワッチョイ b292-k53w):2017/05/04(木) 12:22:25.80 ID:/O9MDtVN0
>>891
>>897のコードを微修正
Windows10 の Bash on Ubuntu (gcc) で動作確認済
http://codepad.org/ZR7crWFD

909 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd52-5sSZ):2017/05/04(木) 15:04:41.90 ID:N2R6QoSBd
番兵を使った方法も標準では用意されてないんだよな。

910 :デフォルトの名無しさん (ワッチョイ 9354-suAR):2017/05/05(金) 22:42:31.86 ID:Z9Nf52YF0
>>905
コテハン叩きはクズ。
これ豆。

911 :デフォルトの名無しさん (ワッチョイ 360d-vxmx):2017/05/06(土) 07:05:38.59 ID:0i6S915U0
このスレでクズといえばアイツなんだが

912 :デフォルトの名無しさん (ワッチョイ 8378-Ogwz):2017/05/07(日) 01:32:10.00 ID:Uj6MJYMY0
QZ怒りのゴミ理論展開

913 :デフォルトの名無しさん (ワッチョイ 761f-dJIr):2017/05/07(日) 10:29:57.81 ID:RBu7YsoC0
クズ!
こいつこいつ

914 :デフォルトの名無しさん (ワッチョイ 3272-FJfx):2017/05/07(日) 14:03:52.04 ID:damFfeIe0
ファイル検索プログラムを作成してほしいです。
ファイルを検索するキーを対話形式によって読み取り、その検索キーでファイル内を検索する。
該当するキーが見つかった場合、それに対応している文字列を表示する。
「end」が入力されるまで入力を続ける。

txt内↓
abc=東京都
def=48
ghi=中野

処理内容

(終了:end)
> abc
*結果*
東京都

(終了:end)
> def
*結果*
48

(終了:end)
> end
ファイル検索を終了します

といった感じでプログラムを作成したいです。
皆様の知恵をおかしください宜しくお願いします。

915 :デフォルトの名無しさん (ワッチョイ e2ff-9WxF):2017/05/07(日) 14:15:00.61 ID:6tEBTIuo0
重複してたらどうなんの?
ハッシュ(というかディクショナリというか連想配列というか)の出番じゃないかなあ

916 :デフォルトの名無しさん (ワッチョイ e2ff-9WxF):2017/05/07(日) 14:17:32.90 ID:6tEBTIuo0
って件数にもよるか
1行ずつ=で分けてチェックするだけでいいような
SQLite組み込んで突っ込んでSQLで検索、、が応用ききそうな

917 :デフォルトの名無しさん (ワッチョイ 3272-3eBY):2017/05/07(日) 14:19:23.86 ID:damFfeIe0
ちょっとした課題なのでデータの重複などの考慮は必要ないです
入力した文字の=の後を出力するだけで大丈夫です

918 :デフォルトの名無しさん (ワッチョイ 761f-W+y+):2017/05/07(日) 14:33:36.06 ID:RBu7YsoC0
文字列末に必ず=があるなら、最初からそれも含めた検索文字列にしてしまおう

919 :デフォルトの名無しさん (ワッチョイ 726b-7yzm):2017/05/07(日) 15:04:31.69 ID:U5ljnRqU0
grep 呼べばおk

920 :デフォルトの名無しさん (ワッチョイ df92-Ogwz):2017/05/07(日) 15:10:18.09 ID:wbXNocgy0
「二つの数値のうち大きい方を返せ」という問題に
「math.hをincludeしてfmax使え」っていうようなもんだな

921 :デフォルトの名無しさん (ワッチョイ 3272-3eBY):2017/05/07(日) 15:17:51.29 ID:damFfeIe0
>>918
>>919
grep関数を使えばできるんですか?
他にも必要であろう関数を教えてください…!

922 :デフォルトの名無しさん (ワッチョイ 93c2-CFIq):2017/05/07(日) 16:07:04.02 ID:a8ky/5Ct0
自分なら
strlen()
strncmp()
strncpy()
を使うのだが講義中に解説した関数を使う必要があるんじゃないか?

923 :デフォルトの名無しさん (ワッチョイ ef00-8Vn8):2017/05/07(日) 16:55:03.76 ID:weBnw+MW0
多分scanfの使い方を学ぶ課題なんだろうね

924 :デフォルトの名無しさん (アウアウカー Sa1f-3eBY):2017/05/07(日) 16:56:36.59 ID:W+U2yKaka
>>922
会社からのちょっとした課題なのです
strncmpって比較するやつですよね?どのように使うのですか?

925 :デフォルトの名無しさん (ワッチョイ 93c2-CFIq):2017/05/07(日) 17:58:23.46 ID:a8ky/5Ct0
検索キーと=を加えたテンポラリバッファを作る
strncmp()でテンポラリバッファと入力行を検索キーの長さ+1で
比較して、一致すればその行が対象の行
後は入力行を検索キーの長さ+1からコピーするという考えなんだが
ポインタをちゃんと理解しておく必要があるよ

926 :デフォルトの名無しさん (ワッチョイ 761f-W+y+):2017/05/07(日) 18:00:15.37 ID:RBu7YsoC0
文字列見つけるだけならstrstr使えばいい

927 :デフォルトの名無しさん (ワッチョイ 761f-W+y+):2017/05/07(日) 18:03:32.33 ID:RBu7YsoC0
キー全体との一致が条件か、じゃあダメだな

928 :デフォルトの名無しさん (ワッチョイ df35-fQLC):2017/05/07(日) 18:59:32.16 ID:qkFjvNg90
具体的なコードを書くやつはいないのか?みな印象だけで手を動かさないのか?馬鹿ばかりだな

929 :デフォルトの名無しさん (ササクッテロル Spf7-A0Hw):2017/05/07(日) 19:21:42.66 ID:QHBKzIfjp
難しい問題じゃないし、ヒントも書かれてるし

930 :デフォルトの名無しさん (ワッチョイ 0fae-zTK6):2017/05/07(日) 19:23:35.71 ID:Q7lJInN40
これだけヒントがあってコードが書けないようなレベルだと
会社に迷惑かけるだけ

931 :デフォルトの名無しさん (ワッチョイ b792-uLsZ):2017/05/07(日) 22:50:01.23 ID:r5TNUCav0
>>914
https://ideone.com/Q47H1u

内容的には昔懐かしiniファイルそのものだな
特に要件にはないけど前後の余分な空白文字にも対応しておいた

932 :デフォルトの名無しさん (ワッチョイ 3272-3eBY):2017/05/07(日) 23:21:51.89 ID:damFfeIe0
>>931
現在動作確認できる環境にないのですが参考にさせていただきます
本当にありがとうございます!!

933 :デフォルトの名無しさん (ワッチョイ df92-Ogwz):2017/05/07(日) 23:54:19.19 ID:wbXNocgy0
>>930
>会社
プログラマー板へお帰りください

934 :デフォルトの名無しさん (ワッチョイ 2792-k53w):2017/05/08(月) 00:11:58.40 ID:PkDat4Yg0
>>933
>>924

935 :デフォルトの名無しさん (ワッチョイ 8378-Ogwz):2017/05/08(月) 01:41:44.81 ID:oCgp2bjt0
QZ怒りのオープンソース不向き

936 :デフォルトの名無しさん (オッペケ Srf7-9Vi6):2017/05/08(月) 09:21:00.00 ID:Qo0cge29r
>>910
よう、糞コテ

937 :デフォルトの名無しさん (スップ Sd72-Hpsk):2017/05/09(火) 10:03:17.30 ID:2qAdcsDCd
スマホからコードを打ってるので少し見づらいかもしれません
PCで実行してます
今はネット開通してないので…
文字列にaを入力したら、
出力がフフフフフフフフ装でした
正しく出力するにはどうしたらいいでしょうか?

実行環境はwindows7 visualstudio2015です

#include<stdio.h>

int main(void)
{
char str[15];

printf(“文字列を入力:“);
scanf_s("%s",str);

printf(“%s¥n,str);

return 0;
}

938 :デフォルトの名無しさん (スププ Sd52-1AEn):2017/05/09(火) 10:09:01.29 ID:O46czx6ld
え、このコードコンパイル通ったの?

939 :デフォルトの名無しさん (スップ Sd72-Hpsk):2017/05/09(火) 10:22:47.55 ID:2qAdcsDCd
>>938
スマホからなので一部抜けてるところがありますが、コンパイルエラーにはなりません

printfの""が抜けてました
すみません

パソコンでは正常に""にしてます

940 :デフォルトの名無しさん (ブーイモ MM52-+IN/):2017/05/09(火) 11:03:10.92 ID:tMOp7971M
http://www.eonet.ne.jp/~maeda/cpp/scanf.htm
ここ読んでscanf_sの使い方見比べろ

941 :デフォルトの名無しさん (ワッチョイ df92-Ogwz):2017/05/09(火) 11:08:59.65 ID:KlDRN+v00
>>939
scanf_s("%s",str);
 ↓
scanf_s("%s",&str);

にしないとダメなんじゃないの?
ウィンドウズオリジナル関数はよくわからないけど

942 :デフォルトの名無しさん (ワッチョイ df92-Ogwz):2017/05/09(火) 11:10:47.34 ID:KlDRN+v00
>>941
strは配列だから関係ないわ 失礼

943 :デフォルトの名無しさん (スップ Sd72-Hpsk):2017/05/09(火) 11:13:08.10 ID:2qAdcsDCd
>>940
scanf_sでは指定できないことがわかりました
つまり正しい文字を出力するには、どの関数を使えばいいんですか?

944 :デフォルトの名無しさん (スップ Sd72-Hpsk):2017/05/09(火) 11:35:26.95 ID:2qAdcsDCd
古いvisual studioをインストールしてscanfを使えるようにするしかないか…

945 :デフォルトの名無しさん (ワッチョイ d392-DCsn):2017/05/09(火) 11:37:20.52 ID:HY6z92Wp0
VC++でフフフというのは、お前見込みないから諦めろというMSからのメッセージ
最適な値を選んだと思う MS完璧過ぎる

946 :デフォルトの名無しさん (スップ Sd72-Hpsk):2017/05/09(火) 11:38:14.50 ID:2qAdcsDCd
>>945
馬鹿じゃねえの死ねよ

947 :デフォルトの名無しさん (スップ Sd72-Hpsk):2017/05/09(火) 11:38:39.31 ID:2qAdcsDCd
>>938
お前は揚げ足取るだけで回答できないのか?

948 :デフォルトの名無しさん (ワッチョイ efd4-VjVX):2017/05/09(火) 12:04:10.22 ID:NnNKnRo30
http://msdn.microsoft.com/ja-jp/library/w40768et.aspx

949 :デフォルトの名無しさん (ワッチョイ 3692-F92I):2017/05/09(火) 12:11:52.27 ID:c8vmdSzy0
scanf_sを使うなら
scanf_s("%s", str, 15);

scanfを使うならコードの先頭に
#define _CRT_SECURE_NO_WARNINGS
を追加

950 :デフォルトの名無しさん (ドコグロ MM8a-7yzm):2017/05/09(火) 12:14:58.83 ID:/41OERo4M
>>947 が模範回答してくれるそうです。


って、質問者かよっ!

951 :デフォルトの名無しさん (ワッチョイ fe13-yDsv):2017/05/09(火) 12:21:43.10 ID:SiZskJ920
8レスの間に何があった。

952 :デフォルトの名無しさん (ワッチョイ 3692-nELh):2017/05/09(火) 12:24:03.93 ID:aygfCVc+0
甘ったれたアホガキがキレちゃう
いつものパターンですなw

953 :デフォルトの名無しさん (スップ Sd72-Hpsk):2017/05/09(火) 12:25:54.93 ID:2qAdcsDCd
>>949
ありがとうございます
こちらで解決できました

それよりこんな大勢居て何人も見当違いの回答をしてるのにびっくり…

954 :デフォルトの名無しさん (ラクッペ MMc7-h7sT):2017/05/09(火) 12:36:33.20 ID:zY+TPebhM
>>953
最後の一行は余計だろ

955 :デフォルトの名無しさん (JP 0Hbf-+IN/):2017/05/09(火) 12:49:40.66 ID:tsTM2/FSH
>>953
見当違いは一人だけで直後に修正しているし、
他には誤った回答はない。
>>940見て解決できなかったやつの言葉とは思えんわ。

956 :デフォルトの名無しさん (ワッチョイ df92-Ogwz):2017/05/09(火) 12:49:55.91 ID:KlDRN+v00
scanf_sなんていうマイクロソフトオリジナル関数を使うほうが悪い

957 :デフォルトの名無しさん (JP 0Hbf-+IN/):2017/05/09(火) 12:51:32.53 ID:tsTM2/FSH
いや、解決する力がなかったからこその発言か。

958 :デフォルトの名無しさん (アウアウカー Sa1f-y2kh):2017/05/09(火) 12:56:38.54 ID:06qTb5T4a
調べたけど
scanf_s("%s",str,15);
じゃないの?

959 :デフォルトの名無しさん (アウアウカー Sa1f-y2kh):2017/05/09(火) 12:58:45.80 ID:06qTb5T4a
スレ更新したら既に答えは他人が出したという

960 :デフォルトの名無しさん (スップ Sd72-Hpsk):2017/05/09(火) 13:01:44.69 ID:2qAdcsDCd
>>957
解決する力がないも
普通に提示すれば良かっただけ

961 :デフォルトの名無しさん (JP 0Hbf-+IN/):2017/05/09(火) 13:31:28.26 ID:tsTM2/FSH
答えだけ欲しいです君か

962 :デフォルトの名無しさん (ワッチョイ 26f3-Ogwz):2017/05/09(火) 15:16:03.61 ID:ddG1tYvG0
>>961
2chの理念からしたら それがもっとも正しい

963 :デフォルトの名無しさん (ワッチョイ 7ba3-+lTm):2017/05/09(火) 15:56:30.59 ID:Yf2w/5aV0
>>940
gif何なんだ?

964 :デフォルトの名無しさん (スップ Sd72-Hpsk):2017/05/09(火) 18:51:34.54 ID:2qAdcsDCd
>>961
プログラムの問題なのか、考えて考えたのに出した結果が、windows側の問題だったなんて嫌です

965 :デフォルトの名無しさん (ワッチョイ ef3c-Ogwz):2017/05/09(火) 18:56:08.77 ID:w5ZG0rru0
コード記述の問題
開発環境の問題
実行環境の問題

966 :デフォルトの名無しさん (スププ Sd52-1AEn):2017/05/09(火) 19:09:33.01 ID:O46czx6ld
見にきたらなんか質問者に煽られてて草
なんやねんこいつ

967 :デフォルトの名無しさん (ワッチョイ d392-DCsn):2017/05/09(火) 19:12:52.06 ID:HY6z92Wp0
>>946
「VC++ フフフ」で検索する知恵すら無いようだな

フフフと笑われてる事が理解できないアホウは向いていない

968 :デフォルトの名無しさん (スッップ Sd52-Hpsk):2017/05/09(火) 20:01:38.08 ID:kN/vQjn6d
>>967
知恵知恵知識
お前らは貧乏気質だな

969 :デフォルトの名無しさん (ワッチョイ 93c2-CFIq):2017/05/09(火) 22:09:42.09 ID:tKB1hTE60
普段VC++使わないからフフフの意味が分かんなかったわい

970 :デフォルトの名無しさん (ワッチョイ b2cf-DCsn):2017/05/10(水) 00:43:11.36 ID:ebkkD2410
はい

971 :デフォルトの名無しさん (ワッチョイ 8378-Ogwz):2017/05/10(水) 08:22:04.87 ID:usWRbfF80
QZ怒りのセンスなく発狂

972 :デフォルトの名無しさん (ワッチョイ b3df-LeL1):2017/05/10(水) 08:48:27.17 ID:LExzGfw50
>デバッグモードではコンパイラが意識的にスタック領域を「フフフ」で初期化しています

なんじゃそりゃw

973 :デフォルトの名無しさん (ワッチョイ 3692-k53w):2017/05/10(水) 09:34:07.86 ID:lPP7HFdc0
http://i.imgur.com/CSHtieT.png

974 :デフォルトの名無しさん (ワッチョイ fe13-yDsv):2017/05/10(水) 09:48:20.49 ID:qT2fTRM/0
>>966
いや、お前はお前で、スマホでの入力だという事情を考慮できない
アスペ的な部分があるよ。

975 :デフォルトの名無しさん (ワッチョイ d392-DCsn):2017/05/10(水) 09:57:49.19 ID:qAQ0xF3K0
>>974
>>938 ID:O46czx6ld
には>>939 ID:2qAdcsDCdがついているが、煽られてはいない 他のレスの事だな

読解力が欠如してるくせに余計な事を言わなくても良い 黙ってろ

976 :デフォルトの名無しさん (ドコグロ MM5f-10U+):2017/05/10(水) 14:25:12.67 ID:zpOm/DuMM
>>958
sizeof 使おうよ...

977 :デフォルトの名無しさん (ワッチョイ 26f3-Ogwz):2017/05/10(水) 15:22:38.88 ID:qM9q6g5B0
>>972
0xCC で埋めてるってことだよ・・・

978 :デフォルトの名無しさん (ワッチョイ e2ff-9WxF):2017/05/10(水) 15:25:38.02 ID:iXFIeW7Q0
INT 3
デバッグ中にもし飛び込んでもブレークポイントになるなw

979 :デフォルトの名無しさん (ワッチョイ 7ba3-+lTm):2017/05/10(水) 17:39:51.09 ID:S7L0YFdN0
0xcd 0xdd 0xfdも知らないのかな

980 :デフォルトの名無しさん (ワッチョイ 3254-yYXR):2017/05/10(水) 20:44:03.27 ID:uGLw5S9o0
>>973
これ一度"フフフノフフフ"になってた

981 :デフォルトの名無しさん (ワッチョイ b792-uLsZ):2017/05/10(水) 21:54:22.72 ID:YxExsWj+0
つぎたてます

982 :デフォルトの名無しさん (ワッチョイ b792-uLsZ):2017/05/10(水) 21:57:20.30 ID:YxExsWj+0
ダメだったので誰かおねがい

C言語なら俺に聞け 140

!extend:checked:vvvvv:1000:512
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/


http://echo.2ch.net/test/read.cgi/tech/1487757355/
http://www.geocities.jp/c_cpp_cs/about_c/

983 :デフォルトの名無しさん (ワッチョイ 12dd-7yzm):2017/05/10(水) 22:55:06.31 ID:1kK8mKpv0


984 :デフォルトの名無しさん (ワッチョイ e33c-57qA):2017/05/11(木) 17:40:57.20 ID:WXzKqxW60
保守

985 :デフォルトの名無しさん (ドコグロ MM67-Ec/g):2017/05/11(木) 18:00:36.84 ID:/i9HNzW4M
さらばC言語

986 :デフォルトの名無しさん (ワッチョイ 7f2b-MvQJ):2017/05/11(木) 19:20:00.67 ID:TUOp+w7D0
C言語 新たなる旅立ち

987 :デフォルトの名無しさん (ワッチョイ c300-yCMP):2017/05/11(木) 19:20:49.50 ID:Nj7VkpBl0
C言語は永久にC言語だ

988 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd9f-TJ40):2017/05/11(木) 19:22:44.46 ID:4HIXay57d
more secure C

989 :デフォルトの名無しさん (ワッチョイ 7fb6-9BLN):2017/05/11(木) 19:33:29.40 ID:xvVNdJar0


990 :デフォルトの名無しさん (ワッチョイ 7fb6-9BLN):2017/05/11(木) 19:33:58.02 ID:xvVNdJar0
たて

991 :デフォルトの名無しさん (ワッチョイ 7f3c-lnKX):2017/05/11(木) 20:32:54.88 ID:r6M771XX0
保守

992 :デフォルトの名無しさん (ワッチョイ 83c8-SU9n):2017/05/11(木) 20:35:43.56 ID:Na8DjsmX0
QZ怒りの老害

993 :デフォルトの名無しさん (ワッチョイ 6f8c-8ulf):2017/05/11(木) 22:20:22.24 ID:cn414UR90
C言語なら俺に聞け 139 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1487757355/

994 :デフォルトの名無しさん (ワッチョイ 7fb6-9BLN):2017/05/12(金) 06:05:17.73 ID:7AnEAB/f0
うめ

995 :デフォルトの名無しさん (ワッチョイ 43c3-BCXR):2017/05/12(金) 06:21:00.67 ID:AW7yU3et0
新スレッドは140じゃろ。

http://echo.2ch.net/test/read.cgi/tech/1494508803/

996 :デフォルトの名無しさん (ワンミングク MM1f-9BLN):2017/05/12(金) 08:55:07.02 ID:pUdGYSS/M
うめうめ

997 :デフォルトの名無しさん (ワッチョイ ff78-YrL9):2017/05/12(金) 09:00:46.28 ID:CgSVsGuo0
>>995


998 :片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd9f-TJ40):2017/05/12(金) 20:10:53.61 ID:r6F8dCD7d
埋めよ

999 :デフォルトの名無しさん (ワッチョイ 83c8-SU9n):2017/05/12(金) 20:50:51.95 ID:UkU1KlKv0
QZ怒りの

1000 :デフォルトの名無しさん (ワッチョイ 437b-SU9n):2017/05/12(金) 20:53:26.61 ID:AguJvwAF0
増やせよ

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 79日 1時間 57分 32秒

1002 :1002:Over 1000 Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/

▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php

275 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)