17/05/11 22:20:03.99 cn414UR90.net
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
URLリンク(paiza.io)
URLリンク(ideone.com)
URLリンク(codepad.org)
C11
URLリンク(www.open-std.org)
C99
URLリンク(www.open-std.org)
URLリンク(kikakurui.com)
C FAQ 日本語訳
URLリンク(www.kouno.jp)
JPCERT C コーディングスタンダード
URLリンク(www.jpcert.or.jp)
前
スレリンク(tech板)
URLリンク(www.geocities.jp)
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2:デフォルトの名無しさん
17/05/12 13:08:15.72 //5I1UQ2M.net
イラネ
3:デフォルトの名無しさん
17/05/12 14:58:26.42 IiKpnLAId.net
C言語からVBAで作ったエクセルマクロって実行できないの?
4:デフォルトの名無しさん
17/05/12 16:05:36.32 UWkhiPx90.net
C99からif,for,whileの後に続く括弧の中がブロックのなかという
認識になったらしいんですけど、for以外でどうやって
その中で変数を宣言できるというんですか?
だったらforだけブロックの中っていうことでいいんじゃないんですか?
5:デフォルトの名無しさん
17/05/12 16:31:31.05 js7UY7om0.net
if ( char * p = malloc( N ) )
こういうのとか?
6:デフォルトの名無しさん
17/05/12 18:03:15.98 UWkhiPx90.net
それな
7:デフォルトの名無しさん
17/05/12 22:01:43.38 HEUwhpUy0.net
C言語でエクセルのVBAマクロの実行できないの?
8:片山博文MZ
17/05/12 22:06:16.73 r6F8dCD7d.net
URLリンク(www.atmarkit.co.jp)
9:デフォルトの名無しさん
17/05/12 22:08:09.17 HEUwhpUy0.net
C++かぁ
10:デフォルトの名無しさん
17/05/12 22:44:50.71 y9SJMwIK0.net
>>7
VBA マクロのインタプリター書けば良くね?Cで。
11:デフォルトの名無しさん
17/05/12 23:06:05.96 UkU1KlKv0.net
おいQZゴミコードをここで書くなよ
ウンコードに投稿しろよ
12:デフォルトの名無しさん
17/05/12 23:07:33.76 UkU1KlKv0.net
おいQZ
おまえってやればやるほど洗練された糞さを放ったコードが出来上がるから
自覚しとけ
13:デフォルトの名無しさん
17/05/12 23:09:00.10 UkU1KlKv0.net
おいQZいろんなC系スレでクソコードばらまくのやめろよ
今時Cでクソなコード書いてるのはおまえしかいない
14:デフォルトの名無しさん
17/05/13 12:44:34.80 vKP2EClq0.net
printf("%s", string);
ではなくて
printf(string);
でエラーが出ないようにするにはどうしたらいいですか?
15:デフォルトの名無しさん
17/05/13 13:06:30.63 7e4RDEpq0.net
#define printf(string) printf("%s", string)
とする
16:デフォルトの名無しさん
17/05/13 13:47:03.32 7pndE6Ym0.net
stringがchar*なら、それでエラーは出ない
キミが間違っとる
17:デフォルトの名無しさん
17/05/13 14:03:34.24 u94khtn50.net
コンパイラーによってはセキュリティ警告でも出るんだろうな
18:デフォルトの名無しさん
17/05/13 14:12:40.14 m48zL+ZP0.net
>>16
print「f」なのにフォーマットしないってなんか気持ち悪いな
19:デフォルトの名無しさん
17/05/13 14:13:58.16 RjzTmCQE0.net
エラーがコンパイル時なのか実行時なのか
20:デフォルトの名無しさん
17/05/13 14:20:39.18 m48zL+ZP0.net
gcc使っているならコンパイル時のオプションに-wでコンパイルできたわ
21:デフォルトの名無しさん
17/05/13 14:51:14.61 7U8nUyJbM.net
>>18
printf("Hello, world!/n”);
気持ち悪いか?
22:デフォルトの名無しさん
17/05/13 14:58:27.01 Swj/Rgps0.net
>>21
馬鹿
23:デフォルトの名無しさん
17/05/13 15:42:18.61 zKUmpFvI0.net
string の中身に %s とか %d とかはいってると あわわわ
24:デフォルトの名無しさん
17/05/13 15:42:59.20 VT1sIlGJ0.net
ヌルポン渡すと落ちるぞ
25:デフォルトの名無しさん
17/05/13 15:55:06.50 1Sz8mIFNa.net
そもそも出ないだろw
26:デフォルトの名無しさん
17/05/13 22:21:45.16 IUtkDsju0.net
stringがワイド文字列なら警告くらい出るだろ
27:デフォルトの名無しさん
17/05/13 22:24:52.04 7pndE6Ym0.net
>>23
ああ、そう言う事なら、静的な引数チェクが不可能な文字列は警告だすのもありかも知れんな
実例は見た事ないが
28:デフォルトの名無しさん
17/05/13 23:37:01.87 Bvln+1PG0.net
format string attackって攻撃が実在するからな
C11で%nが廃止されたのも、それが原因だし
29:デフォルトの名無しさん
17/05/14 03:33:24.24 AUHwE8VO0.net
>>27
どのコンパイラもオプションつ
30:ければ動的に決まる文字列は警告出すぞ 遅い上に危険で利点がない %nが消えてもメモリ内を読まれるのは脆弱性
31:デフォルトの名無しさん
17/05/14 03:39:55.42 RBSPlVIO0.net
やりたいことって、putsではダメなのかな?
32:デフォルトの名無しさん
17/05/14 04:15:58.62 c1+aTdNX0.net
プッツ!
33:デフォルトの名無しさん
17/05/14 10:30:41.42 QnhMTTR+0.net
a+=1;
と
a++;
って同じ意味ですか?
34:デフォルトの名無しさん
17/05/14 10:51:06.70 44d8vf440.net
>>32
a+=1 と ++a の評価は同じ
a+=1 と a++ の評価は違う
評価後の値はどちらも同じ
#include <stdio.h>
int main(void)
{
int a;
a = 0;
printf("%d\n", a); // a=0
printf("%d\n", a += 1); // a=1 評価結果はインクリメント後の値
printf("%d\n\n", a); //a=1
a = 0;
printf("%d\n", a); // a=0
printf("%d\n", ++a); // a=1 評価結果はインクリメント後の値
printf("%d\n\n", a); // a=1
a = 0;
printf("%d\n", a); // a=0
printf("%d\n", a++); // a=0 評価結果はインクリメント前の値
printf("%d\n\n", a); // a=1
return 0;
}
35:デフォルトの名無しさん
17/05/15 10:50:08.41 ITGYMTaF0.net
int a=1;
a = a+++a;
これ、たいていの環境で 3 になるみたいだけど
内部ではどっちに構文解析されてるの?
36:デフォルトの名無しさん
17/05/15 11:49:32.39 8jcxUI920.net
>>34
a=b++ + c;
37:デフォルトの名無しさん
17/05/15 11:56:31.63 Z3hdp57V0.net
>>34
後置インクリメント演算子(a++)は+演算子や前置インクリメント演算子(++a)より優先順位高い
38:デフォルトの名無しさん
17/05/15 12:12:51.85 Vosr5hkL0.net
>>34
VC++の場合
a = (a + a)++;
GCCの場合
a = ++(a + a);
int a = 10;
printf("%d\n", a); // a=10
printf("%d\n", a=a+++a); // a=20 (VC++の場合)、a=21 (GCCの場合)
printf("%d\n\n", a); // a=21
39:デフォルトの名無しさん
17/05/15 12:55:00.64 FMK+ZQcW0.net
右辺値のインクリメントが出鱈目過ぎる
40:デフォルトの名無しさん
17/05/15 13:04:41.31 m4iBjxKl0.net
>>36
演算子の優先順位と構文解析は関係ねーよ
前方から最長になるように字句解釈するから、 a=a+++aは、a = a ++ + aになる
41:デフォルトの名無しさん
17/05/15 13:26:43.15 Z3hdp57V0.net
>>39
えっ? 関係ないの?
42:デフォルトの名無しさん
17/05/15 14:05:11.81 KBSLJwGw0.net
>>37
// GCCの場合
a=10;
printf("1: %d\n", a = a++ + a); // a=21
a=10;
printf("2: %d\n", a = ++a + a); // a=22
a=10;
printf("3: %d\n", a = a + a++); // a=21
a=10;
printf("4: %d\n", a = a + ++a); // a=22
1と2は予想通りだけど3と4は予想が外れた。
GCCは素直に前方から評価すると思っていたが、
インクリメント演算がある項を先に評価するようだ。
43:デフォルトの名無しさん
17/05/15 14:08:51.26 ITGYMTaF0.net
>>39
なるほど先頭から最長一致か ありがとう
a = a+++a; // 21
a = a+ ++a; // 22
a = a++ +a; // 21
gccだとこんな感じになったわ
44:デフォルトの名無しさん
17/05/15 14:28:56.88 m4iBjxKl0.net
>>40
関係ない
演算子の優先順位はトークンが確定した後の話
構文解釈とは一切関係ない
45:デフォルトの名無しさん
17/05/15 14:50:03.73 k1YI7zCW0.net
知ったかぶりしないで
副作用完了点を検索してからレスしようね
46:デフォルトの名無しさん
17/05/15 15:08:26.82 m4iBjxKl0.net
さすがに、a=a+++a が未定義なことぐらいわかってるだろ
そのうえで、どう動作してるのだろうかって話じゃねーの?
47:デフォルトの名無しさん
17/05/15 15:17:45.01 ugjsGD9A0.net
どう字句解析されるのかって話だろ
48:デフォルトの名無しさん
17/05/15 15:41:11.64 +h60b5kha.net
初めから()で囲んで優先つけた方がいいね
49:デフォルトの名無しさん
17/05/15 15:48:46.87 Vosr5hkL0.net
VC++での逆アセンブルコード (Visual Studio 2017 debugモード)
// a=a++
a = 10;
004037DE mov dword ptr [a],0Ah
a = a++;
004037E5 mov eax,dword ptr [a]
004037E8 mov dword ptr [a],eax
004037EB mov ecx,dword ptr [a]
004037EE add ecx,1
004037F1 mov dword ptr [a],ecx
// a=++a
a = 10;
004037F4 mov dword ptr [a],0Ah
a = ++a;
004037FB mov eax,dword ptr [a]
004037FE add eax,1
00403801 mov dword ptr [a],eax
00403804 mov ecx,dword ptr [a]
00403807 mov dword ptr [a],ecx
// a = a+++a
a = 10;
0040380A mov dword ptr [a],0Ah
a = a+++a;
00403811 mov eax,dword ptr [a] // aの値と
00403814 add eax,dword ptr [a] // aの値を加算して (a+a)
00403817 mov dword ptr [a],eax // 一時保存(評価)して
0040381A mov ecx,dword ptr [a] // 評価結果に対して
0040381D add ecx,1 // 1を加算して (a+a)++
00403820 mov dword ptr [a],ecx // 最終結果をaに代入
50:デフォルトの名無しさん
17/05/15 16:01:51.35 Vosr5hkL0.net
GCCは逆コンパイラが使える環境を持っていないので誰か頼みます
51:デフォルトの名無しさん
17/05/15 16:17:06.14 vCh6HJnv0.net
-S付けるとアセンブラソース出力してくれるよ
52:デフォルトの名無しさん
17/05/15 16:17:38.49 k1YI7zCW0.net
>>45
未定義とされているものの実装を調べる意味は一片たりとも無い
b = a+++a; ならば文法どおりに解釈されてなければ、コンパイラのバグなので検証する意味はある
53:デフォルトの名無しさん
17/05/15 16:26:58.46 K4VlRHcT0.net
>>49
URLリンク(godbolt.org)
54:デフォルトの名無しさん
17/05/15 16:38:44.35 K4VlRHcT0.net
>>51
a+++a;は未定義動作でしょ?
55:デフォルトの名無しさん
17/05/15 16:55:22.96 m4iBjxKl0.net
>>53
そこだけで未定義
2つ目のaを別の変数に退避し上で加算しないとアウト
56:デフォルトの名無しさん
17/05/15 17:14:07.00 Vosr5hkL0.net
>>52を利用して逆アセンブルコードを調べてみた
スタックを使って細工するところとかコードの展開内容としては結構トリッキーだけど
GCCの場合のa=a+++a のイメージとしては
{
tmp = a, a=(++a) + tmp;
}
といった感じかな
>>54の言う通り内部的には別変数を利用しているとも言える
逆アセンブルコード
push rbp
mov rdp, rsp
a = 10;
mov DWORD PTR [rbp-4], 10
a = a+++a;
mov eax, DWORD PTR [rbp-4] // aの値に
lea edx, [rax+1]
// 1を加算して
mov DWORD PTR [rbp-4], edx // aに保存
add DWORD PTR [rbp-4], eax // aに元のaの値を加算
pop rbp
57:デフォルトの名無しさん
17/05/15 17:17:38.16 Vosr5hkL0.net
レイアウト崩れたので修正
逆アセンブルコード
push rbp
mov rdp, rsp
a = 10;
mov DWORD PTR [rbp-4], 10
a = a+++a;
mov eax, DWORD PTR [rbp-4] // aの値に
lea edx, [rax+1] // 1を加算して
mov DWORD PTR [rbp-4], edx // aに保存
add DWORD PTR [rbp-4], eax // aに元のaの値を加算
pop rbp
58:デフォルトの名無しさん
17/05/15 17:33:28.21 FMK+ZQcW0.net
無能な働き者
59:デフォルトの名無しさん
17/05/15 18:48:03.94 k1YI7zCW0.net
>>53
ああすまん、そのとおりだね
なに寝ぼけてたんだろう
60:デフォルトの名無しさん
17/05/15 20:47:42.32 l6TF2MzAM.net
>>33
ありがとうございます!
すっきりしました!
61:デフォルトの名無しさん
17/05/15 21:40:37.62 ITGYMTaF0.net
>>53
b = a++ +a ならギリギリセーフかなーと思ってた。
これもアウトなんか
62:デフォルトの名無しさん
17/05/15 22:35:38.71 m4iBjxKl0.net
ざっくりだけど
C99以前だとaの変更とその変更と関係ないaの評価を行っているからアウト
C11だとa++でのaへの1加算と、2つ目のaの評価に順序性がないからアウト
63:デフォルトの名無しさん
17/05/15 22:43:52.12 KR9fXitY0.net
おいQZお前はC向いてないからやめろ
このスレを荒らすなクソマニア
64:デフォルトの名無しさん
17/05/16 02:46:28.46 8VX1hNny0.net
a = f(x) + g(x);
とした場合、f(x)とg(x)の関数呼び出しで
どちらが先になるのかは未定義ってこと?
65:デフォルトの名無しさん
17/05/16 03:27:48.17 lv7gi33v0.net
>>63
関数呼び出しの順序の問題ではなくて、インクリメント演算子を自分自身に適用した場合の副作用の問題
f(x)の副作用としてg(x)の状態を変化させ、g(x)の副作用としてf(x)の状態を変化させるような場合、(f(x) + g(x))の評価は未定義ということ
66:デフォルトの名無しさん
17/05/16 03:34:54.85 lv7gi33v0.net
「インクリメント演算子を自分自身に適用した場合」は説明不足だった
「同じ式の中でインクリメント演算子を自分自身に繰り返し適用した場合」の方が適切だった
67:デフォルトの名無しさん
17/05/16 04:11:10.64 8VX1hNny0.net
回答ありがとう
68:デフォルトの名無しさん
17/05/16 12:24:07.64 hxKx6VJm0.net
C言語でVBA
69:デフォルトの名無しさん
17/05/16 14:51:29.95 uP7i9rQE0.net
>>63
a++ + a
右のaがどうなるか考えてみ
70:デフォルトの名無しさん
17/05/16 18:02:14.83 9umlqZ68M.net
a=a+++++aはエラーなの?
71:デフォルトの名無しさん
17/05/16 18:26:04.60 j2WgBIQo0.net
大学の講義でc言語やってるのですが、行き詰まってしまったので質問させていただきます
分割コンパイルしているのですが、全部書いてあります
コメント文で分割コンパイルの区切りを表しています
URLリンク(codepad.org)
これによって表示されるものを左に90度回転させたいのですが条件としてmain関数しかいじってはいけないというものがあります
2次元配列でいけるのかと思ったのですが、どうしたらいいかわからず手詰まりです
よろしくお願いします
72:デフォルトの名無しさん
17/05/16 18:28:00.76 7Qb0OzW/0.net
宿題スレにいけ
73:デフォルトの名無しさん
17/05/16 19:46:46.04 GFMW00ds0.net
a = a----a;
ってコンパイルできないのね
a = a-- - -a;
にすればコンパイルはできるが
74:デフォルトの名無しさん
17/05/16 20:26:25.96 fevd2QwgM.net
>>69
エラーになるかどうかもわからない
それが未定義動作
75:デフォルトの名無しさん
17/05/16 20:48:15.67 8VX1hNny0.net
>>64 >>68
レスもらっておいて何ですが、やっぱりなんか引っ掛かってたので自分でも調べてみました
URLリンク(www.soum.co.jp)
URLリンク(mattn.kaoriya.net)
あたりを読んで理解した気になりました
C言語テラコワス
76:デフォルトの名無しさん
17/05/16 21:05:08.54 j2WgBIQo0.net
>>71
すみません宿題スレとはどこでしょうか
77:デフォルトの名無しさん
17/05/16 21:41:19.00 9umlqZ68M.net
>>74
問題はグローバル変数を使うからじゃないの?
78:デフォルトの名無しさん
17/05/16 22:17:40.57 Ag35s8j3D.net
>>68
swiftだとa++は廃止された
分かりやすく書くってこと
79:デフォルトの名無しさん
17/05/16 22:33:27.46 Slyc8zwMd.net
URLリンク(d.hatena.ne.jp)
これ真似たけどExcel開かない
80:デフォルトの名無しさん
17/05/16 22:33:48.78 Slyc8zwMd.net
あ、間違えましたすみません
81:デフォルトの名無しさん
17/05/16 23:02:13.38 OtKe4ieo0.net
わからなかったの間違えだろ
正直に言えよ無職無能QZ
82:デフォルトの名無しさん
17/05/16 23:06:19.27 OtKe4ieo0.net
QZ怒りの他スレ進出ww
83:デフォルトの名無しさん
17/05/16 23:07:01.08 OtKe4ieo0.net
宿題スレはどこでしょうかw
おいQZこのスレまで宿題スレ化しようと企んでるのかよ
84:デフォルトの名無しさん
17/05/16 23:09:40.58 OtKe4ieo0.net
最近の宿題スレで質問者演じてるやつと口調が見事に一致
85:デフォルトの名無しさん
17/05/16 23:17:13.00 f+nf4d790.net
インクリメントが無い言語はクソ
86:デフォルトの名無しさん
17/05/16 23:18:04.22 OtKe4ieo0.net
QZ怒りの負け惜しみ発言開始
87:デフォルトの名無しさん
17/05/16 23:25:44.32 OtKe4ieo0.net
QZ怒りのC絶賛
88:デフォルトの名無しさん
17/05/16 23:56:41.57 hxKx6VJm0.net
QZってなに
89:デフォルトの名無しさん
17/05/17 00:12:22.70 trROhyaD0.net
QZ怒りの自己紹介
90:デフォルトの名無しさん
17/05/17 00:16:07.98 t3IXdrQL0.net
C言語って、機械に分かりやすい言語なんじゃないかな
91:デフォルトの名無しさん
17/05/17 00:34:30.07 Y+yL8XVsM.net
何をいまさら
92:デフォルトの名無しさん
17/05/17 06:54:51.29 wJf0VzTx0.net
>>87
エディタじゃね?
93:デフォルトの名無しさん
17/05/17 11:14:31.02 trROhyaD0.net
QZ怒りのエディタ自慢
94:デフォルトの名無しさん
17/05/17 16:12:39.52 IVbqBIIG6.net
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main()
{
int i, j, a; //int 整数
FILE *fout; //FILE ファイルの管理用
errno_t error;
if ((error = fopen_s(&fout, "output.txt", "w")) != 0){
printf(" エラー:ファイルの出力ができませんa \n");
exit(1);
}
a = 0;
for (i = 0; i<5; i++){
for (j = 0; j<10; j++){
a = a + 1;
fprintf_s(fout, "%d ", a);
}
fprintf_s(fout, "\n");
}
fclose(fout);
}
これにIf文使って
0 0 0 0 0 0 0 0 0 0
0 0 0 14 15 16 17 0 0 0
0 0 0 24 25 26 27 0 0 0
0 0 0 34 35 36 37 0 0 0
0 0 0 0 0 0 0 0 0 0
にするにはどうすればいいの?おしえてエロい人
95:デフォルトの名無しさん
17/05/17 16:18:48.87 bdvqA1ry0.net
>>93
なかなか良い問題だな。大学生?
96:デフォルトの名無しさん
17/05/17 16:23:04.39 se1pH3p/0.net
a = a + 1;
if (1 <= i && i <= 3 && 3 <= j && j <= 6) fprintf_s(fout, "%d ", a);
else fprintf_s(fout, "0 ");
97:デフォルトの名無しさん
17/05/17 16:24:58.51 IVbqBIIG6.net
>>94
大学生です。
指定場所以外も数字が出てしまいます
98:デフォルトの名無しさん
17/05/17 16:32:34.86 t3IXdrQL0.net
if (4 <= (a % 10) && (a % 10) <= 7) printf("%d ", a);
else printf("%d ", 0);
99:デフォルトの名無しさん
17/05/17 16:35:45.80 smeqz8ba0.net
>>93
エロい人への質問は板違い
URLリンク(phoebe.bbspink.com)
へ移動しなさい
100:デフォルトの名無しさん
17/05/17 16:45:05.44 IVbqBIIG6.net
>>95
ベン図的な考え方ですか......!!
ありがとうございます。
>>97
なぜか0~50全て表示されてしまってます!
>>98
エロ魔人になるにはまだ早いです!
101:デフォルトの名無しさん
17/05/17 16:47:44.21 smeqz8ba0.net
>>99
キミがなるんじゃ無い
キミが質問したがってるエロい人の住処に移れと言っている
102:デフォルトの名無しさん
17/05/17 18:12:03.01 sXGKWmUcM.net
>>93
どうでもいいけどコメント酷すぎ
> int i, j, a; //int 整数
> FILE *fout; //FILE ファイルの管理用
103:デフォルトの名無しさん
17/05/17 18:52:23.54 81y1dPE2M.net
初心者にありがちな無意味なコメントだね
104:デフォルトの名無しさん
17/05/17 19:04:10.40 +kjRc1QwH.net
各行コメントつけろという教育の成果
105:デフォルトの名無しさん
17/05/17 22:14:49.58 trROhyaD0.net
QZ怒りのクソコメント
106:デフォルトの名無しさん
17/05/18 06:55:44.12 Zs9E6Q4t0.net
俺なら条件部分は↓のように書くかな。
if ((a >= 10) && (a < 40) && ((a % 10) >= 4) && ((a % 10) <= 7)) {
「表示する値、表示しない値を条件に判断」という雰囲気。
普段は表組みの行と列の番号(変数i, j)で制御するけど、
この問題だとaの1の桁の値とjの値が一致しないから何やら座りが悪い感じ。
a = 10*i + j + 1;
みたいに「行と列の表示位置から表示すべき値を算出」なら馴染むんだけど。
107:デフォルトの名無しさん
17/05/18 09:33:34.39 9pl130wuM.net
if(i==0&&j==9) printf(" 0¥n);
else if(i==1&&j==3) printf(" 14");
else if(i==1&&j==4) printf(" 15");
:
else printf(" 0");
108:デフォルトの名無しさん
17/05/18 12:47:56.59 Zif2rhHOM.net
>>105
> if ((a >= 10) && (a < 40) && ((a % 10) >= 4) && ((a % 10) <= 7)) {
なんかちょっとイラッとくる
if ((10 <= a) && (a < 40) && (4 <= (a % 10)) && ((a % 10) <= 7)) {
の方が分かりやすいじゃん
って思うのは俺だけかな
まあそもそも >>95 でいいと思うが
109:デフォルトの名無しさん
17/05/18 12:52:54.23 Bcm8Uos60.net
数直線的な並べかたやね
a が10~40 を 10 <= a <= 40 と思考して
その並びを Cの文法に適合させて 10 <= a && a <= 40
110:デフォルトの名無しさん
17/05/18 20:50:09.48 V+1hCye70.net
>>104
森にお帰り
111:デフォルトの名無しさん
17/05/18 21:51:10.32 pFlTikPN0.net
int 変数 = 0;
do{
if(変数 != 0) printf("0~100違う");
scanf("%d",&変数);
} while (変数 < 0 || 変数 > 100);
みたいな感じのやつどういう仕組み?
112:デフォルトの名無しさん
17/05/19 08:23:29.86 /7Hxktnz0.net
if (10 <= a && a < 40 && 4 <= a % 10 && a % 10 <= 7) {
ほらすっきり。
113:デフォルトの名無しさん
17/05/19 10:32:30.55 xPzfUm9BM.net
if (a/10&3&&a%10&4) { ...
114:デフォルトの名無しさん
17/05/19 13:22:27.31 /7Hxktnz0.net
10で剰余したものをビットマスクって、おまえ何屋?
ビット演算子はB言語の名残で変な結合するから気をつけたほうがいいが
その話と>>111のコードは関係ないぞ
115:デフォルトの名無しさん
17/05/19 15:12:35.10 xPzfUm9BM.net
悔しかったらもっと短くしてみ。
116:デフォルトの名無しさん
17/05/19 15:26:11.54 nQP05M7h0.net
>>110
(1) 入力
(2) 判定
範囲外の場合、警告表示して (1)に戻る
を並べ替えたもの
(1) 条件付(初回以外)は 警告表示
(2) 入力
(3) 範囲外なら (1)へ戻る
117:デフォルトの名無しさん
17/05/19 15:34:27.30 7FyDjLQd0.net
WannaCryの裏で「駐禁報告書」メール21万件超が大量拡散、添付ファイルは
ウイルス、銀行・カード情報など盗み取る
URLリンク(headlines.yahoo.co.jp)
118:デフォルトの名無しさん
17/05/19 15:36:33.74 9d9oZwpEM.net
>>112
それ14の判定結果からして偽じゃね?
119:デフォルトの名無しさん
17/05/19 15:46:59.07 nQP05M7h0.net
きっちり優先順位をケアすれば合ってるんでないの?
10の位 & 3 (. 1 2 3 . 5 6 7 . 9
1の位 & 4 (. . . . 4 5 6 7 . .
120:デフォルトの名無しさん
17/05/19 16:12:46.81 huxogVYI0.net
>>114
特定の値域でしか正常に動作しない欠陥コード晒して、何粋がってんの?
121:デフォルトの名無しさん
17/05/19 16:37:44.71 xPzfUm9BM.net
え?
i と j が20兆でも動く必要があるの?
で、短くできた?
122:デフォルトの名無しさん
17/05/19 16:41:42.81 xPzfUm9BM.net
>>119
if (a/10&3&&a%10&4&&(a<38)) { ...
これでいいか?
123:デフォルトの名無しさん
17/05/19 16:48:56.31 huxogVYI0.net
絶望的にセンスが悪い
> a=>10
比較一回を
> a/10&3
除算一回, 論理積一回に改悪
しかも文字数でも1文字増えている
124:デフォルトの名無しさん
17/05/19 16:53:29.16 nQP05M7h0.net
i,j で分離すべきなのか a で分離すべきなのか元質問からは読み取れんし・・・
a がたまたま正の整数で良かった (負数の剰余は考えたくないw)
125:デフォルトの名無しさん
17/05/19 17:08:03.89 /7Hxktnz0.net
>>122
=は右
これ豆なw
126:デフォルトの名無しさん
17/05/19 17:10:52.81 9d9oZwpEM.net
>>118
あ、そうか。確かに。
127:デフォルトの名無しさん
17/05/19 18:23:28.28 fvUmn17Y0.net
>>122
何言ってんだコイツ
128:デフォルトの名無しさん
17/05/19 19:00:41.98 rnjvvj6OM.net
まあまあ。
動作に関係ない仕様を思い込みで追加するのは良くないな。
「今不要なら、今書くな」だっけか。
129:デフォルトの名無しさん
17/05/19 21:31:34.84 91iCt1N+M.net
yagniかkissかってところ?
130:デフォルトの名無しさん
17/05/19 21:48:07.18 dqcfAkCR0.net
C言語ってEclipseの補完が動かないのがデフォなの?
131:デフォルトの名無しさん
17/05/19 22:17:08.26 ibFM4KQv0.net
>>128
そうそう。ソフト屋なら知ってるもんかな?
"Keep it simple, stupid" まさに。
132:デフォルトの名無しさん
17/05/19 23:37:00.55 jsPxGdeJ0.net
Cは、ライブラリがすくない。おぼえることがすくない
133:デフォルトの名無しさん
17/05/20 06:07:10.11 ZnY/c9+20.net
関数にinlineをつけて外部定義を無くせば
インライン展開されなければinline staticと違って
リンカエラーになるとおもってたんですけど、
inline staticを使ったときにはインライン展開される関数が
inlineをつけて外部定義の無くすとリンカエラーになります
なぜですか?
134:デフォルトの名無しさん
17/05/20 08:13:36.98 Ykf9CvnEa.net
>>131
野良ライブラリが多いのは多分Cが一番だろうけどな。
何かしらの言語の野良ライブラリの元はCの野良ライブラリが必要で~とかで、Linuxじゃないと集めてられない。
Win32APIもC前提だけど、多分MSの中の人もいくつあるか把握出来てないんじゃないかな。
135:デフォルトの名無しさん
17/05/20 18:45:47.54 AtO1B5PX0.net
ISO/IECだってしょせんはブランドの1つでしかなく
別に数学的な公理とかじゃないからな
136:デフォルトの名無しさん
17/05/20 19:07:14.30 cC3hGZmH0.net
無矛盾な公理的集合論は自己そのものの無矛盾性を証明する事ができない
137:デフォルトの名無しさん
17/05/20 22:15:46.49 d/44g1et0.net
./a.outって入力すると'.'は認識されてないと言われました
何が問題でしょうか?
138:片山博文MZ
17/05/20 22:21:46.82 3NdrFBG3d.net
>>136
コマンドプロンプトはMS-DOSのカルチャーで区切りはバックスラッシュで、MSYSやLinuxはbashのカルチャーで、スラッシュが区切りあるね。
139:デフォルトの名無しさん
17/05/20 22:38:50.18 feiyOPgg0.net
>>136
区切りで「/」使いたいなら、パス全体を「"」で括る
「/」以降をオプション「.」をコマンドとして認識するから、全体で一つのコマンドと認識させる必要がある
「/」を区切りに使うのはunix
windowsでも一応使えるけど普通はバックスラッシュ使う
140:デフォルトの名無しさん
17/05/20 22:52:55.54 d/44g1et0.net
>>136 >>137
バックスラッシュということは¥ですよね?
141:片山博文MZ
17/05/20 23:02:48.40 3NdrFBG3d.net
bashではセキュリティ上の理由で、現在のディレクトリのプログラムを起動するのに、./が必要だが、Winのプロンプトでは不要。
142:デフォルトの名無しさん
17/05/20 23:12:15.43 feiyOPgg0.net
>>139
日本語のwindowsならそう、円記号
コマンドプロンプトとかエクスプローラとかのパス表示には区切り文字に\使われてるでしょ
143:デフォルトの名無しさん
17/05/20 23:54:38.45 HEZORyL40.net
昔は.がデフォルトでPATHの先頭に入ってたな
ホームディレクトリにls置いたら面白いことになった
144:デフォルトの名無しさん
17/05/21 11:36:43.59 p33VUuKu0.net
#include <stdio.h>
int main(void){
char i[100];
printf("名前を入力してね。\n");
scanf("%s",i);
printf("%sさんですね。\n",i);
return 0;
}
7行目scanf関数で、&iでなくて、iでいけるのはなぜですか?
145:
17/05/21 11:43:49.79 pUWFtSb10.net
>>143
i の型はポインタ,すなわち char *i だから
146:デフォルトの名無しさん
17/05/21 11:44:04.43 JHzb8j250.net
>>142
&はアドレス演算子で、その変数がメモリ上のどのアドレスにあるかを示す
scanf関数で&を使うのは、つまり、「この変数のアドレスに読み取ったものを書き込め」という意味になる。
しかし文字列などの配列は、配列名自身が「配列の一番最初の要素へのアドレス」を示すものになっているので
配列には&が不必要
147:デフォルトの名無しさん
17/05/21 12:20:22.06 EhbYbiNc0.net
>>144
printf("%u", sizeof i);
これで4だか8だかになるとでも?
148:デフォルトの名無しさん
17/05/21 12:22:40.28 EhbYbiNc0.net
クズの言い方だと
float a = 1.5f;
printf("%f", a);
これが問題なく動作するから、
よって a は double 型だと言っているようなものだ
149:デフォルトの名無しさん
17/05/21 12:23:47.67 fDsf7qWsa.net
>>143
配列を関数に渡すと配列の先頭要素へのポインタになるから。
んで、&は参照なんだけど、参照ってざっくり言えば読み込み専用ポインタ。
150:デフォルトの名無しさん
17/05/21 12:27:36.21 bYtGqajI0.net
>>146
ならない。
コンパイルエラー
151:デフォルトの名無しさん
17/05/21 12:32:18.38 wd4rgPA1a.net
あ、読み込み専用ってのは値が変えられないんじゃなくて、アドレスを変えられないって意味ね。
関数に渡された配列iをi++ってするとi[a++]と同じ意味になる。
(Cでi[a++]なんて書き方許されたかは忘れたが意図は組んでくれ)
152:デフォルトの名無しさん
17/05/21 12:33:01.58 wd4rgPA1a.net
ポインタなら上が出来て、参照は出来ないんよ。
153:
17/05/21 12:41:04.19 pUWFtSb10.net
>>146
そりゃ配列とポインタは振る舞いがまったく同一というわけではなく,はっきりいって別物だから,言い分はわからんでもない.
>>143
訂正する,配列名を示す識別子は配列の先頭を示すポインタになる >>145 が丁寧な説明だ
>>147
そのたとえは意味不明,可変長引数の可変部は float->double に格上げされることを隠すなんでひどい物言いだね
154:デフォルトの名無しさん
17/05/21 12:51:40.59 EZ567Ylh0.net
最近は初心者を騙すのが流行しているのか
155:デフォルトの名無しさん
17/05/21 13:33:41.41 LBGUGIAq0.net
linuxでc言語開発したいんですが、IDE使わないのが一般的なんですか?
156:デフォルトの名無しさん
17/05/21 13:45:10.14 2TTm6ATPa.net
はい。
CやJavaならEclipseが一般的かと。
Eclipseにサポートして貰ってないのはviやemacsカスタマイズしてIDEとして使う感じ。
157:デフォルトの名無しさん
17/05/21 13:45:35.47 2TTm6ATPa.net
あ、はい。は忘れてw
158:デフォルトの名無しさん
17/05/21 15:31:07.21 Mj8j7wxe0.net
>>132もおねがいします
159:デフォルトの名無しさん
17/05/21 15:34:52.30 kPjNSBDr0.net
>>157 質問文が酷すぎて、何を聞きたいのか理解されてないだけだぞ
161:デフォルトの名無しさん
17/05/21 16:54:32.37 bYtGqajI0.net
>>154
最近は yacc じゃなくて何か新しいのあるんだよね。
162:デフォルトの名無しさん
17/05/21 17:27:25.62 1Ubd4ETn0.net
>>159
最近じゃないけど bison とかか?
163:デフォルトの名無しさん
17/05/21 17:32:24.58 ViqOYprV0.net
何でいきなり構文解析器の話になった?
164:デフォルトの名無しさん
17/05/21 17:53:33.03 Qv//Z9+/0.net
>>152
>訂正する,配列名を示す識別子は配列の先頭を示すポインタになる >>145 が丁寧な説明だ
なんねーよ カス
int a[10];
a++; // お前の主張が正しいならエラーにはならないはずだ
165:デフォルトの名無しさん
17/05/21 17:53:37.15 /ema5D/U0.net
c言語作るって言ってるからでしょ
166:デフォルトの名無しさん
17/05/21 17:59:27.49 EhbYbiNc0.net
>>149
コンパイルエラーって、どこが?
URLリンク(ideone.com)
>>152
147だが、最後ふじこってんじゃん
落ち着いてもっぺん日本語で書いてくれ
167:デフォルトの名無しさん
17/05/21 18:06:09.69 zNfd0kUpa.net
>>162
横からと言うか流されてるんで。。。
飛び飛びになってるけど
>>148
>>150
>>151
は、おいらなりに結構正確に書いたつもり。
参照はC++用語だからCだと&はアドレス演算子が正確だけど。
168:
17/05/21 19:10:04.03 pUWFtSb10.net
はいはい,そりゃ配列とポインタは互換じゃないよ
分かりやすい説明はないものかね‥
169:
17/05/21 19:10:52.98 pUWFtSb10.net
>>164
>147だが、最後ふじこってんじゃん
ん?
170:デフォルトの名無しさん
17/05/21 19:20:07.02 lXB+sVuE0.net
%f は 引数を double 仮定で引き出す
呼び出し側は (可変長引数の可変部なので) doubleに格上げしてから引数に詰んでる
詰んでるものと引き出すものの食い違いはおきてないんじゃないかね
171:
17/05/21 19:28:27.25 pUWFtSb10.net
>>168
>積んでるものと引き出すものの食い違いはおきていない
そりゃ引数に積むときに float->double しているから,そうなって当然だが,その事実を隠したまま
>>147
を主張されても,そりゃないよ,としかいいようがない.
172:デフォルトの名無しさん
17/05/21 19:29:57.61 zNfd0kUpa.net
>>166
無いなー。。。
ここが変だよC言語とかもう廃刊だっけ。
あれじゃないと説明しきれん。
173:デフォルトの名無しさん
17/05/21 19:40:24.59 kPjNSBDr0.net
配列型の"式"は、一部のケースを除いてポインタ型の式に"型変換"される、それは配列の先頭要素を指す、また左辺値でもない
関数の実引数での使用についてなら、>>147の既定の実引数拡張でfloatがdoubleに拡張(型変換)される例と同じような話だと思うんだけどな
174:デフォルトの名無しさん
17/05/21 20:10:14.64 zNfd0kUpa.net
>>146
おいらはこれ、sizeofが関数じゃなくて演算子って呼ばれてるのが肝で、関数に配列渡しても何故かポインタのサイズじゃなくて配列サイズ返す謎な奴って解釈してるな。
175:デフォルトの名無しさん
17/05/21 20:19:46.42 8VZiX6Z0a.net
んあ。
ごめん。
>>172は無し。
嘘付いた。
配列関数に渡す時、配列の大きさも別で関数に渡してたの思い出した。
176:デフォルトの名無しさん
17/05/21 20:24:04.46 8VZiX6Z0a.net
>>146
これは配列宣言した場所と同じスコープなら配列のサイズ返すけど、配列を関数に渡した先(関数の中)でこれするとポインタのサイズが返ってくる。
177:デフォルトの名無しさん
17/05/21 21:28:16.83 LBGUGIAq0.net
>>155
ありがとう
178:デフォルトの名無しさん
17/05/21 21:39:54.59 EhbYbiNc0.net
>>174
int main(void)
{
char i[100];
wanker(&i);
return 0;
}
void wanker(char (*j)[100])
{
/* ここは、「配列を関数に渡した先(関数の中)」だが? */
printf("%u", sizeof *j);
}
179:デフォルトの名無しさん
17/05/21 21:45:09.31 EhbYbiNc0.net
>>169
隠している? それは聞き捨てならんな
公文書に書かれていることを俺がどう隠したとぬかす?
180:デフォルトの名無しさん
17/05/21 21:53:31.38 8VZiX6Z0a.net
>>176
それ、文字配列だからヌル文字(0)で数えられるっしょ。
intの配列とか無理だから。
181:デフォルトの名無しさん
17/05/21 22:00:12.54 EhbYbiNc0.net
>>178
どう無理なんだ?
int main(void)
{
int i[100];
booger(&i);
return 0;
}
void booger(int (*j)[100])
{
printf("%u", sizeof *j);
}
182:デフォルトの名無しさん
17/05/21 22:02:18.84 lXB+sVuE0.net
いやいや sizeof はコンパイル時に確定する演算だから
strlen みたいにポインタの指し先追っかけてデリミタ見つかるまでのバイト数とか 実行時依存じゃない
183:デフォルトの名無しさん
17/05/21 22:08:35.89 8VZiX6Z0a.net
>>179
ん?
出来てんの?
よく見たら宣言だけで初期化(確保)はしてないのな。
うーん。。。
ちょっとおいらの方でも書いて検証してみるわ。
184:デフォルトの名無しさん
17/05/21 22:10:30.59 lXB+sVuE0.net
だから sizeof は型さえ類推できれば、変数の実態なくてもいいんだって
なんなら () 付けて 型をかけばいい
185:デフォルトの名無しさん
17/05/21 22:10:36.85 EhbYbiNc0.net
176でも初期化はしてないが
186:デフォルトの名無しさん
17/05/21 22:13:36.56 EhbYbiNc0.net
>>182
型をかけばいいって、こうか?
if (sizeof i != sizeof(char*)) puts("ahem!!");
187:デフォルトの名無しさん
17/05/21 22:15
188::17.46 ID:lXB+sVuE0.net
189:デフォルトの名無しさん
17/05/21 22:39:46.18 fA6hmJLUa.net
>>179
分かってきたかも。
そのコードだと
int *i;
ってポインタ宣言すると
iのままがポインタで、*iがポインタの指す中身だから。。。
配列の実体になるんだ。
もっとシンプルに初心者のやりがちな
int main(void)
{
int i[100];
booger(i[100]);
return 0;
}
void booger(int i[100])
{
printf("%u",sizeof a[100]);
}
こう言うコードだとポインタのサイズが返ってくる。
190:デフォルトの名無しさん
17/05/21 22:41:32.99 fA6hmJLUa.net
ちゅーか十何年ぶりのCだったわ。。。
191:デフォルトの名無しさん
17/05/21 22:44:28.27 fA6hmJLUa.net
sizeof a[100]はタイポだけど許してね。
配列の変数名にiとか普通使わんのよ。
インデックス変数に使うからさ。
a[i]
192:デフォルトの名無しさん
17/05/22 06:47:21.18 3isejMaU0.net
void f(void * v, int size, void * x){
*v=*x;
}
上のコードで x の指し示す値のサイズが size であるとき
どのようにvの指し示す場所にxが指し示す値を一度に代入できますか?
193:デフォルトの名無しさん
17/05/22 07:31:20.24 uEzgaoxk0.net
memcpy(*v, *x, size);
194:デフォルトの名無しさん
17/05/22 07:34:49.91 uEzgaoxk0.net
訂正
memcpy(v, x, size);
195:デフォルトの名無しさん
17/05/22 07:37:02.82 qnT1Y5yL0.net
>>189
学校の宿題か?
196:デフォルトの名無しさん
17/05/22 08:26:47.95 jL5+dSxZ0.net
for (i=0; i<size; i++) ((int8_t*)v)[i] = ((int8_t*)x)[i];
197:デフォルトの名無しさん
17/05/22 09:21:02.66 uUtJqX7+0.net
while(size--) *(char*)v++ = *(char*)x++;
198:デフォルトの名無しさん
17/05/22 11:15:09.22 jL5+dSxZ0.net
>>194
文法エラー (v, x のインクリメント操作は void * で評価されてる)
199:デフォルトの名無しさん
17/05/22 11:57:30.90 WXjICEY9M.net
size の単位が何なのか分からんなぁ。
200:デフォルトの名無しさん
17/05/22 12:02:49.26 HD7uOEeF0.net
(`・ω・´) ?
201:デフォルトの名無しさん
17/05/22 12:44:29.59 +BU32a3i0.net
最近はCMakeを使うのが普通なの?
GNU Make覚える必要があるかな
話変わるけど、MakeFileってソース1つ追加するたびに、変更する必要がある?
202:デフォルトの名無しさん
17/05/22 13:11:20.22 uUtJqX7+0.net
>>195
すまん、素でボケてたw
しかしこれ構文規則には違反してないぞ
意味論においてvoid*の増分が禁止されているって話で
203:デフォルトの名無しさん
17/05/22 13:14:30.22 jL5+dSxZ0.net
>>199
あー コンパイルエラーと言えばよかったかw
204:デフォルトの名無しさん
17/05/22 13:14:54.60 CEFnqLB20.net
Makefileを作らなくてもmake出来るケースがある事を最近は知らない奴が多い
205:デフォルトの名無しさん
17/05/22 17:02:12.42 uUtJqX7+0.net
cc love.c じゃなく
make love でいい件か?
206:デフォルトの名無しさん
17/05/22 19:00:44.22 J9ejs7e9M.net
makeのデフォルトルールだね
.c.o はよく使う
207:デフォルトの名無しさん
17/05/22 19:41:32.06 h9CxmUP8M.net
>>201
まじか、知らなかった
208:デフォルトの名無しさん
17/05/22 19:45:14.71 yWHDUG7V0.net
作って覚えるVisual C#のようなゴールを設定して色々学ぶC言語の書籍はありますか?
209:デフォルトの名無しさん
17/05/22 20:02:28.46 uUtJqX7+0.net
便利にゃ違いないけど
ロクに指示も与えずよきに計らえってスタンスで
何が出来てくるのかに受動的でいることに
俺は我慢できないな
無関心な大将を有能な部下がフォローして事なきを得たってことだろ
210:デフォルトの名無しさん
17/05/22 20:02:58.11 uUtJqX7+0.net
だからスタックサイズのデフォも知らない馬鹿が大量発生するわけだし
211:
17/05/22 20:03:31.72 Zgh5eQVH0.net
>>195
(void *)c++ は1だけインクリメントされる,c99 では規格で決まっている
212:
17/05/22 20:04:10.12 Zgh5eQVH0.net
>>199
>意味論においてvoid*の増分が禁止されているって話で
そんな決まりはない,void * のインクリメントは正確に1だ
213:デフォルトの名無しさん
17/05/22 20:15:17.89 5FlvGyv/0.net
*vがsize分確保されてないんじゃね?
普通こうだよな
void f(void ** v, int size, void * x)
214:デフォルトの名無しさん
17/05/22 20:16:31.52 2o5iWMtc0.net
>>208
しらなんだ C99 からなのかね
215:デフォルトの名無しさん
17/05/22 21:22:47.69 d/63nSXI0.net
voidがサイズ持ってるとか無理やり過ぎ
便利だけど
216:デフォルトの名無しさん
17/05/22 21:22:49.29 lKEcPOEA0.net
>>208,209
うそつき
217:デフォルトの名無しさん
17/05/22 21:31:07.71 oluY6epY0.net
1になるのはgcc拡張だろ
218:デフォルトの名無しさん
17/05/22 21:42:16.48 uUtJqX7+0.net
そういうオチか
ばかたれぃっ!!
219:デフォルトの名無しさん
17/05/22 23:25:56.35 klirxPDR0.net
息をするように嘘をつかれた
220:
17/05/23 06:44:54.44 a7cn3COJ0.net
>>214
C99 からガチで
221:デフォルトの名無しさん
17/05/23 09:00:04.50 BTD2Lf690.net
>>208-209>>217
C99規格には「(void *)c++ は1だけインクリメントされる」という規定はない。
C99規格書(ISO/IEC 9899)は英語なのでそれを元にしたJIS X3010で説明する。
X3010は章番号を変えてないのでISO/IEC 9899の該当文章は自分で確認してくれ。
ISO/IEC 9899:TC2
URLリンク(www.open-std.org)
JIS X3010
URLリンク(kikakurui.com)
> 6.2.5 型
> 型は,オブジェクト型(オブジェクトを完全に規定する型),関数型(関数を規定する型),
>及び不完全型(その大きさを確定するのに必要な情報が欠けたもの)に分類する。
> void型の値の集合は空とする。それは,完全にすることのできない不完全型とする。
> void へのポインタは,文字型へのポインタと
> 同じ表現及び同じ境界調整要求をもたなければならない。
voidは不完全型だがvoid*はオブジェクト型でchar*と相互に代入可能だ。
> 6.5.3.4 sizeof 演算子
> sizeof演算子は,関数型若しくは不完全型をもつ式,それらの型の名前を括弧で
> 囲んだもの,又はビットフィールドメンバを指し示す式に対して適用してはならない。
> 型char,unsigned char若しくはsigned char(又はそれらの修飾版)をもつ
> オペランドに適用した場合の結果は,1 とする。
不完全型であるvoidにはsizeofを適用できない。
char派生はサイズ1と明確に規定されているがvoidのサイズは規定がない。
だから(void *)c++が元の値のままでもC99規格違反ではない。
222:デフォルトの名無しさん
17/05/23 09:33:11.13 6xCmSTo3M.net
>>218
「void はサイズ1だけど、sizeof するなよ」ってことじゃね?
「適用してはならない」が何なのかわからんけど。
223:デフォルトの名無しさん
17/05/23 09:47:33.99 Mt8tSRb/M.net
>>219
サイズ1ってどこからわかるの?
224:デフォルトの名無しさん
17/05/23 11:13:27.58 ufwaINxg0.net
ウンコQz得意の炎上学習法か
とっとと死ねよ
225:デフォルトの名無しさん
17/05/23 11:24:40.32 ufwaINxg0.net
>>218
ポインタの算術演算なので参照するところが違う
6.5.6-2の定義で加算可能なポインタは「オブジェクトへのポインタ」であり、
void *はキミが引用した6.2.5によりこの条件を満たさない 従ってQzはうんこ 今すぐ死ね
6.5.6 Additive operators
2 For addition, either both operands shall have arithmetic type,
or one operand shall be a pointer to an object type and the other shall have integer type. (Incrementing is equivalent to adding 1.)
226:デフォルトの名無しさん
17/05/23 11:31:22.03 YiZYoA3+0.net
規格のどこかにあったはず
227:デフォルトの名無しさん
17/05/23 11:45:51.13 ENsR+rXL0.net
おいQZ都合悪くなったら自演で叩きかよ
おまえもうム板に向いてないから一人でコードオナニーしてろよ
228:
17/05/23 12:35:42.70 F0rvxaiH0.net
この件、過去に私が書いたコードを元に議論されたんだよね、当時の書き込みが見つからない…
>>218
>>222
ありがとうございます。感謝です。うれしいです。
>>218
>void へのポインタは,文字型へのポインタと
>同じ表現及び同じ境界調整要求をもたなければならない。
というのだから
>>222
当然、(char *)++ と (void *)++ は同じだよね
229:
17/05/23 12:37:05.33 F0rvxaiH0.net
>>255 = >>256
230:デフォルトの名無しさん
17/05/23 12:38:56.50 fCVURflQ0.net
配置アドレスのアライメント要求が等しいのと
アドレスの算術演算で同じ結果になるのは別じゃ?
231:デフォルトの名無しさん
17/05/23 12:50:27.27 ufwaINxg0.net
このバカは
URLリンク(gcc.gnu.org)
すら読まずに、C99 からガチでキリッ
とか言ってんのか
死ね死ね死ね今すぐ死ね
232:デフォルトの名無しさん
17/05/23 12:57:12.80 fCVURflQ0.net
ideone の C99 でも(同じwarninngで)文句言ってるな
URLリンク(ideone.com)
233:デフォルトの名無しさん
17/05/23 13:03:46.65 BTD2Lf690.net
>>225
「同じ表現及び同じ境界調整要求」と同じ演算ができるかは別の話だ。
const変数は非const変数と「同じ表現及び同じ境界調整要求」だが変更できない。
>>222のJIS X 3010:2003該当部分は下記の通りだ。
voidはオブジェクト型ではなく不完全型だからvoid*に加減演算するのは規格外だ。
> 6.5.6 加減演算子
> 制約 加算の場合,両オペランドが算術型をもつか,又は一方のオペランドがオブジェクト型への
> ポインタで,もう一方のオペランドの型が整数型でなければならない。(増分は 1 の加算に等しい)
234:デフォルトの名無しさん
17/05/23 15:16:25.17 Eouhg5rk0.net
gccでも-pedanticオプションを使えばgcc拡張を警告するぞ
-std=c99オプションに頼るな
gcc-8の警告文
warning: wrong type argument to increment [-Wpointer-arith]
clang-5の警告文
warning: arithmetic on a pointer to void is a GNU extension [-Wpointer-arith]
235:デフォルトの名無しさん
17/05/23 17:10:14.54 ENsR+rXL0.net
QZ怒りの暴走
236:デフォルトの名無しさん
17/05/23 17:50:06.75 YSxby3lha.net
>>225
char型へのポインタ型のオブジェクトとvoid型へのポインタ型のオブジェクトが同じ境界調整を持つという規格が
なぜchar型のオブジェクトとvoid型のオブジェクトが同じサイズという話になるの?
237:デフォルトの名無しさん
17/05/23 18:08:28.42 F0rvxaiH0.net
>>230
なるほど、感謝です。
この議論、以前にも(自分のコードを対象に)問題になって、そのときは
void *p;
に対して
p + 3
が意味をもつのか、というあたりだったのですが、当時の議論に誤りがあったのかもしれません。
なお手元のgcc5.3.0 では -ansi -Wall で警告を出してくれませんでした。
>>228
あなたにもとっても感謝してますよ
これからもどうかご教示ください :-)
>>233
えっ、そう読むのか…
238:デフォルトの名無しさん
17/05/23 18:17:27.01 YSxby3lha.net
>>234
それ以外にどう読むの?
「同じ表現」はポインタ型のオブジェクトの内部表現の話だよね
並列で書いてある「同じ境界調整」もポインタ型のオブジェクトの境界調整の話と捉えるのが自然じゃないの
239:デフォルトの名無しさん
17/05/23 18:22:45.88 YSxby3lha.net
>>234
あと、-Wpointer-arithって言われてるのに、なんでWallで確認してるの?
Wallを勘違いしてない?
240:デフォルトの名無しさん
17/05/23 18:32:25.29 ufwaINxg0.net
>>230
>(増分は 1 の加算に等しい)
++を増分演算って訳した上に「演算」を省略すると意味不明になるね
241:デフォルトの名無しさん
17/05/23 18:40:44.02 F0rvxaiH0.net
>>235
該当部分を読むと
JIS 6.2.5
>void へのポインタは,文字型へのポインタと同じ表現及び同じ境界調整要求をもたなければならない ( 39 ) 。
>同様に,適合する型へのポインタ同士の場合,修飾版であるか又は非修飾版であるか(const とかのことby QZ) にかかわらず,
>同じ表現及び同じ境界調整要求をもたなければならない。
>構造体型へのポインタは,すべて同じ表現及び 同じ境界調整要求をもたなければならない。
>共用体型へのポインタは,すべて同じ表現及び同じ境界調整 要求をもたなければならない。
>これ以外の型へのポインタは,同じ表現又は同じ境界調整要求をもつ必要はない。
これを読んで感じるのは、つまりポインタ自身の表現やアラインメントを、いろいろ細分化する実装を思いつかない
far とか near とかでもなさそうだ。
細分化するとすればむしろポインタが指す先に関することではないだろうか?
>>236
え?-Wall って全部だすんじゃなかったんですかね。たぶん勘違いしていると思う。
242:デフォルトの名無しさん
17/05/23 18:40:46.39 wffizmnr0.net
汎用ポインタのインクリメントは、
エラーが出るか1進むかだろう。
243:デフォルトの名無しさん
17/05/23 18:41:11.96 7CxjD8/v0.net
>>235
境界調整が同じでもサイズの違うオブジェクトへのポインタはあるだろ
char *a, (*b)[2];
K&R C では char* でよかった用途に、
なぜ、わざわざ void* を持ち込んだのか考えてみれ
サイズが 1 なのが気持ち悪くて、
サイズが不明ということにするためだろうが
この期に及んで void* が指す先のサイズが 1 とか言い出す
どスカタンがもしいたら死刑でいい話だぞ
244:デフォルトの名無しさん
17/05/23 18:46:38.37 YSxby3lha.net
>>240
安価先間違ってない?
ポインタの指すオブジェクトのサイズが一緒なんて一言も書いてないんだけど
245:デフォルトの名無しさん
17/05/23 18:53:09.03 F0rvxaiH0.net
>>240
よくわかる、その意見
でも memcpy(), memmove() の引数が void * であることが、ちらりと頭に過ぎるんです
これらは C で実装できない、てことですかね?
246:
17/05/23 18:56:05.69 F0rvxaiH0.net
ID:F0rvxaiH0 = QZaw55cn4c
247:デフォルトの名無しさん
17/05/23 18:57:52.22 07biNjOo0.net
>>242
何言ってんの?
248:デフォルトの名無しさん
17/05/23 19:00:42.38 7CxjD8/v0.net
>>241
IDで追ってみたら、おまえさんの疑いは晴れた
すまんかった
249:
17/05/23 19:01:37.22 F0rvxaiH0.net
>>244
void *memmove(void *dst, const void *src, unsigned n);
void *memcpy(void *dst, const void *src, unsigned n);
にて char * ではなく void * になっている理由はなにか?
250:デフォルトの名無しさん
17/05/23 19:09:35.34 ufwaINxg0.net
>>240
いや第一目的は、全ての型へのポインタと互換(キャストなしで変換できる)なポインタが欲しかったのだ
251:デフォルトの名無しさん
17/05/23 19:17:52.52 07biNjOo0.net
>>246
汎用なのになんでstring.hかと思ったことはある
252:デフォルトの名無しさん
17/05/23 19:31:53.76 ZdN5y2SH0.net
>>238
Wallは全ての警告が有効になるわけではない
URLリンク(gcc.gnu.org)
> これを読んで感じるのは、つまりポインタ自身の表現やアラインメントを、いろいろ細分化する実装を思いつかない
> far とか near とかでもなさそうだ。
> 細分化するとすればむしろポインタが指す先に関することではないだろうか?
思いつかないなら、同じにすれば良いだけでしょ
そこからなぜ「同じ表現」はポインタの話なのに、「同じ境界調整要求」はポインタの先のオブジェクトの話になるの?
>構造体型へのポインタは,すべて同じ表現及び 同じ境界調整要求をもたなければならない。
>共用体型へのポインタは,すべて同じ表現及び同じ境界調整 要求をもたなければならない。
構造体/共用体型のオブジェクトが等しい境界調整要求を持つほうが非現実的でしょ
253:デフォルトの名無しさん
17/05/23 22:10:38.61 7CxjD8/v0.net
>>247
K&R C では char* をキャストなしで変換できてたが?
int *a = malloc(4);
254:デフォルトの名無しさん
17/05/23 22:57:03.61 7CxjD8/v0.net
>>246
バス幅が8bitでないハードでもったいないことしないためだろ
255:デフォルトの名無しさん
17/05/23 23:35:41.22 ZdN5y2SH0.net
>>238の通りQZは「構造体型のオブジェクトが全て同じ境界調整要求をもつ」と主張してるからな
この世に存在する大多数のコンパイラが規格に準拠していないという新説を主張しているぐらいだら
QZの脳内には、余人には考えつかない理屈があるんだろ
256:デフォルトの名無しさん
17/05/24 03:30:23.68 lEIYBmmJ0.net
QZはサイコ自演厨
くりかえすQZはサイコ自演厨
257:デフォルトの名無しさん
17/05/24 13:17:30.92 spHSYyT3M.net
>>250
なんかトートロジーみたいになってきたけど、K&Rの何でもポインタとして使われてたchar *は
ANSI以降はvoid *になったってことでしょ
258:デフォルトの名無しさん
17/05/24 15:28:53.02 QjzRyjLLE.net
すいませんこのスレにワッチョイを導入した経緯ってなんですか?
259:デフォルトの名無しさん
17/05/24 18:24:04.77 yvqQkV490.net
>>254
言い忘れ
今のCだって void* を void* 以外のポインタに変換できるが
あくまで推奨としてキャストする慣習があるだけで、
キャストが義務化されたのは C++
なので >>247 はかなり斜め上
あることを言い忘れているのだろうと好意的に解釈しても
互換とは何かについて考察が甘いと言わざるを得ない
260:デフォルトの名無しさん
17/05/24 18:28:35.29 UdPLjxGk0.net
cuda Cコンパイラーは
void*型からの代入にキャストが無いとエラーになる
多分MSのcl使ってるからそうなる
261:デフォルトの名無しさん
17/05/24 18:36:39.06 yvqQkV490.net
>>257
そりゃ、管の方言だろ
cl, gcc, clang-cl どれもok
262:デフォルトの名無しさん
17/05/24 19:26:19.45 E7SQQ2iip.net
PStructA pstA[10];
に対して
&pstA[1] と pstA+1 は同じ一番目のポインタを返すという認識で合ってるでしょうか?
ポインタ演算と配列の違いが腑に落ちてないです
263:デフォルトの名無しさん
17/05/24 19:45:56.66 L7sKwR/z0.net
アドレス取得が後か先かの違いじゃない?
あんまり深く考えるとハゲるよ
264:デフォルトの名無しさん
17/05/24 19:50:38.77 /WrwABBj0.net
>>250
逆ができたか? できなかったと記憶してるが
265:デフォルトの名無しさん
17/05/24 20:44:36.72 tHoyeV8z0.net
NVIDIAのOpenCLコンパイラはvoid*を演算するコードをコンパイルしようとすると落ちる。
266:デフォルトの名無しさん
17/05/25 10:12:33.17 NxjYanVn0.net
>>261
できる/できないを、何を基準に言っている?
K&R 仕様の cc は死ぬほど寡黙なコンパイラで
だからこそ lint が別で用意されていたんだぜ
267:デフォルトの名無しさん
17/05/25 10:14:55.51 PLr2HWak0.net
for(int i=0;i<a+3;++i)
でaがループの中で使われなくても毎回計算されなおしますか?
268:デフォルトの名無しさん
17/05/25 10:50:22.52 jD8c7u6va.net
され直す。
269:デフォルトの名無しさん
17/05/25 11:11:35.32 1r4kIkVY0.net
>>264
volatileなら必ずされなおす
volatileじゃなければされなおされない可能性がきわめて高い
270:デフォルトの名無しさん
17/05/25 11:25:49.00 jD8c7u6va.net
そうか、最適化で定数になってる可能性が高いな。
271:デフォルトの名無しさん
17/05/25 12:50:12.06 0WgUeo5I0.net
>>263
ああ、思い出して来た
K&R(コンパイラ)では代入でポインタの型検査を行わなかった
関数呼び出し関数プロトタイプがないのでできなかった
すなわち全てポインタ型は互換だった
ここにポインタの型検査を持ち込むんだからK&Rでの「互換」はANSI Cか必要とした「互換」ではなく当然に役にたたない
従って、>>250は的はずれな指摘
272:デフォルトの名無しさん
17/05/25 14:30:16.20 NxjYanVn0.net
落ち着けよ
代入と関数原型は関係ないし
格助詞がふじこってるぞ
273:デフォルトの名無しさん
17/05/25 15:03:16.39 0WgUeo5I0.net
わざとそのように誤読したがるのはわかるが
> 関数呼び出し時の検査は関数プロトタイプがないのでできなかった
だな、編集ミスだ
274:デフォルトの名無しさん
17/05/25 15:59:46.97 NxjYanVn0.net
いや、だから代入と関数原型は関係ねえってば
代入が関数なのはC++だぞ
275:デフォルトの名無しさん
17/05/25 19:12:03.32 0WgUeo5I0.net
代入と関数呼び出しで型検査が必要になった
関係大あり
276:デフォルトの名無しさん
17/05/25 21:47:16.88 NxjYanVn0.net
代入には型検査がもともとあった
double a = 1.5;
int b;
b = a;
b には (int)a の値が正しく代入され
決して a の bit63-32 が切り裂きコピーされることはない
277:デフォルトの名無しさん
17/05/25 23:12:03.91 0WgUeo5I0.net
>>273
ポインタの型の検査の話だが
お前の短期記憶には障害が発生してるぞ
278:デフォルトの名無しさん
17/05/26 01:40:06.53 SIwotEYO0.net
またQZが自演を始めたよ
279:デフォルトの名無しさん
17/05/26 05:57:05.69 gxtuHd510.net
-Wshift-op-parentheses
これを守ろうとすると括弧だらけでコードが糞になるから切ることにするよ
280:デフォルトの名無しさん
17/05/26 08:18:33.58 IXNjZ2pR0.net
>>276
ifの条件節に代入を直接書けないのもうざいな
281:デフォルトの名無しさん
17/05/26 09:57:19.90 qaraDccl0.net
>>274
char *a = "QZ";
int *b;
b = a;
で、これの何が関数呼び出しと関係があるんだ?
俺のページフォールトはいいから
おまえのラッチアップを何とかしようや
282:デフォルトの名無しさん
17/05/26 10:14:22.69 IXNjZ2pR0.net
>>278
ポインタの型検査の話だってなんども言ってんだろ
ポインタの型検査は代入と関数呼び出しで行われる
わかったかバーカ
283:デフォルトの名無しさん
17/05/26 11:12:11.70 qaraDccl0.net
>>279
わかんねえよデフェクト野郎
代入での型の検査の話だが
お前の制御記憶にはショートモードの故障が発生してるぞ
284:デフォルトの名無しさん
17/05/26 11:15:48.33 IXNjZ2pR0.net
>>280
アホウ ANSI-Cでの型検査の話だ
285:デフォルトの名無しさん
17/05/26 11:33:23.33 qaraDccl0.net
>>281
アホウはおまえ
>>240から始まって247-250と流れてるのが
おまえにはANSI-Cの話に見えるのか
どうでもいいがCの規格文書名はISO/IEC9899だろうが
未だにX3.159-1989を拠り所としている化石かおまえ?
286:デフォルトの名無しさん
17/05/26 13:06:41.64 IXNjZ2pR0.net
アホウ ポインタの型検査が規格になったのはANSI-Cだ
> K&R C では char* でよかった用途に、
> なぜ、わざわざ void* を持ち込んだのか考えてみれ
> サイズが 1 なのが気持ち悪くて、
> サイズが不明ということにするためだろうが
このバカ(お前?)が決定的に間違ってる
void*が必要になったのはポインタ型検査に伴い発生する不都合を解消するためだ
それがあらゆる型へのポインタと互角なポインタであり、その役割をvoid *に割り当てた
287:デフォルトの名無しさん
17/05/26 15:24:42.21 qaraDccl0.net
>>283
> ふじこふじこ
>>250もっぺん読め
288:別に不都合なんか起きてなかったぜ どうでもいいが、あらゆる型へのポインタと互角に戦えるポインタがあったとして それ以外のポインタってつおい? compatibility を日本語では互換性だ ボビーオロゴンみたいな日本語を素でやるな池沼
289:デフォルトの名無しさん
17/05/26 18:45:52.60 IXNjZ2pR0.net
>>284
本当に頭悪いなお前
K&Rではポインタの型検査を行ってなかったので、char *(に限らず全てのポインタ)が互換だっただけだ
290:デフォルトの名無しさん
17/05/26 18:54:11.28 IXNjZ2pR0.net
ここの文脈では相互に変換できるポインタを「互換」と呼んだ
A pointer to void may be converted to or from a pointer to any incomplete or object type.
291:デフォルトの名無しさん
17/05/26 19:53:13.29 SIwotEYO0.net
きえろQZ!
292:デフォルトの名無しさん
17/05/26 22:00:35.72 qaraDccl0.net
>>285
で、どんな「不都合」が生じたというんだ?
空想論を一切含まない具体的な例示をしてみろ
293:
17/05/26 22:03:50.72 EYAykb/80.net
K&R1 なんて今となってはどうでもいい‥
>>287
やだよ
294:デフォルトの名無しさん
17/05/26 22:06:47.38 qaraDccl0.net
K&R1はCの元々のコンセプトを純粋に美しく語っているもので
これに嫌悪感を持ったり無関心な者はCの本質を知らないのではなく解りたくない者で
去る者は拒まずの消極的破門でいい
295:デフォルトの名無しさん
17/05/26 22:14:56.87 efrj6x/y0.net
>>287 >>289
自演?
296:デフォルトの名無しさん
17/05/27 00:26:52.71 XzB/9PvX0.net
>>288
バーカ void *のように他のポインタと互換なポインタが無けりゃ
memcpyとか一々キャストしなきゃならないだろ
本当に頭が悪い
297:デフォルトの名無しさん
17/05/27 06:58:12.92 ucevWPfX0.net
>>292
戯れ言も、せめて事実に基づいてぬかせシャブ中野郎
キャストなんかいらねえのに
おまえが何か思い込んでるのは
コンパイラに警告されたからだろうが
警告って何かわかってねえのまる出しだな
298:デフォルトの名無しさん
17/05/27 12:56:06.47 XzB/9PvX0.net
ANSI-CはK&Rで書かれたソースがそのままコンパイルできるように作られたので、エラーではなく警告にしたのは当たり前だ
バカすぎるぞ お前
299:デフォルトの名無しさん
17/05/27 15:45:49.87 4RTqTK2k0.net
>>285
>K&Rではポインタの型検査を行ってなかったので、char *(に限らず全てのポインタ)が互換だっただけだ
が事実だったら
>>292
>memcpyとか一々キャストしなきゃならないだろ
300:デフォルトの名無しさん
17/05/27 15:46:27.40 4RTqTK2k0.net
>>285
>K&Rではポインタの型検査を行ってなかったので、char *(に限らず全てのポインタ)が互換だっただけだ
が事実だったら
>>292
>memcpyとか一々キャストしなきゃならないだろ
ではないのではないだろうか?
301:デフォルトの名無しさん
17/05/27 19:48:36.25 bhlzwwxY0.net
QZ怒りの自演がバレるwwww
302:デフォルトの名無しさん
17/05/27 20:24:35.80 jOh20AuV0.net
voidポインタでもキャストしてるわw
303:デフォルトの名無しさん
17/05/27 22:37:43.80 y4s2F+UB0.net
freeの戻り値って普通キャストしていたよね
304:デフォルトの名無しさん
17/05/27 23:30:24.62 3hOJokwS0.net
(*´ω`*)?
305:デフォルトの名無しさん
17/05/27 23:45:53.19 vBffp2jh0.net
(* ͡° ͜ʖ ͡°*)=3
306:デフォルトの名無しさん
17/05/28 07:21:49.29 cMxKlmAA0.net
>>294
ほらな、警告とは何かがわかってない
X3.159-1989ではエラーも警告も定義していない
それらは特定のコンパイラ製品の挙動だ
特定のコンパイラにdisられたら
自分が悪いんだろうとしか思えない
ど初心者の心理からいつまで経っても
卒業できないポンコツPG乙
307:デフォルトの名無しさん
17/05/28 20:40:53.29 5m3UytZ+0.net
さあQZが自演するぞ
308:デフォルトの名無しさん
17/05/28 20:44:17.90 5m3UytZ+0.net
ゴミ無職QZのクソコード自演は本当に気持ち悪い
309:デフォルトの名無しさん
17/05/28 21:50:21.98 HrcHJfqb0.net
>>299
いつの時代のfreeは値返したの?
310:デフォルトの名無しさん
17/05/28 21:54:08.04 QPUrPhGM0.net
ANSI C以外を語るじじいが居座るスレかよw
311:デフォルトの名無しさん
17/05/28 21:55:27.91 cMxKlmAA0.net
K&Rにはvoidがなく返却値の型を省略すればintと見なされた
returnがないか空のreturn;は不定を返した
これだけ言えばわかるな?
312:デフォルトの名無しさん
17/05/28 22:01:09.82 QPUrPhGM0.net
C言語はUNIXの仕様が前提だから、そこまで含めて移植しなかったから混乱した。
313:デフォルトの名無しさん
17/05/28 22:04:17.46 VrUpCcMk0.net
(void)free(ptr) ?
314:デフォルトの名無しさん
17/05/28 22:10:09.67 HrcHJfqb0.net
>>307
いや、freeが何返してたのか解らんけど。それをcastする理由も。
まぁ、一生使うことのない知識だからどうでも良いけどね。
315:デフォルトの名無しさん
17/05/28 22:37:19.96 7TA+N7360.net
>>307
でvoidもないのに何にキャストしてたって? w
316:デフォルトの名無しさん
17/05/28 23:16:58.78 KL+xXoJsM.net
只の釣りだな
317:デフォルトの名無しさん
17/05/29 01:09:58.10 lyV0c6X20.net
>>307
たびたび見受けられるけれど、『返却値』を使うのはやめて欲しい
関数に与えた値をそのまま返すとは限らないんだから
普通に返り血、戻り値じゃあかんの?
318:デフォルトの名無しさん
17/05/29 01:16:09.85 j0cmL5ae0.net
返却値と返り値で、何が違うの?
確かに返却値って言葉はあまり使わない気がするけど、そんなこだわるほどのもん?
319:デフォルトの名無しさん
17/05/29 01:17:52.13 zS+u+zXg0.net
排泄値にしよう
320:デフォルトの名無しさん
17/05/29 01:27:03.01 lyV0c6X20.net
>>314
返却って人から借りた物をそのまま返すという印象が強い
個人の見解と言ってしまえばそれまでだけれども
321:デフォルトの名無しさん
17/05/29 01:53:50.29 j0cmL5ae0.net
>>316
その君の言うところの意味が、「返す」と何が違うの?って話。
「返す」を大辞林で引いたら一番目の意味に「返却」と書いてある事実をどう考える?
所詮その程度の主観的な印象に過ぎない物を、人に押し付けられても…
まあ、2chだし、言うのも勝手か。
322:デフォルトの名無しさん
17/05/29 02:14:29.26 JtPPrjAE0.net
>>317
返すの意味の一つに返却があるというだけでイコールでは無いと思うけどね。
例えば”上げる”とか辞書引いたら色んな意味が載ってて一番目に載ってる意味と関連するわけではないということは解るよね。
323:デフォルトの名無しさん
17/05/29 02:20:02.64 lyV0c6X20.net
>>317
返すって言うところを返却に置き換えることが出来るのは限定されるでしょうに
あなたは釣り銭を返却するって言うつもり?
受けた恩を返却するの?
324:デフォルトの名無しさん
17/05/29 05:18:14.60 6wk42oha0.net
>>313
それは日本鉱業標準審査会に言え
俺に言うな、わかった?
325:デフォルトの名無しさん
17/05/29 06:20:41.78 RCqUfmRt0.net
>>313
スプラッターな言語やね
326:デフォルトの名無しさん
17/05/29 06:24:13.95 KA+g5PFR0.net
$$$4.3$$$
"V"="1.3335412","0","1","3Q",
327:デフォルトの名無しさん
17/05/29 07:45:45.57 cJoa6MEM0.net
>>320
石炭でも掘るのかよ?
328:デフォルトの名無しさん
17/05/29 09:05:50.24 j0cmL5ae0.net
>>319
おかしくないと思うけど?
329:デフォルトの名無しさん
17/05/29 09:08:17.15 m6wef0Zf0.net
釣り銭がでてくる所は返却口って呼称してることが多いが まぁ
330:デフォルトの名無しさん
17/05/29 09:15:26.79 kbe0Kudi0.net
まさかと思って調べてみれば JIS X3010 では本当に返却値になっているんだな
331:デフォルトの名無しさん
17/05/29 09:38:12.28 5HzXgXAz0.net
おいQZそれ以上発狂するな
お前の無知がバレるぞ
332:デフォルトの名無しさん
17/05/29 09:40:08.06 3z87Obs+0.net
ここまで「却」という漢字の調べた者なしw
「却」の意味は答えると「返却値」はおかしいが、英語でReturnと言ってるので返却と翻訳したのだろう。
333:デフォルトの名無しさん
17/05/29 10:07:07.99 h1ztVJLm0.net
返すのは制御で、その時に渡す値くらいに思ってたな
334:age
17/05/29 11:00:15.37 T5H0S0Nm0.net
Windows環境のHANDLE型について教えて下さい。
Windows10/64環境下とWindows7/64環境ではHANDLE型の扱いは異なるのでしょうか?
HANDLE型が使用できない処理系の為に
HANDLE型を返すWindowsのAPIにラッパする形でHANDLE型を整数(unsigned long)にキャストするDLLを作成し、
HANDLE型が使用できない処理系から作成したDLLを通して目的のAPIを使用していました。
Windows7の32/64ビット環境では動作しているのですが、
Windows10の64ビットでは動作しません。
(Windows10/32ビットでは動作しています。)
335:デフォルトの名無しさん
17/05/29 11:13:27.19 TgEUVyWp0.net
戻り値を捨てるときはvoidにキャストしてるな
336:デフォルトの名無しさん
17/05/29 11:27:00.44 JtPPrjAE0.net
>>330
URLリンク(msdn.microsoft.com)(v=vs.85).aspx
HANDLEはPVOID
PVOIDはvoid*
つまり64bitのWindowsアプリケーション(LLP64環境)では64bit 同環境でunsigned longは32bit
つまりWindows7ではたまたま動いてるだけ。
337:デフォルトの名無しさん
17/05/29 13:16:39.33 6ZDN/iGxa.net
>>330
Windows SDKの話をここでするなというやつがいるから、Windows SDKスレを探したらないんだなw
338:653
17/05/29 13:22:41.71 BOg3kn5n0.net
win32apiスレがあるじゃん
339:デフォルトの名無しさん
17/05/29 19:29:40.57 5HzXgXAz0.net
おいQZ下手に知識をひけらかそうとするなよ
無知がバレるぞ
340:片山博文MZ
17/05/29 19:51:26.34 EYaE0z6gd.net
マイケルソフトは標準化を破壊し、混乱をもたらす者。
341:片山博文MZ
17/05/29 19:57:52.02 EYaE0z6gd.net
パソコンの中に主権があるとしたら、我々の主権はマイケルソフトに蹂躙され続けている。
342:デフォルトの名無しさん
17/05/29 20:21:44.72 mrHKi14mM.net
なら使うのやめたら?
343:デフォルトの名無しさん
17/05/29 20:38:58.27 5HzXgXAz0.net
QZ怒りのLinux
344:デフォルトの名無しさん
17/05/29 20:55:21.03 zjgINM2w0.net
ここの過半数が訳語「返却値」を知らないわけか
マジでアホの集まりだな
345:デフォルトの名無しさん
17/05/29 21:35:32.81 j0cmL5ae0.net
│
│
し
346:片山博文MZ
17/05/29 21:45:39.05 EYaE0z6gd.net
ぶらぶらうざい、ブラウザ
347:デフォルトの名無しさん
17/05/29 21:49:57.04 ZHccw+L90.net
返却値知ってる俺カッケー
ってか w
348:デフォルトの名無しさん
17/05/29 22:27:06.81 6SN6+L3k0.net
少なくとも返り血というなら返却血だな
349:デフォルトの名無しさん
17/05/29 22:54:17.27 hRA+Cftk0.net
returnは、他動詞だから、返す値だろ。返された値
シェーン、カムバック!
350:330
17/05/30 09:45:25.55 Kzko1WIk0.net
>>332
ありがとうございました。
「たまたま動いているだけ」が妙に納得しました。
351:デフォルトの名無しさん
17/05/30 20:02:22.03 C+7xWm9c0.net
このスレきも!って思ったらQZが自演しまくてるのか
352:デフォルトの名無しさん
17/05/31 05:42:53.04 89AX9+Wb0.net
>>343
知らないおまえは最悪に格好悪い
これだけは間違いない
353:デフォルトの名無しさん
17/05/31 06:38:16.67 /NpZlBRIM.net
>>348
だれも「知らない」なんて言ってないんだが...
思い込みでバグ作り込むタイプやね w
354:デフォルトの名無しさん
17/05/31 06:57:32.87 g7bIgogk0.net
俺は知らんなぁ。
知ってると何か良いことあんの?
355:デフォルトの名無しさん
17/05/31 09:15:02.98 jPWlNl/x0.net
異なる翻訳単位に存在するtypedefで定義された型を参照するには
どうやればできますか?
356:デフォルトの名無しさん
17/05/31 11:27:45.76 tgfSYh/d0.net
typedef した部分を分離独立して、必要に応じて #include とかは普通にアリだけど。
この場合、#include した時点で同じ翻訳単位になってしまいそうだし。
A.できません(たぶん
357:デフォルトの名無しさん
17/05/31 12:08:17.16 BjVTieBy0.net
参照する必要が出た時点で共有しなきゃならんでしょ
適当なヘッダで宣言して必要に応じてincludeだな
逆に、その型を公開できない理由があるの?
358:デフォルトの名無しさん
17/05/31 12:21:23.09 9Uam09Ht0.net
何でインクルードすると同じ翻訳単位になるの?
359:デフォルトの名無しさん
17/05/31 12:33:24.61 cF3ZhhKb0.net
プリプロセス終了後の1ソースの範囲が翻訳単位だし
ソース中の #include によって展開されたものは同じ単位内だべさ
360:デフォルトの名無しさん
17/06/01 22:22:53.65 iiFY2Tb80.net
>>349
いや、おまえは知らない
そうでなければ343のような発言には至りえない
361:デフォルトの名無しさん
17/06/01 22:23:46.02 iiFY2Tb80.net
知ってても、このやりとりで知っただけのくせに
それ以上に訳知り顔すんじゃねえぞ
362:デフォルトの名無しさん
17/06/01 22:50:17.11 JcXv0anO0.net
>>356 > いや、おまえは知らない
って大見得切ったのに
>>357 > 知ってても
っていきなりトーンダウンするチキン乙 w
363:デフォルトの名無しさん
17/06/01 23:19:34.58 Dt+iD1aba.net
相変わらずどうでもいい言い争いをしてるな
364:デフォルトの名無しさん
17/06/01 23:36:18.95 Gz+/nkqG0.net
知ってたからといって、どうというものでもないものをよくここまで引っ張れるよね。
365:デフォルトの名無しさん
17/06/02 05:53:52.88 3GNvn+Lb0.net
効いてる効いてるw
俺、別に言ってること変えてねえぜ
まあ、そういうことにしなきゃ立場ねえのはわかるが
366:デフォルトの名無しさん
17/06/02 07:14:07.93 ROv7EaIxM.net
自分だけが知ってるスッゴい知識
をバカにされた老害発狂 w
367:デフォルトの名無しさん
17/06/02 11:34:32.62 pA0XtcoN0.net
同じファイルをインクルードしたところで
.cが違えば翻訳単位も違うだろ
368:デフォルトの名無しさん
17/06/02 12:19:23.31 V1/OI3VR0.net
異なる翻訳単位に存在するtypedefで定義された型を参照するには
自分の翻訳単位に同じ定義を持ち込むしかない
369:デフォルトの名無しさん
17/06/02 13:28:22.87 fUQLBdQr0.net
関数側から見て返す値がリターン(Return)値
関数を呼び出した側が受け取る値をリザルト(Result)値
私はこの二つでしか理解しておりませぬ
370:デフォルトの名無しさん
17/06/02 19:53:55.49 4eAI2C8m0.net
はあ?
無知をバカにされて発狂してんのはおまえだろw
371:デフォルトの名無しさん
17/06/02 21:04:53.84 kW0O8rcbM.net
>>365
Pascal だと関数側が result だけどね。
Cしか知らないなら仕方ないけど。
372:デフォルトの名無しさん
17/06/03 19:01:35.82 d/bMfhNd0.net
「自分だけが知ってる」すっごい知識だっておバンバン
自分の国の公文書に書いてあることなんだが
あ、自分の国じゃなかったか
なるほどそのようで
373:デフォルトの名無しさん
17/06/03 20:31:14.37 ez6eSYjJ0.net
>>368
公文書に書いてあるんだ。それって何の公文書?
374:デフォルトの名無しさん
17/06/03 23:15:17.12 0mDMXJvk0.net
>>369
JIS X3010:2003のことだろ
C99のISO規格(ISO/IEC 9899:1999)を翻訳して日本工業規格(JIS)に標準化したもの
375:デフォルトの名無しさん
17/06/03 23:29:36.08 ez6eSYjJ0.net
>>370
JIS規格票は公文書だったのか。それは知らなかった。
376:デフォルトの名無しさん
17/06/03 23:39:27.80 0mDMXJvk0.net
>>371
一応JISは法令に基づいて制定される日本の標準規格だし公文書と言ってもいいんじゃないの?
URLリンク(ja.wikipedia.org)
377:デフォルトの名無しさん
17/06/04 00:25:08.91 X8vsjvHi0.net
私文書じゃないだろ。
378:デフォルトの名無しさん
17/06/04 02:48:19.44 0v3tAx3a0.net
公文書なら無料にするべきだ
379:デフォルトの名無しさん (ワッチョイ f9d1-N+Y+)
17/06/04 08:52:49.42 aIMLeetf0.net
複写に費用や手数料取られるのは当たり前だろ。
図書館で借りれば無料なんだし。
380:デフォルトの名無しさん (ワッチョイ 6a37-1CPh)
17/06/04 11:22:12.97 QtczELPi0.net
公文書の無料と言うのは、国民全員の負担になるということなので、実はあまり良くない。
ほとんどの人が損をするという意味で、携帯の新規機種変無料とかと似たような問題。
381:デフォルトの名無しさん (ワッチョイ f9d1-N+Y+)
17/06/04 21:48:59.17 uAW2AjVo0.net
0円携帯禁止したせいでケータイメーカ全滅したけどな。
エコポイントのせいかも知れんが。
382:デフォルトの名無しさん (ワッチョイ 66e3-rLqX)
17/06/04 22:00:00.35 xWX/pEI60.net
>>377
ツートップなんてやったもんだから、
対象外のメーカー製造取りやめたしな
383:デフォルトの名無しさん (ワッチョイ 09aa-V2gy)
17/06/04 22:17:29.69 EH/r73Ar0.net
>>375
コピーしてるの?
384:デフォルトの名無しさん (ワッチョイ 6a37-1CPh)
17/06/05 00:56:05.33 9KIhNzrG0.net
>>377
それは0円なんて言う訳のわからんガラパゴス作戦に乗っからんと売れないようなゴミを作ってたからでしょ。
385:デフォルトの名無しさん (ワッチョイ ed23-zUMb)
17/06/05 01:20:59.03 /8LBEV6v0.net
おいQZ自演しないでゴミコードを晒せよ
386:デフォルトの名無しさん (ワッチョイ ed23-zUMb)
17/06/05 04:45:59.05 /8LBEV6v0.net
QZって無知を指摘されるとすぐ自演でかき消すよな
お前もう気持ち悪いだけだから消えろよム板から
387:デフォルトの名無しさん (ワッチョイ ed23-zUMb)
17/06/05 04:49:01.59 /8LBEV6v0.net
おいQZゴミ煽りはもうやめろ
おまえはさっさとウンコードマニア殿堂入り級のゴミコードを貼ってろよ
388:デフォルトの名無しさん (ワッチョイ ed23-zUMb)
17/06/05 04:50:02.91 /8LBEV6v0.net
過去にすがるだけのゴミ無職がご高説垂れるなよ無職が
389:デフォルトの名無しさん (ワッチョイ 66a2-zUMb)
17/06/05 16:44:47.93 bGR3O5j30.net
おまえのゴミコードじゃ何も語れないから
390:デフォルトの名無しさん (ワッチョイ 91db-/x3A)
17/06/05 16:51:56.25 9PUOi1A/0.net
>>367
resultはボーランドが始めた方言だろ
391:デフォルトの名無しさん (ワッチョイ 25aa-YsH8)
17/06/05 23:06:28.96 s9HDUBeH0.net
お前ら書いたプログラムをaddressSantizerやThreadSantizer、valgrindとかでチェックしながらテスト実行してる?
392:デフォルトの名無しさん (ワッチョイ 3511-YtzE)
17/06/05 23:45:19.00 agBnyIwY0.net
Cで書かれたプログラムがどのように機械語に翻訳され実行されるのかについて書いてある資料ってありませんか?
C言語の書き方的なWebサイトや本は腐るほどありますがCのコースコードがコンパイルされリンクされ実行可能なバイナリが出来上がり
そのバイナリ(必要なら関連する動的リンクライブラリも)がメモリにロードされ実行される過程をある程度詳しく解説している物はまず見かけません
この過程で良く使用されるファイルフォーマットの情報も欲しいです
当然実行環境や開発環境によって差異はあると思いますが基本的なところは変わらないはずですよね?
今のところターゲットはWindowsのPEと組み込み向けのバイナリファイル(メモリイメージ)で、開発環境はひとまずVC++とGNU系を考えています
最近C/C++を本格的に使わざるを得なくなり調べているのですがこのへんの情報が得られずに悩んでいます
スレ違いだったらすみません
393:デフォルトの名無しさん (ワッチョイ dd9f-CnD/)
17/06/06 01:06:07.57 uiQBRp2m0.net
コンパイラの実装がどうなってるかを知りたいのか、
それとも機械語がどう実行されているのかを知りたいのか
後者ならアセンブリ言語を勉強すればいい気がする
参考書も探せばありそう
394:デフォルトの名無しさん (ブーイモ MM49-CnD/)
17/06/06 01:20:44.75 aIR29BXyM.net
>>388
本読むのが一番
おすすめは、コンピュータの構成と設計、パターソン他著
395:デフォルトの名無しさん (ワッチョイ 91db-/x3A)
17/06/06 01:48:28.43 MUdbHmDP0.net
x86ならアセンブルソース出すオプションあるだろ
396:デフォルトの名無しさん (ワッチョイ 91db-/x3A)
17/06/06 01:50:16.07 MUdbHmDP0.net
GNUだとx64もあるのかな?
まだやったことないや
397:デフォルトの名無しさん (ワッチョイ 66a2-zUMb)
17/06/06 03:59:12.40 hzSn699I0.net
QZはうざいから黙ってて
398:デフォルトの名無しさん (ドコグロ MMed-Tm/A)
17/06/06 07:16:30.22 rRaTvlwzM.net
>>388
> 最近C/C++を本格的に使わざるを得なくなり調べているのですがこのへんの情報が得られずに悩んでいます
使うだけならそんな情報は要らんだろ
ネタでないならもっとピンポイントで聞かないと本読めと言うような回答しか返しようがない
399:デフォルトの名無しさん (ワッチョイ 66aa-7ey3)
17/06/06 07:48:32.18 Q6prYP2u0.net
LLVM 言語マニュアル(Langu
400:age Reference Manual) 日本語訳 http://www.h3.dion.ne.jp/~mu-ra/llvm/LangRefJ.html
401:デフォルトの名無しさん (ワッチョイ b96f-rLqX)
17/06/06 10:44:02.61 euIMzFdw0.net
>>388
デバッガーの使い方かアセンブリ言語を調べたらいいんじゃない?
「C言語をアセンブリ言語に翻訳してどうやってコンピュータを動かすか見てみよう」
っていう企画はネットや紙面でたまに見かける
gccならオプションでアセンブリ言語を出力できたはず
402:デフォルトの名無しさん (アウアウカー Sad5-6jhl)
17/06/06 12:13:04.78 HfSY3J2pa.net
>>388
「ハロー"Hello, World"」っていう本が面白い
linuxでの話だがシステムコール呼び出しやmain関数の前に行われる処理、共有ライブラリの仕組み、elfフォーマットなどCプログラミングの裏にあるものについて詳しく書かれてる
まあ他の人も言ってるように普通にプログラミングするのにそんな情報は当分いらないけどな
403:デフォルトの名無しさん (ワッチョイ 91db-/x3A)
17/06/06 20:27:56.37 MUdbHmDP0.net
デバッグやリバーs
404:388 (オッペケ Sr3d-YtzE)
17/06/06 20:33:35.53 5Y/t1Obrr.net
レスありがとうございます
C/C++コンパイラに与える物に関する情報は沢山あるのですが、その先で何をやっているかについて解説されている資料は一気に減る気がします
リンカについて解説されている資料もあまり見ませんし、ほとんどはリンカはコンパイラが勝手に呼び出す物とされているように思います
今のところやりたいのはAPIフックやラッパーDLLなどを利用した既成アプリケーションへの介入と、組み込み系のアセンブラとCを混合した開発です
後者の場合は純正の開発ツールを使う場合に限りそれなりの資料がありますがgccなどで開発する場合の情報は多くない上に錯綜していたりします
>>389
昔組み込み系のソフトウェアをアセンブラで書いたことがあるのでアセンブラは多少読めますがCとの繋がりが見えてきません
アセンブラは違っていなければ何でもOKな所があるというか、特に生で動かす場合はレジスタの使い方からコードの配置やジャンプの方法まで
好きに決められますけど、Cだとその辺は全てブラックボックスですよね
>>391,396
アセンブルリストを出せるのは知っていますが出てきたコードはそのまま実行出来る物ではないですよね?たとえば別のソースコードの関数を
呼ぶようなケースでは呼び出し元が呼び出し先のアドレスを把握できていないと動かないはずです
>>397
おぉ、探していた物一つはまさにそんな感じの情報です。Windows向けのがあれば理想的でしたがその本を探してみます
405:デフォルトの名無しさん (ワッチョイ dd11-zUMb)
17/06/06 20:38:47.84 xjZg+i4X0.net
Advanced windows かの?
406:デフォルトの名無しさん (ドコグロ MM12-TiZ7)
17/06/06 21:05:10.62 i8rk4NdIM.net
知りたいことは言語じゃなくてOSの仕様なのに
言語の延長だと思い込んでるから情報にたどり着けないんだろう
407:デフォルトの名無しさん (ワッチョイ 9e7e-SN6U)
17/06/06 21:18:01.76 vqgdCAO10.net
ハロー“Hello, World” OSと標準ライブラリのシゴトとしくみ
が挙げられているが、その著者の坂井さん関連で本屋で実際手に取って
みて好きなのを選んだらどうだろうか。
12ステップで作る組込みOS自作入門
URLリンク(www.amazon.co.jp)
リンカ・ローダ実践開発テクニック
URLリンク(www.amazon.co.jp)
熱血! アセンブラ入門
URLリンク(www.amazon.co.jp)
408:デフォルトの名無しさん (ドコグロ MM12-Tm/A)
17/06/06 21:33:57.74 6cAGm0S8M.net
>>399
> ほとんどはリンカはコンパイラが勝手に呼び出す物とされているように思います
コンパイラとコンパイラドライバの区別もついてないのに背伸びしすぎ w
そもそもgccでもアセンブラを混在させたきゃインラインアセンブラで充分だしドキュメントも揃ってる
409:デフォルトの名無しさん (アウアウカー Sad5-rT7Q)
17/06/06 23:03:45.40 1lY7TIjFa.net
URLリンク(www.amazon.co.jp)
410:デフォルトの名無しさん (ワッチョイ 2997-8pkt)
17/06/06 23:37:37.16 Qy4U0ic00.net
>>403
言ってることが嘘くさいよな。コンパイル、リンクの流れを知らないのは。
411:デフォルトの名無しさん (ワッチョイ f9cf-q7dZ)
17/06/07 01:45:32.01 MW2os+Jx0.net
ヒカル TV出演「年間5億は稼ぐ勢いですね」
URLリンク(www.youtube.com)
第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ!
URLリンク(www.youtube.com)
ユーチューバーの儲けのカラクリを徹底検証!
URLリンク(www.youtube.com)
【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開!
URLリンク(www.youtube.com)
誰も言わないなら俺がYouTuberのギャラ相場を教えます
URLリンク(www.youtube.com)
YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法
URLリンク(www.youtube.com)
最高月収5000万円だとさ。年収じゃなくて「月収」な
おまえらもyoutubeに動画投稿したほうがいいぞ。副業にぴったしだ
やろうと思えばスマホがあればできるぞ
最低2年はやらないとここまではいかないだろうけど才能とアイデアと
企画力と継続力があればが大儲けできる可能性がなくもない
まだまだ他の職種に比べれば競争率は低いからオススメ
顔出したくないならラファエルみたいに仮面つければいい
412:デフォルトの名無しさん (ワッチョイ f9cf-q7dZ)
17/06/07 01:46:59.80 MW2os+Jx0.net
ヒカル TV出演「年間5億は稼ぐ勢いですね」
URLリンク(www.youtube.com)
第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ!
URLリンク(www.youtube.com)
ユーチューバーの儲けのカラクリを徹底検証!
URLリンク(www.youtube.com)
【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開!
URLリンク(www.youtube.com)
誰も言わないなら俺がYouTuberのギャラ相場を教えます
URLリンク(www.youtube.com)
YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法
URLリンク(www.youtube.com)
最高月収5000万円だとさ。年収じゃなくて「月収」な
おまえらもyoutubeに動画投稿したほうがいいぞ。副業にぴったしだ
やろうと思えばスマホがあればできるぞ
最低2年はやらないとここまではいかないだろうけど才能とアイデアと
企画力と継続力があればが大儲けできる可能性がなくもない
まだまだ他の職種に比べれば競争率は低いからオススメ
顔出したくないならラファエルみたいに仮面つければいい
ハロウィン用でいろいろな仮装マスク売ってるからオヌヌメ
413:388 (オッペケ Sr3d-YtzE)
17/06/07 07:27:30.60 ahDmd+gPr.net
一番使用経験があるのがインタプリタで、次がアセンブラです。この二つは一から実用になる物を作ったことがありますが
コンパイラは既存のコードを改造するのがせいぜいで何かを一から作ったことがありません
C/C++はVC++にプロジェクトを読み込んでビルドしたり、configure→makeやgccのコマンドを叩くくらいしかできないです
>>400,402,404
全部買える余裕はないのでまずは本屋で眺めてみます
>>403
組み込み系だとアセンブラからCで書かれたコードを呼び出す例も普通にあるようです
リセットベクタから最初に実行されるコードはアセンブラで書くのが一般的みたいですし
>>401
あ、なるほど。実行する部分はOSの仕事ですね
414:デフォルトの名無しさん (ワッチョイ 250d-k7rq)
17/06/07 11:32:37.62 F8quZWoL0.net
>一から実用になる物を作ったことがあり
を指してるのは
(自作した)インタプリタと (自作した)アセンブラ じゃなく
既存のインタプリタと既存のアセンブラによって得られた生成物
だよな?
415:デフォルトの名無しさん (ワッチョイ 66aa-7ey3)
17/06/07 11:49:04.14 SSzPpmQQ0.net
情報処理資格の組み込み・エンベッドのテキストに書いてある
宇宙産業・医療機器・産業機械などは、組み込みの高資格を持っていないと無理。
この領域では、すぐに人が死ぬから、MISRA-C に準拠していないと、使えない。
国際的に、MISRA-C 無しのCは、製品には使えない
各人が、個別のアセンブラで学ぶことは、
各人が個別の言語で話すことと同じになり、分断される
だから日本の情報処理資格では、CASL2 という抽象的なアセンブラで、議論する。
それをまねたのが、LLVM。
だから外国が、LLVMに飛びついた
>>395
を参照
416:デフォルトの名無しさん (アウーイモ MMa1-8pkt)
17/06/07 12:42:49.70 AU15h8rIM.net
>>408
Cで作られたかどうかは関係ないだろw
417:デフォルトの名無しさん (ワッチョイ ea1e-N+Y+)
17/06/07 19:23:59.78 vdjoMcEt0.net
>>408
大概の言語ならコンパイラもあるんじゃないの?py2cとかperl2cなんかもあるし。
418:デフォルトの名無しさん (ワッチョイ 66a2-zUMb)
17/06/07 20:09:08.11 sUBS3aGw0.net
QZ怒りの流れを無視した無知晒しレス
419:デフォルトの名無しさん (ワッチョイ eaea-q7dZ)
17/06/07 23:18:34.34 Mt8hQ3L40.net
鶴亀算のプログラムが違うと言われたのですが、どこが違うか教えてくださいm(_ _)m
#include <stdio.h>
int main(void){
int a;//足の合計
int b;//頭の合計
int c;//鶴1羽の足の数
int d;//亀1匹の足の数
int x,y;
scanf("%d %d %d %d",&a,&b,&c,&d);
//全部が鶴だとする
x = c * b;
//実際の足数の合計-全部が鶴の場合の足数
x = a-x;
//亀の数
x = x / 2;
//鶴の数
y = b - x;
printf("%d %d\n",x,y);
return 0;
}
そもそも鶴亀算の計算方法がネットで調べてもよく分かりませんでした