!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
※前スレ
C言語なら俺に聞け 154
https://mevius.5ch.net/test/read.cgi/tech/1578997950/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 155
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 76ba-P5bm)
2020/05/10(日) 23:20:27.99ID:Z3WQBr9X0581デフォルトの名無しさん (ワッチョイ 95ca-ebQW)
2020/07/21(火) 18:13:57.71ID:zwiBtbEn0 独学で始めたからリンカの使い方とかよく分からず、C のソースを全部 include してたな。
582デフォルトの名無しさん (ワッチョイ 7646-NUPd)
2020/07/21(火) 19:46:32.95ID:tvr2GUf40 >>581
nanisore. 面白い。詳しく。
nanisore. 面白い。詳しく。
583デフォルトの名無しさん (ワッチョイ 6d63-zSg9)
2020/07/21(火) 20:00:00.53ID:bmKYQrdR0 多分分割コンパイルのやり方を知らなかった頃の話だろう
584デフォルトの名無しさん (ワッチョイ 95ca-ebQW)
2020/07/21(火) 20:10:11.93ID:zwiBtbEn0585デフォルトの名無しさん (アウアウエー Sa02-rGUB)
2020/07/21(火) 22:42:16.68ID:nbzaQebba 依存ファイル集める方がよほど知識が要りそう
586デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 15:51:53.55ID:xRlBM5RB0 このコード最適化の余地ある?-O3でやっても1900msとかかかるんだけど
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int f(int size, int *data1, int *data2) {
int r = 0;
for (int j = 0; j < 100; j++) {
for (int i = 0; i < size; i++) {
r ^= data1[i] & data2[i];
}
}
return r;
}
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int f(int size, int *data1, int *data2) {
int r = 0;
for (int j = 0; j < 100; j++) {
for (int i = 0; i < size; i++) {
r ^= data1[i] & data2[i];
}
}
return r;
}
587デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 15:52:29.23ID:xRlBM5RB0 int main(int argc, char *argv[]) {
int size = 1000 * 1000 * 100;
int *data1 = (int*) malloc(size * sizeof(int));
int *data2 = (int*) malloc(size * sizeof(int));
//setup test data
srand((int) time(NULL));
for (int i = 0; i < size; i++) {
data1[i] = rand();
data2[i] = rand();
}
int sec, millisec;
struct timeb timebuffer;
//start
ftime(&timebuffer);
sec = timebuffer.time;
millisec = timebuffer.millitm;
int size = 1000 * 1000 * 100;
int *data1 = (int*) malloc(size * sizeof(int));
int *data2 = (int*) malloc(size * sizeof(int));
//setup test data
srand((int) time(NULL));
for (int i = 0; i < size; i++) {
data1[i] = rand();
data2[i] = rand();
}
int sec, millisec;
struct timeb timebuffer;
//start
ftime(&timebuffer);
sec = timebuffer.time;
millisec = timebuffer.millitm;
588デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 15:52:35.64ID:xRlBM5RB0 // benchmark
int r = f(size, data1, data2);
// end
ftime(&timebuffer);
sec = timebuffer.time - sec;
millisec = timebuffer.millitm - millisec;
millisec += sec * 1000;
printf("%d ms \n %d", millisec, r);
free(data1);
free(data2);
}
int r = f(size, data1, data2);
// end
ftime(&timebuffer);
sec = timebuffer.time - sec;
millisec = timebuffer.millitm - millisec;
millisec += sec * 1000;
printf("%d ms \n %d", millisec, r);
free(data1);
free(data2);
}
589デフォルトの名無しさん (JP 0H55-ZQKC)
2020/07/22(水) 16:01:48.88ID:lGyqioywH f()で0返せばいいんじゃね?
590デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 16:06:36.57ID:xRlBM5RB0 たしかにrが0になるが
たぶんsrand, randで値の分布が一様じゃないせいか?
Javaとの性能比較してたんだけど乱数生成法が合わせれないな
たぶんsrand, randで値の分布が一様じゃないせいか?
Javaとの性能比較してたんだけど乱数生成法が合わせれないな
591デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 16:07:57.00ID:xRlBM5RB0 あ違うなsizeがでかすぎると0になっちゃうのか
592デフォルトの名無しさん (ワッチョイ 69e6-5TCi)
2020/07/22(水) 16:11:34.79ID:1buRSft90 Java(VM)とCという言語の比較をしたいのかこのソースを最適化したいのかrandの仕様を統一したいのか意味不明だわ
593デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 16:21:46.25ID:xRlBM5RB0 JavaとCの性能比較で「Javaは高速だCに負けてない」とか
「JITやGCが動作する時に遅くなるだけだ」とか良く言われてる。
でもこういう単純な配列処理でCの方が3倍くらい速いよな、と思って。
この処理は計測中にヒープ割当が無いからGC関係ない(Javaでオブジェクトを作成するとGCのためのオーバーヘッドがあるらしい)。
JavaでJIT効かせてから計測してもCが4倍弱速かった。
最初1900msもかかるといってたのは勘違い。Cの方が4倍弱速いから予想通りの性能だった。
Javaの性能に関する言説を見渡しても、なぜこういう処理でJavaが遅いのか説明が無い。
大量のデータを処理しつつ特定の値に収束しない良いベンチマークコードがあればいいんだが。
足す引きを交互に繰り返すか。
「JITやGCが動作する時に遅くなるだけだ」とか良く言われてる。
でもこういう単純な配列処理でCの方が3倍くらい速いよな、と思って。
この処理は計測中にヒープ割当が無いからGC関係ない(Javaでオブジェクトを作成するとGCのためのオーバーヘッドがあるらしい)。
JavaでJIT効かせてから計測してもCが4倍弱速かった。
最初1900msもかかるといってたのは勘違い。Cの方が4倍弱速いから予想通りの性能だった。
Javaの性能に関する言説を見渡しても、なぜこういう処理でJavaが遅いのか説明が無い。
大量のデータを処理しつつ特定の値に収束しない良いベンチマークコードがあればいいんだが。
足す引きを交互に繰り返すか。
594デフォルトの名無しさん (ワッチョイ 1301-KHfa)
2020/07/22(水) 16:24:26.21ID:t6q0HDDX0 >>586
data1[i] & data2[i] の計算を100回もやることはないから
int f(int size, int *data1, int *data2) {
int *data3 = (int*) malloc(size * sizeof(int));
for (int i = 0; i < size; i++) {
data3[i] = data1[i] & data2[i];
}
int r = 0;
for (int j = 0; j < 100; j++) {
for (int i = 0; i < size; i++) {
r ^= data3[i];
}
}
free(data3);
return r;
}
ってやると多少速くなるかも
あとは分割してスレッドで並行して実行するとかかな
data1[i] & data2[i] の計算を100回もやることはないから
int f(int size, int *data1, int *data2) {
int *data3 = (int*) malloc(size * sizeof(int));
for (int i = 0; i < size; i++) {
data3[i] = data1[i] & data2[i];
}
int r = 0;
for (int j = 0; j < 100; j++) {
for (int i = 0; i < size; i++) {
r ^= data3[i];
}
}
free(data3);
return r;
}
ってやると多少速くなるかも
あとは分割してスレッドで並行して実行するとかかな
595デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 16:26:57.20ID:xRlBM5RB0 これで収束しないし毎回ランダムな結果になる。
long f(int size, int *data1, int *data2) {
long r = 0;
for (int j = 0; j < 100; j++) {
for (int i = 0; i < size; i++) {
r += data1[i] - data2[i];//ここ変えた
}
}
return r;
}
long f(int size, int *data1, int *data2) {
long r = 0;
for (int j = 0; j < 100; j++) {
for (int i = 0; i < size; i++) {
r += data1[i] - data2[i];//ここ変えた
}
}
return r;
}
596デフォルトの名無しさん (JP 0H55-ZQKC)
2020/07/22(水) 16:34:17.16ID:lGyqioywH なんだ、^ の意味わかってなかったのか。
ていうか、コードの最適化を求めるなら、
そのコードの目的のほうが先に存在するはずじゃないのか?
コロコロ変えてさあ最適化しろとかおかしいだろ。
ていうか、コードの最適化を求めるなら、
そのコードの目的のほうが先に存在するはずじゃないのか?
コロコロ変えてさあ最適化しろとかおかしいだろ。
597デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 16:39:25.22ID:xRlBM5RB0 0になってたのは^じゃなくて&が原因だろ
598デフォルトの名無しさん (JP 0H55-ZQKC)
2020/07/22(水) 16:42:01.87ID:lGyqioywH ^ だよ
最後のやつで + を ^ にしたらどうなる?
最後のやつで + を ^ にしたらどうなる?
599デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 16:44:20.78ID:xRlBM5RB0 あr=0でr^=使ってたからか
演算子の意味じゃなくてr=0で始めてる事との整合性に気付いてなかった
r = rand();
r ^= data1[i] ^ data2[i]
これなら収束しないはず
演算子の意味じゃなくてr=0で始めてる事との整合性に気付いてなかった
r = rand();
r ^= data1[i] ^ data2[i]
これなら収束しないはず
600デフォルトの名無しさん (JP 0H55-ZQKC)
2020/07/22(水) 16:46:16.22ID:lGyqioywH それ、最初の rand の値が返るだけだから。
601デフォルトの名無しさん (エムゾネ FF33-keh3)
2020/07/22(水) 16:56:43.54ID:J+LKPgcIF もしかして残念なベンチ
602デフォルトの名無しさん (JP 0H55-ZQKC)
2020/07/22(水) 17:05:53.92ID:lGyqioywH 目的の明確でないベンチマーク作っても無駄だよね。
何を調べたいの?
何を調べたいの?
603デフォルトの名無しさん (ワッチョイ 69e6-5TCi)
2020/07/22(水) 17:19:08.68ID:1buRSft90 > この処理は計測中にヒープ割当が無い
って書いてあるけどガッツリ malloc してるし本当に何がしたいのか良く分からない
って書いてあるけどガッツリ malloc してるし本当に何がしたいのか良く分からない
604デフォルトの名無しさん (スププ Sd33-Y9Vl)
2020/07/22(水) 17:34:24.16ID:Y73iWKLTd 全ての値を偶数回^すれば答えは0になって当然
605デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 17:58:11.98ID:xRlBM5RB0606デフォルトの名無しさん (スップ Sd73-Ky2H)
2020/07/22(水) 17:59:58.58ID:HrEyCXiAd >>586
大いに改善の余地あり
0になることを仮定せずに真面目に計算するとして
データがメモリがキャッシュに入るとすると
計算の依存関係ありまくりだから
ほぼレイテンシ待ちになる
ループ4周を展開して
rを4個に分けるだけで速くなりそう
SIMD命令が使えるなら
非常に効果がある形なので
使えるなら使う
この場合も演算の依存関係は減らすこと
データがキャッシュに収まらないなら
メモリ速度で決まるからあまり関係ない
大いに改善の余地あり
0になることを仮定せずに真面目に計算するとして
データがメモリがキャッシュに入るとすると
計算の依存関係ありまくりだから
ほぼレイテンシ待ちになる
ループ4周を展開して
rを4個に分けるだけで速くなりそう
SIMD命令が使えるなら
非常に効果がある形なので
使えるなら使う
この場合も演算の依存関係は減らすこと
データがキャッシュに収まらないなら
メモリ速度で決まるからあまり関係ない
607デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 18:03:43.69ID:xRlBM5RB0 代入されないんじゃなくて偶数回^すると元に戻るのか
608デフォルトの名無しさん (ブーイモ MM4d-ZQKC)
2020/07/22(水) 18:04:59.81ID:YNla03BQM609デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 18:09:25.81ID:xRlBM5RB0610デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 18:12:28.77ID:xRlBM5RB0 あーじゃあr=0で始めてたことは関係無くて、
単に二重ループの外側が偶数回だと無意味だと。
r=0で始めてもXORならちゃんとビット列変わってたけどXORの性質から元に戻ってたと。
コンパイラがそれ知ってたら最適化して処理消しちゃうから良くないな。
XORのその性質を知らなかった
単に二重ループの外側が偶数回だと無意味だと。
r=0で始めてもXORならちゃんとビット列変わってたけどXORの性質から元に戻ってたと。
コンパイラがそれ知ってたら最適化して処理消しちゃうから良くないな。
XORのその性質を知らなかった
611デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 18:26:49.94ID:xRlBM5RB0 より正しく述べておこう
・1回でも101回でも同じ結果なのでXOR版では二重ループの外側が無意味
・data1, data2がどんな数列でもXORの性質は同様にある
ID:lGyqioywHとID:YNla03BQMはこれを言ってたんだな
・1回でも101回でも同じ結果なのでXOR版では二重ループの外側が無意味
・data1, data2がどんな数列でもXORの性質は同様にある
ID:lGyqioywHとID:YNla03BQMはこれを言ってたんだな
612デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 18:26:50.13ID:xRlBM5RB0 より正しく述べておこう
・1回でも101回でも同じ結果なのでXOR版では二重ループの外側が無意味
・data1, data2がどんな数列でもXORの性質は同様にある
ID:lGyqioywHとID:YNla03BQMはこれを言ってたんだな
・1回でも101回でも同じ結果なのでXOR版では二重ループの外側が無意味
・data1, data2がどんな数列でもXORの性質は同様にある
ID:lGyqioywHとID:YNla03BQMはこれを言ってたんだな
613デフォルトの名無しさん (ブーイモ MM4d-ZQKC)
2020/07/22(水) 19:03:36.52ID:YNla03BQM かようにベンチマークっていうのは難しいんだ。
CPUの比較をするだけでもいろんな提案があって
SPECとかはなんとか信頼されているが、
言語間の性能比較とか素人が適当にでっち上げても、
そのプログラムが悪いだけじゃねってなるのがオチ。
CPUの比較をするだけでもいろんな提案があって
SPECとかはなんとか信頼されているが、
言語間の性能比較とか素人が適当にでっち上げても、
そのプログラムが悪いだけじゃねってなるのがオチ。
614デフォルトの名無しさん (ワッチョイ d9ca-13t9)
2020/07/22(水) 21:28:34.34ID:EzFbgF7R0 最終的に 0 になるだろけど、この計算は愚直に行われるんでしょ。
答えが 0 にしかならないことと C と Java の速度差がそうなることとはまた別の話だよね。
って、コードの最適化の話だったんだっけ?
答えが 0 にしかならないことと C と Java の速度差がそうなることとはまた別の話だよね。
って、コードの最適化の話だったんだっけ?
615デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/22(水) 22:22:42.43ID:xRlBM5RB0 Cがこの処理でJavaより3〜4倍速い事は確認できた。
0に収束する事とそれは無関係。
以下、一応書くけど完全にスレ違い。
このような単純な配列処理でCとJavaの速度差がなぜ生じるか?はまだ分かってない。
・HotSpotは配列の境界チェックを除去できる
・一般論としてJavaが遅くなる原因としてJITやGCが挙げられるがこの単純なプログラムではそれらの影響はない
予想
・1命令で処理できるサイズが違っている?約4倍の速度差はベクトル演算の差で説明できそう。
だとしたらなぜJavaのJITはそれをやらないか?
・CPUキャッシュの問題?Javaの場合CPUキャッシュが別の何かで埋まってしまっている可能性
0に収束する事とそれは無関係。
以下、一応書くけど完全にスレ違い。
このような単純な配列処理でCとJavaの速度差がなぜ生じるか?はまだ分かってない。
・HotSpotは配列の境界チェックを除去できる
・一般論としてJavaが遅くなる原因としてJITやGCが挙げられるがこの単純なプログラムではそれらの影響はない
予想
・1命令で処理できるサイズが違っている?約4倍の速度差はベクトル演算の差で説明できそう。
だとしたらなぜJavaのJITはそれをやらないか?
・CPUキャッシュの問題?Javaの場合CPUキャッシュが別の何かで埋まってしまっている可能性
616デフォルトの名無しさん (ワッチョイ 69e6-A04g)
2020/07/22(水) 22:30:57.82ID:1buRSft90 自分のブログでやって
617デフォルトの名無しさん (ワッチョイ d9c3-Y9Vl)
2020/07/22(水) 23:08:24.67ID:G9I2XdZp0 そもそもjavaがc/c++並に速いとか、かなり嘘や誤魔化し入っているから
速度差3-4倍で済むなら十分健闘している
javaのコードを移植して、無駄にmalloc freeしまくったりする糞コードならもっと迫れるだろうけど
速度差3-4倍で済むなら十分健闘している
javaのコードを移植して、無駄にmalloc freeしまくったりする糞コードならもっと迫れるだろうけど
618デフォルトの名無しさん (ワッチョイ 3997-nH3A)
2020/07/23(木) 02:25:27.91ID:tfGyNQFW0619デフォルトの名無しさん (ガラプー KK4d-XNsZ)
2020/07/23(木) 04:09:18.13ID:NaEhWCW1K 最初の>>586の問いがベンチマークを意図してるとは思われてなかったから{return 0;}で良いんじゃね?ってなったんでは
620デフォルトの名無しさん (ワッチョイ d9ca-13t9)
2020/07/23(木) 11:21:03.05ID:TTqTgaIL0 javaの配列は特別な宣言無しに別スレッドでこっそり書き換えてもちゃんと反映されるわけだから、単純処理であっても最適化にも限界があるだろうな。
Cの場合は、他で書き換えられるかもと指定しておかなければ他所のことなんておかまいなしに処理できるから、その点だけでも有利だよね。
>>586 のコードのなら、i のループに入る前に data[j] を変数に取り置いて i のループ内で使用するようにすれば、java の方では高速化されるんじゃね。
C ならそれをコンパイラがやってくれてそう。
Cの場合は、他で書き換えられるかもと指定しておかなければ他所のことなんておかまいなしに処理できるから、その点だけでも有利だよね。
>>586 のコードのなら、i のループに入る前に data[j] を変数に取り置いて i のループ内で使用するようにすれば、java の方では高速化されるんじゃね。
C ならそれをコンパイラがやってくれてそう。
621デフォルトの名無しさん (ワッチョイ d9ca-13t9)
2020/07/23(木) 11:24:21.68ID:TTqTgaIL0 逆にCの側で配列を volatile にしておけば Java との速度差は小さくなるかもね。
622デフォルトの名無しさん (スップ Sd73-Ky2H)
2020/07/23(木) 11:26:24.50ID:V2V2cZYad data[j]なんかないけど
623デフォルトの名無しさん (ブーイモ MM9d-C2Yk)
2020/07/23(木) 11:46:46.14ID:vtZyy6ICM じゃあjava.util.concurrent.atomic以下にある配列クラスは全部廃止だな
624デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/23(木) 12:46:54.76ID:tYvDqilk0 ベクトル演算の未適用が原因だとほぼ特定できた。
625デフォルトの名無しさん (スップ Sd73-Ky2H)
2020/07/23(木) 13:17:22.41ID:V2V2cZYad626デフォルトの名無しさん (スップ Sd73-Ky2H)
2020/07/23(木) 13:19:58.21ID:V2V2cZYad 簡単な処理のために巨大メモリをスキャンするのは超無駄
627デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/23(木) 13:51:39.59ID:tYvDqilk0 C版
size
1000*1000 * 1 20ms
1000*1000 * 10 191ms
1000*1000 * 100 1893ms
線形な変化だからCPUキャッシュに載り切るかで性能が分かれるという事が生じてない。
たぶんCPUキャッシュは「繰り返し使うデータ」じゃないと有意義じゃない。
この処理だとCPUキャッシュ上のデータを排除可能になるまでの時間がボトルネックで、
つまり「CPU上のデータを処理しきって次の要素を受け付けれるようになるまでの時間」が支配的なはずで
そこがベクトル演算で高速化してる。
Java版も線形に変化した。
で、Javaのコードでr += data1[i] + data2[i]のところでdata1のみにしたら2倍速になったからベクトル演算未適用が原因でほぼ間違いない。
その行で+か-か^か&かは結論に影響しない。
size
1000*1000 * 1 20ms
1000*1000 * 10 191ms
1000*1000 * 100 1893ms
線形な変化だからCPUキャッシュに載り切るかで性能が分かれるという事が生じてない。
たぶんCPUキャッシュは「繰り返し使うデータ」じゃないと有意義じゃない。
この処理だとCPUキャッシュ上のデータを排除可能になるまでの時間がボトルネックで、
つまり「CPU上のデータを処理しきって次の要素を受け付けれるようになるまでの時間」が支配的なはずで
そこがベクトル演算で高速化してる。
Java版も線形に変化した。
で、Javaのコードでr += data1[i] + data2[i]のところでdata1のみにしたら2倍速になったからベクトル演算未適用が原因でほぼ間違いない。
その行で+か-か^か&かは結論に影響しない。
628デフォルトの名無しさん (ワッチョイ d9ca-13t9)
2020/07/23(木) 13:55:19.10ID:TTqTgaIL0629デフォルトの名無しさん (ワッチョイ d9ca-13t9)
2020/07/23(木) 14:11:44.83ID:TTqTgaIL0 >>623
値が volatile なことと操作が atomic なことは別の話だよ。
自分が書き換えない同じ領域を複数参照するとき、それを他の誰も書き換えないならその参照は一度目の値と同じになる前提で最適化できるけど、他の誰かがいつの間にか書き換えることがあるならそういう最適化はできなくなる。
そういう領域であることを明示するのが volatile。
atomic は同じ領域を誰かが書き換える前提なので基本的にその領域は volatile だけど、それに加えて値を参照して手を加えて書き戻すなどの一連の手続きの途中で他の誰かにいじられないことを保証すること。
それを CPUレベルの命令で行うかソフトウェア的なロックで行うかで色分けされてるだけ。
値が volatile なことと操作が atomic なことは別の話だよ。
自分が書き換えない同じ領域を複数参照するとき、それを他の誰も書き換えないならその参照は一度目の値と同じになる前提で最適化できるけど、他の誰かがいつの間にか書き換えることがあるならそういう最適化はできなくなる。
そういう領域であることを明示するのが volatile。
atomic は同じ領域を誰かが書き換える前提なので基本的にその領域は volatile だけど、それに加えて値を参照して手を加えて書き戻すなどの一連の手続きの途中で他の誰かにいじられないことを保証すること。
それを CPUレベルの命令で行うかソフトウェア的なロックで行うかで色分けされてるだけ。
630デフォルトの名無しさん (スップ Sd73-Ky2H)
2020/07/23(木) 14:28:36.26ID:V2V2cZYad >>627
CPUは何?
CPUは何?
631デフォルトの名無しさん (スップ Sd73-Ky2H)
2020/07/23(木) 14:33:33.27ID:V2V2cZYad メモリアクセスの影響がないなら
iとjのループを入れ換える
ループアンロール
rを偶数奇数で分ける
SIMD
などが有効
iとjのループを入れ換える
ループアンロール
rを偶数奇数で分ける
SIMD
などが有効
632デフォルトの名無しさん (スップ Sd73-Ky2H)
2020/07/23(木) 14:36:26.08ID:V2V2cZYad633デフォルトの名無しさん (ワッチョイ 1394-keh3)
2020/07/23(木) 14:42:55.39ID:tYvDqilk0634デフォルトの名無しさん (スップ Sd73-Ky2H)
2020/07/23(木) 14:44:16.58ID:V2V2cZYad CPUは何?
635デフォルトの名無しさん (ワッチョイ f97f-9CAQ)
2020/07/23(木) 16:21:21.26ID:WGvvEAFm0636デフォルトの名無しさん (ワッチョイ d9ca-13t9)
2020/07/23(木) 16:39:16.32ID:TTqTgaIL0 >>635
保証ってなんの話?
保証ってなんの話?
637デフォルトの名無しさん (ワッチョイ d901-1JrC)
2020/07/23(木) 20:41:12.28ID:j3eQi4Nn0638デフォルトの名無しさん (ワッチョイ 13ad-5TCi)
2020/07/24(金) 03:10:38.82ID:6ZonvnML0 volatile ってスレッドに限らず値が知らない内に変化する可能性のある何かの入力でも使うよね。
例えばマイクから拾った音を A/D 変換した値がメモリマップドI/Oで特定のアドレスのメモリ読む方法で読める場合。
CPUが予想不能な形で値がコロコロ変わるので volatile にせざるを得ない。(volatile って揮発性とか不安定って意味だし、言葉の意味そのままだ)。
これは読む側だけど書いて何かを出力する場合も、書いた値を読めないような作りになっている場合もある。
1を書いたのに直後に読むと0だったりなんていう事はあり得る。要するに一々覚えていない。または覚えていても読み出しに対応していない。
そんなハードウェアが接続されていたらそうなる。
例えばマイクから拾った音を A/D 変換した値がメモリマップドI/Oで特定のアドレスのメモリ読む方法で読める場合。
CPUが予想不能な形で値がコロコロ変わるので volatile にせざるを得ない。(volatile って揮発性とか不安定って意味だし、言葉の意味そのままだ)。
これは読む側だけど書いて何かを出力する場合も、書いた値を読めないような作りになっている場合もある。
1を書いたのに直後に読むと0だったりなんていう事はあり得る。要するに一々覚えていない。または覚えていても読み出しに対応していない。
そんなハードウェアが接続されていたらそうなる。
639デフォルトの名無しさん (ワッチョイ 812c-WQpp)
2020/07/24(金) 04:44:18.69ID:So4dssPK0 そりゃ、外部装置と連動しているから、値がいつ変わるか分からない
外部装置が読み書きしたら、合図として、0.1ms 後に、値を反転させたりとか、
色んな事をするから、予測できない
外部装置が読み書きしたら、合図として、0.1ms 後に、値を反転させたりとか、
色んな事をするから、予測できない
640デフォルトの名無しさん (ラクッペペ MMeb-Sn4z)
2020/07/24(金) 09:33:19.23ID:ASBY7bf4M volatileは変数(I/Oアドレス)に対するアクセス行為は保障するけど値そのものに対しては何の意味もない
そもそも外部要因で変化する値に対して干渉するのは不可能
そもそも外部要因で変化する値に対して干渉するのは不可能
641デフォルトの名無しさん (ワッチョイ 1301-KHfa)
2020/07/24(金) 10:20:02.92ID:4h264/iA0 どこから干渉するとか出てきたんだ…
知ってる知識を開陳したくてしょうがないんだろうなw
知ってる知識を開陳したくてしょうがないんだろうなw
642デフォルトの名無しさん (ワッチョイ d9da-u8K7)
2020/07/24(金) 15:22:34.69ID:jNVRIcub0 volatileな変数を読むのは怖いよね
ワード単位ならいいけど、構造体読むときはチェックサム欲しくなるよね
ワード単位ならいいけど、構造体読むときはチェックサム欲しくなるよね
643デフォルトの名無しさん (ワッチョイ d9ca-13t9)
2020/07/24(金) 18:25:04.01ID:ogZVfXfN0 別に怖くはないだろ。
他所と排他するなりしかるべきタイミングでアクセスすればいいだけなんだから。
排他や同期が必要な領域にそれをせずにアクセスするならただのアホってだけで、volatile がどうとかいう話じゃない。
他所と排他するなりしかるべきタイミングでアクセスすればいいだけなんだから。
排他や同期が必要な領域にそれをせずにアクセスするならただのアホってだけで、volatile がどうとかいう話じゃない。
644デフォルトの名無しさん (ワッチョイ 71b3-Ky2H)
2020/07/24(金) 20:10:16.16ID:Cmq7VG8v0 LL/SC命令が結構使える
645デフォルトの名無しさん (ワッチョイ 130e-5TCi)
2020/07/25(土) 04:21:09.10ID:qNFJliza0646デフォルトの名無しさん (ワッチョイ d901-fOmF)
2020/07/26(日) 03:07:46.88ID:4oXiyEBn0 「書きこんだものの読み込んでないからコードから消しちまえ」
「読み込んでるけど、代入以降値がかわる気配がないから、読み込みを止めて固定値にしちまえ」
これを抑制するだけ
書き込や読み込みを記述通り生き残らせる
「読み込んでるけど、代入以降値がかわる気配がないから、読み込みを止めて固定値にしちまえ」
これを抑制するだけ
書き込や読み込みを記述通り生き残らせる
647デフォルトの名無しさん (ワッチョイ 71b3-Ky2H)
2020/07/26(日) 08:34:28.91ID:M65fvK3w0 W=>R : R省略
R1=>R2 : R2省略
W1=>W2 : W1省略
R1=>R2 : R2省略
W1=>W2 : W1省略
648デフォルトの名無しさん (ワッチョイ 1301-KHfa)
2020/07/26(日) 10:41:35.23ID:3q3cv3BJ0 volatile覚えて嬉しいのはわかるけど…
649デフォルトの名無しさん (スップ Sd73-Ky2H)
2020/07/26(日) 11:55:59.05ID:7t5aGHPkd volatileの意味を知らない人 vs volatileを覚えたての人
650デフォルトの名無しさん (ブーイモ MMcb-C2Yk)
2020/07/26(日) 12:24:46.27ID:oYG2ZyVyM vs 30年前の常識で語る人
651デフォルトの名無しさん (ワッチョイ 8146-ZDF1)
2020/07/26(日) 13:35:18.59ID:6eSsd+mZ0 ANSIは邪道。
652デフォルトの名無しさん (ワッチョイ 13ad-5TCi)
2020/07/26(日) 18:14:24.05ID:hRZi6+cn0 あんししー
653デフォルトの名無しさん (ワッチョイ 41bb-RnSF)
2020/07/26(日) 20:08:24.24ID:VBmKLhih0 アンジー、なんてこと言うの
シー
シー
654デフォルトの名無しさん (ワッチョイ 130e-5TCi)
2020/07/27(月) 02:57:00.46ID:BRKetx390 30年くらい前までドヤる人が好んで口にしてたけどね
そういう人はC89ができたらピタリとやめた
今まだ言ってる珍獣って何なん?
そういう人はC89ができたらピタリとやめた
今まだ言ってる珍獣って何なん?
655はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 413e-fOmF)
2020/07/27(月) 08:26:00.92ID:IvOd7acF0 姫宮アンシー
656デフォルトの名無しさん (ワッチョイ 130e-5TCi)
2020/07/27(月) 16:25:16.57ID:BRKetx390 C89以前のK&R Cは個人的には好きなので
gcc -traditional復活して欲しい
gcc -traditional復活して欲しい
657デフォルトの名無しさん (ワッチョイ 0963-RnSF)
2020/07/27(月) 16:41:53.18ID:euzbjA/F0 関数定義で引数が()の外に書かれる記述みると、
今は違和感が湧いてしまう
今は違和感が湧いてしまう
658はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 413e-fOmF)
2020/07/27(月) 16:45:47.58ID:IvOd7acF0 書き方が違うだけなら古いスタイルでもいいんだけど、型チェックが緩いんだよな。
659デフォルトの名無しさん (ワッチョイ 130e-5TCi)
2020/07/27(月) 17:14:06.93ID:BRKetx390 アセンブラ屋出身の俺っちにはどうでもいいことだ
660はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 413e-fOmF)
2020/07/27(月) 17:35:58.30ID:IvOd7acF0 引数の数を間違えているのに黙って通してしまう例。
https://wandbox.org/permlink/FEu474UVSsilTq0L
最適化オプションを付けたらフロー解析も強まるのか警告してくれたけど。
https://wandbox.org/permlink/FEu474UVSsilTq0L
最適化オプションを付けたらフロー解析も強まるのか警告してくれたけど。
661デフォルトの名無しさん (ワッチョイ 13ad-5TCi)
2020/07/27(月) 18:50:57.45ID:8GZ2GqSj0662デフォルトの名無しさん (ワッチョイ 3997-nH3A)
2020/07/27(月) 23:59:05.30ID:UIY75t8S0 スタックが壊れないならまあいいんじゃね?
663デフォルトの名無しさん (ワッチョイ 130e-5TCi)
2020/07/28(火) 03:43:48.32ID:JnUAmZD/0 あのなあ、おまえら。。。。
K&R Cに対する批判なんて今さらドヤるか?
規格Cを憶えるときにプロトタイプは何のためか
説明受けてないやつがここにいるとでも思うのか?
K&R Cに対する批判なんて今さらドヤるか?
規格Cを憶えるときにプロトタイプは何のためか
説明受けてないやつがここにいるとでも思うのか?
664デフォルトの名無しさん (アウアウウー Sa5d-d0Nl)
2020/07/28(火) 13:28:44.28ID:DVrEteyfa (キリッ
665デフォルトの名無しさん (ワッチョイ 8146-ZDF1)
2020/07/28(火) 19:40:24.44ID:1JEs8/dl0 "#C-PLA" という店名をどう思いますか。
>>663
やっぱり C99 or later を叩くのがかっこいいですよね
やっぱり C99 or later を叩くのがかっこいいですよね
667デフォルトの名無しさん (ワッチョイ 5910-Xo7T)
2020/07/28(火) 20:02:16.84ID:geCJz7H80 >>665
オブジェクトをカプセル化・・・?
オブジェクトをカプセル化・・・?
668デフォルトの名無しさん (ワッチョイ fa94-UdrD)
2020/07/29(水) 17:10:37.12ID:tqWMyndD0 浮動小数の演算で生じる誤差は常に絶対値が小さくなるように行われる、
という前提は正しい?
という前提は正しい?
669デフォルトの名無しさん (ワッチョイ fa94-UdrD)
2020/07/29(水) 17:11:14.42ID:tqWMyndD0 C限定の話じゃないからスレ違いか
670デフォルトの名無しさん (ワイーワ2 FF62-lIev)
2020/07/29(水) 17:12:49.06ID:hY/5h1XOF 日本語として可笑しいのでgoto語学板へ
671デフォルトの名無しさん (アウアウウー Sa09-oq/g)
2020/07/29(水) 17:14:56.87ID://053udPa >>668
正しい気がする
正しい気がする
672デフォルトの名無しさん (アウアウウー Sa09-oq/g)
2020/07/29(水) 17:18:22.13ID://053udPa >>668
ごめん嘘ついた。
ごめん嘘ついた。
673デフォルトの名無しさん (ワッチョイ fa0e-xE3T)
2020/07/29(水) 17:21:06.57ID:8sSsdFab0 >>668
ライブラリやFPUの実装の話だね
例えばだけどIEEE754の定義では
仮数部は1.xxxxxxと、整数部が常に1なので
整数部を省き、その分の1bitを小数部に回す「ケチ表現」で
誤差がなるべく小さくなるように工夫している
ライブラリやFPUの実装の話だね
例えばだけどIEEE754の定義では
仮数部は1.xxxxxxと、整数部が常に1なので
整数部を省き、その分の1bitを小数部に回す「ケチ表現」で
誤差がなるべく小さくなるように工夫している
674デフォルトの名無しさん (ワッチョイ da52-kd5w)
2020/07/29(水) 17:25:55.07ID:Bu6uxHFv0675デフォルトの名無しさん (ワッチョイ fa94-UdrD)
2020/07/29(水) 17:28:44.72ID:tqWMyndD0 doubleを分解(0.1や0.3とかでかけて複数のdouble値にする)して足し合わせて比較、
という処理を無限回繰り返して元の絶対値を超えていたら停止、
みたいなテストコードを書いてみたけど、低確率で元の絶対値を超える。
この誤差が分解と足すときどちらで生じているか分からないが
なんにせよ浮動小数点数演算の誤差で絶対値が増加する場合があるようだ。
という処理を無限回繰り返して元の絶対値を超えていたら停止、
みたいなテストコードを書いてみたけど、低確率で元の絶対値を超える。
この誤差が分解と足すときどちらで生じているか分からないが
なんにせよ浮動小数点数演算の誤差で絶対値が増加する場合があるようだ。
676デフォルトの名無しさん (ワッチョイ fa0e-xE3T)
2020/07/29(水) 17:45:17.74ID:8sSsdFab0 あ、誤差の絶対値ではなく、結果の絶対値ということ?
俺の勘違いだったら悪いんだけど、それじゃ意味なくね?
結果が正数ならともかく負数の場合デメリットだけやん
俺の勘違いだったら悪いんだけど、それじゃ意味なくね?
結果が正数ならともかく負数の場合デメリットだけやん
677デフォルトの名無しさん (スププ Sd9a-xoHN)
2020/07/29(水) 18:11:52.28ID:+Q7sP3F+d 丸めモードによって変わるだろうに
絶対値が小さくなるのはround toward zeroにしたときだな
絶対値が小さくなるのはround toward zeroにしたときだな
678デフォルトの名無しさん (ワッチョイ 79bb-Xvfy)
2020/07/30(木) 05:23:55.72ID:82YOHtIh0 Cのソースコードを解析するツールで有名なものって何かありますでしょうか?
679デフォルトの名無しさん (ワッチョイ ce8c-LW7E)
2020/07/30(木) 06:42:57.43ID:ixil7w/z0 上司がこっそり使っていた cflow
680デフォルトの名無しさん (ワッチョイ d1b3-Fkfq)
2020/07/30(木) 07:04:40.85ID:SsIpxIlu0 >>668
加減乗算のほとんどの実装ではそう
加減乗算のほとんどの実装ではそう
681デフォルトの名無しさん (ワッチョイ 0101-iVY1)
2020/08/10(月) 04:07:37.60ID:SKFyjjt90 デファクトスタンダードなCのコーディング作法を手っ取り早く
身につけるために何をすべきですか?
身につけるために何をすべきですか?
682デフォルトの名無しさん (ワッチョイ 0101-Ea0s)
2020/08/10(月) 04:47:16.15ID:o5h87VM/0 所属がわからないと何とも言えませんね。
社名と部署お願いします。
社名と部署お願いします。
683デフォルトの名無しさん (ワッチョイ d1da-e++8)
2020/08/10(月) 04:53:08.55ID:P+mDn/zj0 車載の組み込み系以外は
それぞれの会社にコーディング規約あるんじゃない?
知らんけど
それぞれの会社にコーディング規約あるんじゃない?
知らんけど
684デフォルトの名無しさん (ワッチョイ 1b8c-oftG)
2020/08/10(月) 06:50:01.64ID:ruBmk/3z0 お手本のプログラムを上司に見せてもらい完コピする。
685デフォルトの名無しさん (ワッチョイ 992c-B5sl)
2020/08/10(月) 06:53:36.45ID:k2ud7k4K0 >>681
組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、MISRA‐C研究会、2006
この研究会は、トヨタなど大企業から、数十人のベテが集まって、
欧州人に聞きながら、作った本
未だに、コーディングルールのバイブルだろ
元々は、Andrew Koenig の本
C Traps and Pitfalls, 1988, c1989
Cプログラミングの落とし穴
組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、MISRA‐C研究会、2006
この研究会は、トヨタなど大企業から、数十人のベテが集まって、
欧州人に聞きながら、作った本
未だに、コーディングルールのバイブルだろ
元々は、Andrew Koenig の本
C Traps and Pitfalls, 1988, c1989
Cプログラミングの落とし穴
>>685
>数十人のベテ
司法試験板をみると「ベテ」というのは30代以降の複数回受験者のことらしいですよ
文脈によっては veteran は階級を問わず退役軍人を意味することもありますし‥‥「わしが現役の頃には」を壊れたレコード盤のように繰り返すイメージとか
ベテランという言葉に必ずしもプラスイメージが伴っているとは限らないことはしっておいたほうがいいんじゃないですか?
>数十人のベテ
司法試験板をみると「ベテ」というのは30代以降の複数回受験者のことらしいですよ
文脈によっては veteran は階級を問わず退役軍人を意味することもありますし‥‥「わしが現役の頃には」を壊れたレコード盤のように繰り返すイメージとか
ベテランという言葉に必ずしもプラスイメージが伴っているとは限らないことはしっておいたほうがいいんじゃないですか?
687デフォルトの名無しさん (ワッチョイ 130e-e++8)
2020/08/10(月) 07:23:02.78ID:tfnxCl0S0 能書きはいいから内容を見ろや
あれを見てくだらねえと思うことが何もないやつは
自分がなさすぎだ
あれを見てくだらねえと思うことが何もないやつは
自分がなさすぎだ
688デフォルトの名無しさん (ワッチョイ 0101-iVY1)
2020/08/10(月) 09:47:53.28ID:SKFyjjt90689デフォルトの名無しさん (エムゾネ FF33-SiUo)
2020/08/10(月) 11:57:46.08ID:wInlBSoOF 何も知らないなら手あたり次第写経してみ
それで何でこんな描きかたになってんの?
ってここで質問繰り返せば良い
みんな暇だから答えてくれるはず
それで何でこんな描きかたになってんの?
ってここで質問繰り返せば良い
みんな暇だから答えてくれるはず
690デフォルトの名無しさん (ワッチョイ 895f-Ea0s)
2020/08/10(月) 14:56:52.81ID:xpVmb7Uo0 printfってどれだけメモリ使うんですか?
691デフォルトの名無しさん (ワッチョイ 130e-e++8)
2020/08/10(月) 15:00:54.55ID:tfnxCl0S0 実装による
以上
以上
692デフォルトの名無しさん (ワッチョイ 0b7c-BIoY)
2020/08/10(月) 15:02:14.80ID:7NjJFrXk0 printf()の戻り値は本当に捨てて良いんですか?
とか
とか
693デフォルトの名無しさん (ワッチョイ 130e-e++8)
2020/08/10(月) 15:36:42.46ID:tfnxCl0S0 返却値の意味くらい知ってる?
694デフォルトの名無しさん (ワッチョイ d1da-FoHg)
2020/08/10(月) 15:44:16.59ID:cUENozhv0 だいたいの戻り値は無視してよいよ
695デフォルトの名無しさん (ワッチョイ 130e-e++8)
2020/08/10(月) 15:50:24.83ID:tfnxCl0S0 アホ
696デフォルトの名無しさん (ワッチョイ 3163-IIsV)
2020/08/10(月) 16:38:24.39ID:BXZAjCBt0 >>692
捨てては駄目だな。答えが表示できなくなる。
#include <stdio.h>
int main()
{
printf("%d\n",printf("1+2+3="));
return 0;
}
捨てては駄目だな。答えが表示できなくなる。
#include <stdio.h>
int main()
{
printf("%d\n",printf("1+2+3="));
return 0;
}
697デフォルトの名無しさん (ワッチョイ 130e-e++8)
2020/08/10(月) 18:19:20.30ID:tfnxCl0S0 返却値を捨てて良いか否かを他人に聞いて
そこに固執する教条主義者か
いかにもMISRA大好きそうだな
そこに固執する教条主義者か
いかにもMISRA大好きそうだな
698デフォルトの名無しさん (ワッチョイ d101-oftG)
2020/08/10(月) 21:28:34.35ID:CQsKBDF30 MISRA〜ヤ MISRA〜
MISRA も、MISRA 対応性的解析ツールを公開してくれていてもよさそうなものですが‥‥ただで
700デフォルトの名無しさん (ワッチョイ 6146-f0BE)
2020/08/10(月) 22:13:11.57ID:DZgybkpe0 性的解析...
701はちみつ餃子 ◆8X2XSCHEME (ワッチョイ d13e-FoHg)
2020/08/11(火) 01:09:34.46ID:EJAYjJkN0 MISRA だって MISRA を採用する場合に何がなんでも全ての項目に準拠しなければならないというわけではない。
(逸脱する場合には文書化しておくことを推奨してはいるが。)
ただ、気を付けなければならない箇所がまとめられているというのも間違いないので、
目を通すくらいのことはしたらいいんじゃないの。
俺は読んだことないけど。
(逸脱する場合には文書化しておくことを推奨してはいるが。)
ただ、気を付けなければならない箇所がまとめられているというのも間違いないので、
目を通すくらいのことはしたらいいんじゃないの。
俺は読んだことないけど。
702デフォルトの名無しさん (ワッチョイ ebd2-e++8)
2020/08/11(火) 07:47:01.13ID:SWJYIPbx0 規格、仕様の奴隷
703デフォルトの名無しさん (ワッチョイ 59bb-IIsV)
2020/08/11(火) 07:50:09.41ID:RSsrE9PW0 俺は規格や仕様に縛られないで自由にプログラミングするのさ
翼が生えた蛙みたいにケロケロいいながら大空を羽ばたくのさ
翼が生えた蛙みたいにケロケロいいながら大空を羽ばたくのさ
704デフォルトの名無しさん (ワッチョイ 130e-e++8)
2020/08/11(火) 08:12:17.68ID:cZN35xi70 いや規格は守らなきゃ
工業人の法律みたいなもんだから
MISRAの話がどう化けると仕様になるのかは意味不明
工業人の法律みたいなもんだから
MISRAの話がどう化けると仕様になるのかは意味不明
705デフォルトの名無しさん (ワッチョイ 5905-e++8)
2020/08/11(火) 09:12:05.23ID:02tHA6AW0 >>704
規格が法律に例えられるように、MISRAは憲法になぞらえることができる
規格が法律に例えられるように、MISRAは憲法になぞらえることができる
706デフォルトの名無しさん (ワッチョイ d352-IP9Q)
2020/08/11(火) 09:29:25.90ID:nKBbqh2w0707デフォルトの名無しさん (ワッチョイ 13a5-w77N)
2020/08/11(火) 11:41:57.49ID:l01whKN50 でもやっぱりどれくらいMISRAに準拠してるかチェックするツールが全く出てないのは不自然
もしかしてMISRAって目視チェックを前提にした規格なのか?
それとも企業で門外不出のツールになってんのか?
もしかしてMISRAって目視チェックを前提にした規格なのか?
それとも企業で門外不出のツールになってんのか?
708デフォルトの名無しさん (ワッチョイ 130e-e++8)
2020/08/11(火) 11:44:29.40ID:cZN35xi70 【手を挙げて】横断歩道を渡りましょう
↑
この程度だよ
憲法だの条例だのと違い司法機関は相手にしない
↑
この程度だよ
憲法だの条例だのと違い司法機関は相手にしない
709デフォルトの名無しさん (ドコグロ MMfd-LWG7)
2020/08/11(火) 11:46:02.07ID:XFONBlSQM 小池百合子が掲げるフリップみたいなもんだろ
今年の夏は特別な夏です、破廉恥なコードは自粛しましょう
今年の夏は特別な夏です、破廉恥なコードは自粛しましょう
710デフォルトの名無しさん (ワッチョイ 3163-IIsV)
2020/08/11(火) 12:17:39.96ID:gJF+/AhQ0 「警報!侵蝕されてます!パターン青です!コードを切り離せません!」
夏はこれ
夏はこれ
711デフォルトの名無しさん (ワッチョイ 61b0-e++8)
2020/08/11(火) 12:28:40.57ID:RcrtMjNU0 >>707
全くて、市販の静的解析ツールならいくつかあるじゃん。
全くて、市販の静的解析ツールならいくつかあるじゃん。
712デフォルトの名無しさん (ワッチョイ 5110-FyBY)
2020/08/11(火) 13:59:44.70ID:QMJ1Ew+q0 おまえらミスラの話と見せかけて髻(みずら)の話につなげようとしてんだろ
どうせここで髪の話して俺の悪口言う魂胆なんだろ
おまえら最悪だな
どうせここで髪の話して俺の悪口言う魂胆なんだろ
おまえら最悪だな
713デフォルトの名無しさん (ワッチョイ d352-IP9Q)
2020/08/11(火) 14:47:19.21ID:nKBbqh2w0 >>712
髻なんて糞、そんな下らないものを気にする奴は馬鹿、という流れでお前さんへのエールのはずだったんだ
髻なんて糞、そんな下らないものを気にする奴は馬鹿、という流れでお前さんへのエールのはずだったんだ
714デフォルトの名無しさん (アウアウウー Sa55-1t4k)
2020/08/11(火) 18:54:59.41ID:j5xuOst8a きみはこう言いたいのでしょう
ヅラはどこだ!
ヅラはどこだ!
>>711
MISRA の対応するコメントを付けてくれる性的解析ツールは、無料で提供されるべきでしょう、業界標準を目指すのなら
MISRA の対応するコメントを付けてくれる性的解析ツールは、無料で提供されるべきでしょう、業界標準を目指すのなら
716デフォルトの名無しさん (ワッチョイ 61b0-e++8)
2020/08/11(火) 20:25:37.46ID:RcrtMjNU0 >>716
でも MISRA の対象者レベル設定ってアマチュアレベルでしょう?
でも MISRA の対象者レベル設定ってアマチュアレベルでしょう?
718デフォルトの名無しさん (ワッチョイ 61b0-e++8)
2020/08/11(火) 21:02:15.95ID:RcrtMjNU0 金取るかどうかの話をしているのにレベルの話を持ち出したのは意図的に話をそらしたわけ?
それとも日本語をちゃんと理解できない?
それとも日本語をちゃんと理解できない?
>>718
無論、前者ですね、というかモノの値段はその価値と深い相関があるのが普通でありマトモだとも思いますから、
支払う価値の話に対して対象レベルの話を持ち出すことは、あながち間違っているとはいえないでしょう?
無論、前者ですね、というかモノの値段はその価値と深い相関があるのが普通でありマトモだとも思いますから、
支払う価値の話に対して対象レベルの話を持ち出すことは、あながち間違っているとはいえないでしょう?
720デフォルトの名無しさん (ワッチョイ 61b0-e++8)
2020/08/11(火) 21:46:45.35ID:RcrtMjNU0 言ってることがむちゃくちゃすぎw
やっぱり日本語もダメだろ
やっぱり日本語もダメだろ
721デフォルトの名無しさん (ワッチョイ 992c-W4sk)
2020/08/11(火) 23:30:38.44ID:X5c8vKvD0 VSCode の拡張機能で、misra で検索すると、これが見つかる
Parasoft C/C++test Standard
https://marketplace.visualstudio.com/items?itemName=parasoft.vscode-cpptest
https://docs.parasoft.com/display/CPPTEST20201
C/C++ Static Analysis, Safety and Security Coding Standards,
MISRA C 2012, AUTOSAR C++ 14, CERT C/C++, and others.
Parasoft C/C++test Standard
https://marketplace.visualstudio.com/items?itemName=parasoft.vscode-cpptest
https://docs.parasoft.com/display/CPPTEST20201
C/C++ Static Analysis, Safety and Security Coding Standards,
MISRA C 2012, AUTOSAR C++ 14, CERT C/C++, and others.
722デフォルトの名無しさん (ワッチョイ 7197-9ujE)
2020/08/12(水) 05:43:26.21ID:/aSZJl0C0 >>717
アマチュアとアマチュア以外の定義を述べよ。
アマチュアとアマチュア以外の定義を述べよ。
723デフォルトの名無しさん (ワッチョイ c20e-p5K4)
2020/08/12(水) 08:33:57.98ID:YginzyYa0 プロってどの位のレベルなのかに興味津々なんだろうな
サンプルがなくてw
サンプルがなくてw
724デフォルトの名無しさん (ワッチョイ 027c-p5K4)
2020/08/12(水) 09:52:08.77ID:3JHviGe70 複雑になっても自分で何を作っているのか理解しているかしていないかぐらいの差じゃないの?
726デフォルトの名無しさん (ワッチョイ e501-/T98)
2020/08/12(水) 13:35:54.95ID:+rovT3b20 ステップ数なんて飾りだよ
727デフォルトの名無しさん (ラクッペペ MM26-snu4)
2020/08/12(水) 14:22:01.62ID:XADAagqaM 業として行っている個人やそのような組織に属しているのがプロ
728デフォルトの名無しさん (ワッチョイ 468c-1RiF)
2020/08/12(水) 15:57:15.32ID:yGflmyFx0 捕まる泥棒はアマ、捕まらないのはプロ。
729デフォルトの名無しさん (ワッチョイ c20e-p5K4)
2020/08/12(水) 16:07:40.09ID:YginzyYa0 ステップ数って・・・まさかマジで言ってるのか?
730デフォルトの名無しさん (ワッチョイ 81ca-YRtD)
2020/08/12(水) 16:15:20.08ID:aKiWlwPm0 それを生業にしてるならヘボかろうがプロではあるな。
んで世の中ヘボが相当数いる。
百人単位のプロジェクトになると7割はヘボ。
入社したてのほとんど何もできない新人君とかも混ぜ混んでくるし、本当にひどい。
でもみんなプロ。
んで世の中ヘボが相当数いる。
百人単位のプロジェクトになると7割はヘボ。
入社したてのほとんど何もできない新人君とかも混ぜ混んでくるし、本当にひどい。
でもみんなプロ。
731デフォルトの名無しさん (エムゾネ FF62-jwrZ)
2020/08/12(水) 16:20:10.06ID:mptqcK2nF 人件費稼ぐために頭数合わせてるだけ
732デフォルトの名無しさん (ワッチョイ c219-k0xq)
2020/08/12(水) 17:46:51.14ID:wD9I21LT0 プロアマの基準にステップ数なんざ関係ないが1万程度1人で組める規模じゃん
成果物で金稼いでりゃプロで良いと思うし、プロでもひどいの居ればアマでもすごいのは居る
成果物で金稼いでりゃプロで良いと思うし、プロでもひどいの居ればアマでもすごいのは居る
734はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 813e-++7W)
2020/08/12(水) 18:20:24.44ID:WoaeeAs50 長時間労働に耐えられる体力があるのかもしれんし、
有力者に取り入る能力が高いのかもしれんし、
幸運値が高くてなんとなくやっていけてるのかもしれん。
それも成果。
有力者に取り入る能力が高いのかもしれんし、
幸運値が高くてなんとなくやっていけてるのかもしれん。
それも成果。
735デフォルトの名無しさん (ワッチョイ 7197-9ujE)
2020/08/12(水) 23:23:26.75ID:/aSZJl0C0 ユーザーからしたら、どんなクソコードが走ってようがテストされ尽くして品質保証がされていてちゃんと動いてるならどうでもいいよ。
開発者からしたら、クソコードは工数が膨れ上がる原因になるからやめて欲しいけど。
そして品質保証プロセスがあると面倒臭いルールだらけで足止めを食らうからそういう世界では開発したくない。
でも、MISRAとかはそういう面倒臭いルールで品質を保証するためのもので、辛い開発プロセスを我慢して製品を作り上げられるのはプロの開発者だと思うよ。
それなりに優秀な人、ぐらいだとアーキテクチャを知り尽くしているところまでは行ってないと思うし、
思わぬところで不具合を発生させてしまうものだから。
エレガントなコードかつ、品質の保証範囲も広いコードを書ける開発者なんか極少数なんだからミッションクリティカルなところでは規約で縛ってくしかないと思うよ。
開発者からしたら、クソコードは工数が膨れ上がる原因になるからやめて欲しいけど。
そして品質保証プロセスがあると面倒臭いルールだらけで足止めを食らうからそういう世界では開発したくない。
でも、MISRAとかはそういう面倒臭いルールで品質を保証するためのもので、辛い開発プロセスを我慢して製品を作り上げられるのはプロの開発者だと思うよ。
それなりに優秀な人、ぐらいだとアーキテクチャを知り尽くしているところまでは行ってないと思うし、
思わぬところで不具合を発生させてしまうものだから。
エレガントなコードかつ、品質の保証範囲も広いコードを書ける開発者なんか極少数なんだからミッションクリティカルなところでは規約で縛ってくしかないと思うよ。
736デフォルトの名無しさん (ワッチョイ c20e-p5K4)
2020/08/13(木) 06:04:03.36ID:UjRsJ9BY0 本書いてるやつらの個人的な好みだの
大事にしたところで結局使えねえバカに合わせろだのと
くだらねえことばかり分厚い本1冊渡してすべて読んで従えなんてやると
やる気なくさせるだけだ
大事にしたところで結局使えねえバカに合わせろだのと
くだらねえことばかり分厚い本1冊渡してすべて読んで従えなんてやると
やる気なくさせるだけだ
737デフォルトの名無しさん (ワイーワ2 FF8a-jwrZ)
2020/08/13(木) 10:30:22.58ID:m1xh97jBF 他人を騙すのが上手いのがプロっていうイメージ
738685 (ワッチョイ e52c-178q)
2020/08/13(木) 10:37:21.72ID:b3k2BUbg0 著者の好みとか、そういう次元ではない
日本の大企業のトップ、50人が集まっても、誰も規格を知らない。
規格の研究は、それだけで何十年も掛かるから、開発者ができない
基本、企業には、そういう開発しない人は、いらない
だから日本には、規格に精通した研究者がいなくなった。
江添亮ぐらい
だから、欧州のMisra-C に聞きながら、作った。
でも、欧州側にも詳しい香具師がいないのは、同じ。
日本側が、欧州側の間違いを訂正したりもしてる
企業としては、規格だけを何十年も研究しているような香具師を雇わないのだろう。
だから、まぎれなく書かないと、誰も規格を調べられないから、困る
日本の大企業のトップ、50人が集まっても、誰も規格を知らない。
規格の研究は、それだけで何十年も掛かるから、開発者ができない
基本、企業には、そういう開発しない人は、いらない
だから日本には、規格に精通した研究者がいなくなった。
江添亮ぐらい
だから、欧州のMisra-C に聞きながら、作った。
でも、欧州側にも詳しい香具師がいないのは、同じ。
日本側が、欧州側の間違いを訂正したりもしてる
企業としては、規格だけを何十年も研究しているような香具師を雇わないのだろう。
だから、まぎれなく書かないと、誰も規格を調べられないから、困る
739デフォルトの名無しさん (ワッチョイ c20e-p5K4)
2020/08/13(木) 11:16:30.65ID:UjRsJ9BY0 馬鹿か
家電量販店くらい覗いてみろ
新規格が発表されるたびにメーカー各社いち早く対応製品出してるだろ
家電量販店くらい覗いてみろ
新規格が発表されるたびにメーカー各社いち早く対応製品出してるだろ
740デフォルトの名無しさん (ワッチョイ 9901-E2Bm)
2020/08/13(木) 11:32:05.85ID:VDPM7Buu0 成果物という言い方に違和感。
普通に製品で良いのでは?
普通に製品で良いのでは?
741デフォルトの名無しさん (ワッチョイ 81da-++7W)
2020/08/13(木) 11:37:09.38ID:YgH3wASL0 >>740
製品作ってるわけじゃないからな
製品作ってるわけじゃないからな
742デフォルトの名無しさん (ワッチョイ 3163-p0wA)
2020/08/13(木) 11:37:44.29ID:nPN4GQVV0 コンパイラの新しい規格が決まりました
対応する新製品、本日発売です
対応する新製品、本日発売です
743デフォルトの名無しさん (ワッチョイ 2252-MHHw)
2020/08/13(木) 12:02:05.37ID:oBQ5L51M0 >>738
前々から馬鹿だとは思ってたが、ここまで馬鹿だとは
前々から馬鹿だとは思ってたが、ここまで馬鹿だとは
744デフォルトの名無しさん (ワッチョイ c20e-p5K4)
2020/08/13(木) 12:25:23.76ID:UjRsJ9BY0 >>742
まさかとは思うがイヤミのつもりか?
まさかとは思うがイヤミのつもりか?
745デフォルトの名無しさん (ワッチョイ c219-k0xq)
2020/08/13(木) 12:35:10.28ID:l61yvHm+0 社内で使うツールなんかも製品なんていうのか?
むしろ成果物のほうが一般的に使う用語だと思うぞ
もしかしたら業界によって違うかもしれんが
大体の業界でプログラムだけで製品にならんからな
むしろ成果物のほうが一般的に使う用語だと思うぞ
もしかしたら業界によって違うかもしれんが
大体の業界でプログラムだけで製品にならんからな
746デフォルトの名無しさん (ドコグロ MM61-eTOa)
2020/08/13(木) 12:37:35.56ID:jTOLwBsaM747デフォルトの名無しさん (ワッチョイ c2a5-by2p)
2020/08/13(木) 13:13:16.97ID:CM5c4LB70 つまり間接成果物か。
作る意味あんのそれ
一銭たりとも稼いでないじゃん
それとも中間体なの
作る意味あんのそれ
一銭たりとも稼いでないじゃん
それとも中間体なの
748デフォルトの名無しさん (ワイーワ2 FF8a-jwrZ)
2020/08/13(木) 13:20:07.07ID:KaPqduB6F 言葉遊びだしどうでも良いけど
副産物って言うかな
副産物って言うかな
749デフォルトの名無しさん (スップ Sdc2-k0xq)
2020/08/13(木) 13:21:11.74ID:sAiv34b1d 稼いでるでしょw
そういうのでお金もらったこと無いの?
お仕事知らなすぎでしょ
そういうのでお金もらったこと無いの?
お仕事知らなすぎでしょ
750デフォルトの名無しさん (ワッチョイ c2a5-by2p)
2020/08/13(木) 13:41:31.84ID:CM5c4LB70 やっぱり視点がここまで違うんだな
お前にやるカネなんてどうでもいいよ
製品が稼いでくるカネに興味あるんだよ
だから間接成果物だろ
経理の奴らにだって給料渡してんのは誰でも知ってるよ
お前にやるカネなんてどうでもいいよ
製品が稼いでくるカネに興味あるんだよ
だから間接成果物だろ
経理の奴らにだって給料渡してんのは誰でも知ってるよ
751デフォルトの名無しさん (ワッチョイ 4946-+LRH)
2020/08/13(木) 13:52:23.74ID:3qG7aIhA0 青果物だろ。八百屋の自覚があるのかねキミたちは。
752デフォルトの名無しさん (ワッチョイ 49b0-p5K4)
2020/08/13(木) 14:04:17.63ID:TgMttUh/0 テストもされていない作りっぱなしの製品にお金払ってくれる顧客ばかりじゃないしなぁ
753デフォルトの名無しさん (ワッチョイ 4201-eTOa)
2020/08/13(木) 14:08:20.70ID:RDWqdqfD0754デフォルトの名無しさん (ワッチョイ 4201-eTOa)
2020/08/13(木) 14:12:24.56ID:RDWqdqfD0755デフォルトの名無しさん (ワッチョイ d166-k0xq)
2020/08/13(木) 14:23:51.21ID:BqAuLMN60 会社から外に出るあらゆるものがすべて製品である、ってのなら言いたいことはわかるよ
でも個人的な感覚ではすべてを製品というのは言葉のとる範囲が広すぎる
設計書やテスト関連のドキュメントなんかを製品とは言いづらい
そういうふわっとしたもの含めてプログラマのアウトプットを一言で表すものとして成果物って単語を使ったにすぎない
でも個人的な感覚ではすべてを製品というのは言葉のとる範囲が広すぎる
設計書やテスト関連のドキュメントなんかを製品とは言いづらい
そういうふわっとしたもの含めてプログラマのアウトプットを一言で表すものとして成果物って単語を使ったにすぎない
756デフォルトの名無しさん (ワッチョイ c20e-p5K4)
2020/08/13(木) 15:20:08.51ID:UjRsJ9BY0 >>747
おまえPGとかいう以前に工業人でさえなさそうに見えるぞ
おまえPGとかいう以前に工業人でさえなさそうに見えるぞ
757デフォルトの名無しさん (ワッチョイ 468c-1RiF)
2020/08/13(木) 16:24:26.08ID:GUNSShX60 データベースかプロジェクトデータで話が通るように初めからやっとけ。
後でこれがないあれがないあるのが常識やろは馬鹿な日の丸会社に多い。
後でこれがないあれがないあるのが常識やろは馬鹿な日の丸会社に多い。
758デフォルトの名無しさん (ワッチョイ c20e-p5K4)
2020/08/13(木) 16:34:29.68ID:UjRsJ9BY0 PGは納品用のコードだけ書いてるわけじゃない
納品に至るまでの内輪で必要になるコードが色々あるかんな
PG経験ないやつに舞台裏の事情がわからんのは当たり前
納品に至るまでの内輪で必要になるコードが色々あるかんな
PG経験ないやつに舞台裏の事情がわからんのは当たり前
759デフォルトの名無しさん (ワッチョイ e9e6-wj9T)
2020/08/13(木) 20:33:00.03ID:5JTzAfSL0 間接成果物www
760デフォルトの名無しさん (ワッチョイ e501-/T98)
2020/08/13(木) 22:12:33.85ID:uUPpxsEe0 言葉があやふやな人って本当に仕事してんのか不安になるね
761デフォルトの名無しさん (ワッチョイ 9901-E2Bm)
2020/08/14(金) 05:26:27.88ID:a6sLiNyt0 でもProductを成果物と訳してるじゃないですか。
これ、オープンソースは無料なので、製品と訳せなかったんですよね?
無料でも製品で良いのでは?
これ、オープンソースは無料なので、製品と訳せなかったんですよね?
無料でも製品で良いのでは?
762デフォルトの名無しさん (ワッチョイ 9901-E2Bm)
2020/08/14(金) 06:17:07.84ID:a6sLiNyt0 念のため記しておきますが、成果物という言い回しは昔からよく使われていたものではなく、JFから始まったスタイルです。
つまり翻訳に起源があります。
つまり翻訳に起源があります。
763デフォルトの名無しさん (ワッチョイ 468c-1RiF)
2020/08/14(金) 06:26:00.09ID:rGV5Pz8z0 開発費だけの受け取りは不正の温床となるので必ず物の納品を義務化しています。
764デフォルトの名無しさん (ワッチョイ 9901-E2Bm)
2020/08/14(金) 06:39:27.33ID:a6sLiNyt0 そういう場合は、JIS用語である中間製品、半製品と言ってるじゃないですか。
オープンソースのときだけ成果物というのは違和感がある。
オープンソースのときだけ成果物というのは違和感がある。
765デフォルトの名無しさん (ワッチョイ 4946-+LRH)
2020/08/14(金) 06:50:36.22ID:dINeHZlk0 >>762
我が社では、成果物という言い回しはJF以前からよく使われていたなあ。
我が社では、成果物という言い回しはJF以前からよく使われていたなあ。
766デフォルトの名無しさん (ワッチョイ d17f-xn0R)
2020/08/14(金) 09:55:53.25ID:JGhukcXO0 大企業間の契約書でも実担当者間の会話でも普通に使われる言葉だし、違和感があるのは単に自分の周りで使われてなかっただけでないかと。
767デフォルトの名無しさん (ワッチョイ c2a5-by2p)
2020/08/14(金) 10:01:34.96ID:SEg+bPfj0 >>754
本当に話が分らんヤツだな
先方に納めたテストは、先方で『稼働』して直接はカネ稼いでないだろ
お前がいくら貰ってようとそんなの関係ない
作ったモン書いたモンが納入先で金稼ぎのツールとして動いてるかどうか、だ
ツール使ってる側から見て、それが直接稼いでるから直接成果物だ
書いてる側の視点なんてのは本当にどうでもいい
お前がどんだけ苦労して作ったとか、作るためにカネ貰ったとか、全くそういうのは関係ないし、不要で、いらないんだ
主観まみれの感情論や精神論は気持ち悪すぎていらないんだよ
で、顧客は、エンジニアが作った器械装置やプログラムを使って稼ぎ出すカネの方に興味がある
本当に話が分らんヤツだな
先方に納めたテストは、先方で『稼働』して直接はカネ稼いでないだろ
お前がいくら貰ってようとそんなの関係ない
作ったモン書いたモンが納入先で金稼ぎのツールとして動いてるかどうか、だ
ツール使ってる側から見て、それが直接稼いでるから直接成果物だ
書いてる側の視点なんてのは本当にどうでもいい
お前がどんだけ苦労して作ったとか、作るためにカネ貰ったとか、全くそういうのは関係ないし、不要で、いらないんだ
主観まみれの感情論や精神論は気持ち悪すぎていらないんだよ
で、顧客は、エンジニアが作った器械装置やプログラムを使って稼ぎ出すカネの方に興味がある
768デフォルトの名無しさん (ワッチョイ 3163-p0wA)
2020/08/14(金) 10:26:56.96ID:Us3wnTKB0 マ板に移動しろ、クソども
769デフォルトの名無しさん (ワッチョイ 4201-eTOa)
2020/08/14(金) 10:35:04.04ID:sRXPDhxm0770デフォルトの名無しさん (ラクッペペ MM26-snu4)
2020/08/14(金) 10:55:52.26ID:P4eFhUvDM771デフォルトの名無しさん (ワッチョイ 8101-1RiF)
2020/08/14(金) 14:35:53.28ID:5R1OsKN50 アマチュアのプロジェクトにへっぽこプログラマは参加できないが
プロのプロジェクトはへっぽこプログラマの方が多い
プロのプロジェクトはへっぽこプログラマの方が多い
772デフォルトの名無しさん (ワッチョイ c20e-p5K4)
2020/08/14(金) 14:41:42.13ID:2wR+X/g+0 確かにハッカー集団にボーガスは入れてもらえないね
773デフォルトの名無しさん (ワッチョイ 468c-1RiF)
2020/08/14(金) 15:33:21.13ID:Z47jWul30774デフォルトの名無しさん (ワッチョイ 7197-9ujE)
2020/08/14(金) 15:41:56.15ID:Z2/UjnqU0 間接成果物を作るのは無駄、というのは、
顧客が絶対チェックしないんだけどなぜか成果物として要求される、
中間工程を納品用にドキュメント化したもの、を作るのが無駄と言ってるのかな
まあ、わからんでもないけどそれがあれば顧客に引き継げる場合もあるし、ケースバイケースのような。
顧客が絶対チェックしないんだけどなぜか成果物として要求される、
中間工程を納品用にドキュメント化したもの、を作るのが無駄と言ってるのかな
まあ、わからんでもないけどそれがあれば顧客に引き継げる場合もあるし、ケースバイケースのような。
775デフォルトの名無しさん (ワッチョイ c20e-p5K4)
2020/08/14(金) 16:23:44.04ID:2wR+X/g+0778デフォルトの名無しさん (ワッチョイ 4914-056u)
2020/08/14(金) 18:05:29.78ID:8V/zklnR0779デフォルトの名無しさん (ワッチョイ c20e-p5K4)
2020/08/14(金) 18:05:35.24ID:2wR+X/g+0 >>777
手合いかと聞いているのを知らないからと思ってしまう
おまえさんの脳味噌こそ深刻なバグ抱えてるぜ
PGの世界でどうだか知らねえのか
マジでトーシロだな
この板では家畜以下の身分てことを自覚しろな
手合いかと聞いているのを知らないからと思ってしまう
おまえさんの脳味噌こそ深刻なバグ抱えてるぜ
PGの世界でどうだか知らねえのか
マジでトーシロだな
この板では家畜以下の身分てことを自覚しろな
780デフォルトの名無しさん (エムゾネ FF62-jwrZ)
2020/08/14(金) 18:16:58.51ID:zY2s9ydfF 投機的な不動産投資は儲からんかも知れんが
マンションとか土地持ってて他人に貸すのは儲かるで
マンションとか土地持ってて他人に貸すのは儲かるで
>>778-779
世間一般ではハッカーとクラッカーとは区別しません、両者ともハッカーといいますね
狭い業界ではハッカーとクラッカーを区別して、いいニュアンスを持つものだけをハッカーとしたいようですが、世間はそうは見ておらずハッカーもクラッカーもどちらも危ないものという認識だから両者を区別していないのです
狭い蛸壺で自分勝手にルールを決めても、そんなことはパンピーには通用しないという、いい例でしょう、ことわざにもありますよね「井の中の蛙大海を知らず」もっとも海水に耐える蛙は私もしりませんが
そうそう、どうしてもハッカーとクラッカーを区別したいんだったら「ホワイトハッカー」という言葉はある程度認知されているようですから、それを使いなさい
早く馬鹿が治るといいですね
世間一般ではハッカーとクラッカーとは区別しません、両者ともハッカーといいますね
狭い業界ではハッカーとクラッカーを区別して、いいニュアンスを持つものだけをハッカーとしたいようですが、世間はそうは見ておらずハッカーもクラッカーもどちらも危ないものという認識だから両者を区別していないのです
狭い蛸壺で自分勝手にルールを決めても、そんなことはパンピーには通用しないという、いい例でしょう、ことわざにもありますよね「井の中の蛙大海を知らず」もっとも海水に耐える蛙は私もしりませんが
そうそう、どうしてもハッカーとクラッカーを区別したいんだったら「ホワイトハッカー」という言葉はある程度認知されているようですから、それを使いなさい
早く馬鹿が治るといいですね
782デフォルトの名無しさん (ワッチョイ c20e-p5K4)
2020/08/14(金) 18:33:09.65ID:2wR+X/g+0783デフォルトの名無しさん (ワッチョイ 6277-p5K4)
2020/08/14(金) 18:47:19.76ID:cDg5L/fg0 防衛と侵略が区別できない政治家がいる国だもの。
>>782
>狭い蛸壺で自分勝手にルールを決めても、そんなことはパンピーには通用しない
>狭い蛸壺で自分勝手にルールを決めても、そんなことはパンピーには通用しない
>狭い蛸壺で自分勝手にルールを決めても、そんなことはパンピーには通用しない
>狭い蛸壺で自分勝手にルールを決めても、そんなことはパンピーには通用しない
>狭い蛸壺で自分勝手にルールを決めても、そんなことはパンピーには通用しない
>狭い蛸壺で自分勝手にルールを決めても、そんなことはパンピーには通用しない
>狭い蛸壺で自分勝手にルールを決めても、そんなことはパンピーには通用しない
>狭い蛸壺で自分勝手にルールを決めても、そんなことはパンピーには通用しない
>狭い蛸壺で自分勝手にルールを決めても、そんなことはパンピーには通用しない
>狭い蛸壺で自分勝手にルールを決めても、そんなことはパンピーには通用しない
786デフォルトの名無しさん (ワッチョイ c20e-p5K4)
2020/08/14(金) 19:11:49.78ID:2wR+X/g+0787デフォルトの名無しさん (ワッチョイ 3163-p0wA)
2020/08/14(金) 19:28:49.23ID:Us3wnTKB0 ここはどこの板で、
なんのスレだかも
見ようともしないのか
なんのスレだかも
見ようともしないのか
788デフォルトの名無しさん (ワッチョイ d17f-xn0R)
2020/08/14(金) 21:45:06.99ID:JGhukcXO0 古語で言うところの、夏厨ってやつだね
789デフォルトの名無しさん (ワッチョイ 3163-p0wA)
2020/08/14(金) 22:07:33.94ID:Us3wnTKB0 次スレから、IP強制表示にした方がいい?
790デフォルトの名無しさん (ワッチョイ 4290-o4rh)
2020/08/14(金) 22:13:46.18ID:yLQKJUZJ0 その方がいいと思う
いささか荒れすぎ感
いささか荒れすぎ感
791デフォルトの名無しさん (ワッチョイ 4946-+LRH)
2020/08/14(金) 22:39:41.29ID:AXcHM7Xg0792デフォルトの名無しさん (ワッチョイ 468c-1RiF)
2020/08/14(金) 22:41:53.95ID:h2QIVB9f0793デフォルトの名無しさん (ワッチョイ 81da-++7W)
2020/08/15(土) 00:46:37.07ID:xVZ93qLw0 >>792
本人のふりをして荒らさせようとするのはやめろ
本人のふりをして荒らさせようとするのはやめろ
794デフォルトの名無しさん (ワッチョイ 9901-eqxN)
2020/08/15(土) 12:58:19.65ID:Y9oiVJFr0 2次元配列への走査方向を行と列で入れ替えた際のパフォーマンスの違いは
何に起因するのでしょうか?
いずれにしてもソース上はランダムアクセスに違いないと思うのですが.
https://ideone.com/VjhO3l
何に起因するのでしょうか?
いずれにしてもソース上はランダムアクセスに違いないと思うのですが.
https://ideone.com/VjhO3l
795デフォルトの名無しさん (スッップ Sd62-NiDN)
2020/08/15(土) 13:28:06.72ID:Ol0PEc3Yd キャッシュ
796デフォルトの名無しさん (ワイーワ2 FF8a-jwrZ)
2020/08/15(土) 13:36:54.66ID:cGC1PAzNF >>784
ウィルス持ちの観光客が最強と判明しました
ウィルス持ちの観光客が最強と判明しました
797デフォルトの名無しさん (ワイーワ2 FF8a-jwrZ)
2020/08/15(土) 13:38:45.66ID:cGC1PAzNF >>794
メモリの連続性じゃないの?
メモリの連続性じゃないの?
798デフォルトの名無しさん (ワッチョイ 3163-p0wA)
2020/08/15(土) 13:43:34.64ID:0tc6f7mC0 今のPCってメモリーいっぱい積んでいるから、
よっぽど大きな配列出ないと差が出ないかも知れない
よっぽど大きな配列出ないと差が出ないかも知れない
799デフォルトの名無しさん (ワッチョイ 4961-IBtm)
2020/08/15(土) 13:57:10.40ID:qjcQBNN70 メモリが連続してる方向に走査すればCPUキャッシュが効きやすい
800デフォルトの名無しさん (ワッチョイ 422f-WAQY)
2020/08/15(土) 14:00:10.52ID:fqWla8CQ0 プロセッサのキャッシュにはキャッシュラインと言ってフェッチする単位があるんだよ。
あるアドレスをアクセスしたときラインサイズでフェッチしてあるからその後にそのライン内のアドレスならば速くアクセスできる。
要するに先読みしておいてくれるわけ。
あるアドレスをアクセスしたときラインサイズでフェッチしてあるからその後にそのライン内のアドレスならば速くアクセスできる。
要するに先読みしておいてくれるわけ。
801デフォルトの名無しさん (ワッチョイ 9901-eqxN)
2020/08/15(土) 14:31:56.10ID:Y9oiVJFr0 なるほどarr[i][j]へのアクセスでarr[i]の周辺もキャッシュに乗ることになって、
その近くなら早くアクセスできるんですね。
ありがとうございます。
その近くなら早くアクセスできるんですね。
ありがとうございます。
802デフォルトの名無しさん (ワッチョイ 9f10-fAYc)
2020/08/19(水) 09:31:04.59ID:9mqf8z+n0803デフォルトの名無しさん (スププ Sd9f-wndR)
2020/08/19(水) 12:30:49.32ID:ToVJAng8d まるでSuperfetchみたいな本末転倒だな
804デフォルトの名無しさん (ワッチョイ 1f05-YpYZ)
2020/08/19(水) 13:40:38.15ID:vFpWtsM/0 >>802
無意味なコピーだとコンパイラに見抜かれたら意味ないよね
無意味なコピーだとコンパイラに見抜かれたら意味ないよね
805デフォルトの名無しさん (ワントンキン MMdf-Ypyb)
2020/08/19(水) 20:00:17.69ID:/fw6ffjlM キャッシュに乗せるかどうかってコンパイラの仕事なの?
806デフォルトの名無しさん (ワッチョイ 9fca-8gnn)
2020/08/19(水) 20:01:21.69ID:iriw96df0 メモリアクセスしないといけないのに最適化でそのアクセスが省略されちゃうってこと
807デフォルトの名無しさん (ワントンキン MMdf-Ypyb)
2020/08/19(水) 20:02:45.07ID:/fw6ffjlM ああそっちか
808デフォルトの名無しさん (ワッチョイ 1fbb-Dag0)
2020/08/19(水) 20:19:01.78ID:wUlRTy820 -O3でコードが省略されるんですが計測したいのに省略されちゃうと計測できないんですが
-O3は計測するなってことですか?
-O3は計測するなってことですか?
809デフォルトの名無しさん (ワッチョイ 9f63-n+O8)
2020/08/19(水) 20:28:37.21ID:hsLGYVPM0 何らかの方法で「使ってますよ」って教えればいい
810デフォルトの名無しさん (ワッチョイ 1fbb-Dag0)
2020/08/19(水) 21:37:28.51ID:wUlRTy820 >>809
この前関数の呼び出しコストを計測しようとしたんですよ
void f() { }
みたいな関数なんですけど
でも-O3にすると関数呼び出しが省略されるんですね
このケースってなにかうまい方法ありますか?
この前関数の呼び出しコストを計測しようとしたんですよ
void f() { }
みたいな関数なんですけど
でも-O3にすると関数呼び出しが省略されるんですね
このケースってなにかうまい方法ありますか?
811デフォルトの名無しさん (ワッチョイ 1fbb-Dag0)
2020/08/19(水) 21:40:25.73ID:wUlRTy820 後出しみたいになってすみませんm(_ _)m
812蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd9f-iJX3)
2020/08/19(水) 21:41:01.00ID:FObCC8uFd マイナスオーゼロにすればぁ?
813デフォルトの名無しさん (スップ Sd1f-RBSG)
2020/08/19(水) 21:41:20.02ID:4erVQTjid 処理0個
処理1個
処理2個
の関数作って時間はかって処理1個にかかる時間を引き算
処理1個
処理2個
の関数作って時間はかって処理1個にかかる時間を引き算
814デフォルトの名無しさん (スップ Sd1f-RBSG)
2020/08/19(水) 21:42:15.13ID:4erVQTjid 最適化で展開とかされたらあかんけどね
815デフォルトの名無しさん (ブーイモ MM0f-PYI5)
2020/08/19(水) 21:44:41.25ID:afdzM61xM 最近のコンパイラさんは賢いで〜
816デフォルトの名無しさん (スップ Sd1f-RBSG)
2020/08/19(水) 21:45:36.69ID:4erVQTjid 最悪アセンブラ見てステップ数数える
関数呼び出しだけならそんな無いでしょ
関数呼び出しだけならそんな無いでしょ
817デフォルトの名無しさん (ワッチョイ 9f63-n+O8)
2020/08/19(水) 22:16:05.51ID:hsLGYVPM0 中でグローバル変数に代入してみたら?
コンパイラから見て、どこで使うかは分からないと思うよ
コンパイラから見て、どこで使うかは分からないと思うよ
818デフォルトの名無しさん (ワッチョイ 9fda-Dag0)
2020/08/19(水) 23:09:46.74ID:BCDBcsjw0 動的リンクされるようライブラリにすればいいんじゃね?
819デフォルトの名無しさん (ワッチョイ 1fbb-Dag0)
2020/08/19(水) 23:19:26.76ID:wUlRTy820 なるほど
参考にします
参考にします
820デフォルトの名無しさん (ワッチョイ 9f01-G9q0)
2020/08/19(水) 23:24:44.35ID:1TMyVKY80821デフォルトの名無しさん (ワッチョイ 7ff9-Dag0)
2020/08/20(木) 00:41:38.77ID:di44bxHe0 -O3でコンパイルした時のものを計測したいんだから
なくなる=時間0が正しいんじゃないの?
なくなる=時間0が正しいんじゃないの?
822デフォルトの名無しさん (ワッチョイ ff28-wQSi)
2020/08/20(木) 11:46:13.26ID:vxwYzwgQ0 前処理マクロの質問です。
ファイルの名前と関数名がコロンで繋がれた文字列を出力するマクロを作りたいです。
具体的には
somefile.cというファイルの中で
int somefnc(void) {
puts(FILE_FUNC);
return 0;
}
みたいなコードが,前処理を経て
int somefnc(void) {
puts("somefile:somefnc");
return 0;
}
というコードに変換されるようなマクロが書きたいです。
どうかよろしくおねがいします。
ファイルの名前と関数名がコロンで繋がれた文字列を出力するマクロを作りたいです。
具体的には
somefile.cというファイルの中で
int somefnc(void) {
puts(FILE_FUNC);
return 0;
}
みたいなコードが,前処理を経て
int somefnc(void) {
puts("somefile:somefnc");
return 0;
}
というコードに変換されるようなマクロが書きたいです。
どうかよろしくおねがいします。
823デフォルトの名無しさん (スップ Sd1f-RBSG)
2020/08/20(木) 13:06:29.61ID:OKbq69D/d824デフォルトの名無しさん (ワッチョイ ff28-wQSi)
2020/08/20(木) 15:49:31.41ID:vxwYzwgQ0 >>823
ありがとうございます。
__FILE__や__func__でファイル名・関数名が取得できることは
知っているのですが,その二つをコロンで繋いで文字列にする方法が
分からないんです。
言葉が足りなくてすいません。
例えば
#define FILE_FUNC __FILE__ ":" __func__
というような定義では,当然ではありますが,
うまくいきません。
__FILE__と__func__を展開しつつ,
間にコロンを入れて,外側を引用符で囲む,
という操作を実現できればいいのですが……。
ありがとうございます。
__FILE__や__func__でファイル名・関数名が取得できることは
知っているのですが,その二つをコロンで繋いで文字列にする方法が
分からないんです。
言葉が足りなくてすいません。
例えば
#define FILE_FUNC __FILE__ ":" __func__
というような定義では,当然ではありますが,
うまくいきません。
__FILE__と__func__を展開しつつ,
間にコロンを入れて,外側を引用符で囲む,
という操作を実現できればいいのですが……。
825デフォルトの名無しさん (スップ Sd1f-RBSG)
2020/08/20(木) 16:13:14.33ID:OKbq69D/d826デフォルトの名無しさん (エムゾネ FF9f-fHWV)
2020/08/20(木) 16:44:22.67ID:RX/3qqm6F char s[4] = "ABC";
は問題無いと思いますが
char s[4] = "ABCD";
とすると警告出ないのですが
最後の'\0'は無視されるのですか?
それとも意図しない領域に描き込まれているのですか?
は問題無いと思いますが
char s[4] = "ABCD";
とすると警告出ないのですが
最後の'\0'は無視されるのですか?
それとも意図しない領域に描き込まれているのですか?
827デフォルトの名無しさん (ブーイモ MMe3-Ga0Q)
2020/08/20(木) 17:36:07.94ID:h4eQG1wdM >>824
fprintf(stderr, "%s:%s", _FILE_, _func_)
fprintf(stderr, "%s:%s", _FILE_, _func_)
828デフォルトの名無しさん (ブーイモ MMe3-Ga0Q)
2020/08/20(木) 17:44:00.86ID:h4eQG1wdM >>826
仕様書6.7.9に余裕があったらnull文字も書き込むよって書いてあるので、余裕がないからnullは書き込まれてないんじゃないかな。
仕様書6.7.9に余裕があったらnull文字も書き込むよって書いてあるので、余裕がないからnullは書き込まれてないんじゃないかな。
829デフォルトの名無しさん (エムゾネ FF9f-fHWV)
2020/08/20(木) 17:52:19.01ID:RX/3qqm6F >>828
ありがとうございます
別の質問なのですが
char s[4] = "ABC";
のとき
printf("%2s\n", s);
で
ABC
まで表示されてしまいます
これを2文字で切るのは
%2s
じゃ駄目なんでしょうか?
ありがとうございます
別の質問なのですが
char s[4] = "ABC";
のとき
printf("%2s\n", s);
で
ABC
まで表示されてしまいます
これを2文字で切るのは
%2s
じゃ駄目なんでしょうか?
830デフォルトの名無しさん (ワッチョイ 9f63-n+O8)
2020/08/20(木) 18:19:55.36ID:ajS/uCbw0 %.2s
831デフォルトの名無しさん (エムゾネ FF9f-fHWV)
2020/08/20(木) 18:47:15.31ID:RX/3qqm6F 出来たかも知れないありがとう
ちなみに
char s[4] = "A";
printf("|%.2s|\n", s); // |A| 右詰めにならない(左に空白一文字分が出来ない)
printf("|%.-2s|\n", s); // |%.0-2s| って表示される
printf("|%-.2s|\n", s); // |A| 左詰めにならない(右に空白一文字分が出来ない)
なんですけど
printf("|%-2.2s|\n", s);
printf("|%2.2s|\n", s);
で自己解決です
ちなみに
char s[4] = "A";
printf("|%.2s|\n", s); // |A| 右詰めにならない(左に空白一文字分が出来ない)
printf("|%.-2s|\n", s); // |%.0-2s| って表示される
printf("|%-.2s|\n", s); // |A| 左詰めにならない(右に空白一文字分が出来ない)
なんですけど
printf("|%-2.2s|\n", s);
printf("|%2.2s|\n", s);
で自己解決です
832デフォルトの名無しさん (ドコグロ MM13-8+FT)
2020/08/20(木) 18:55:26.23ID:6pX7b83qM >824
そもそも__FILE__や__DATE__はリテラルだが__func__ はリテラルじゃないのでそういうことはできない。
そもそも__FILE__や__DATE__はリテラルだが__func__ はリテラルじゃないのでそういうことはできない。
833デフォルトの名無しさん (ワッチョイ ff28-wQSi)
2020/08/20(木) 19:58:56.88ID:vxwYzwgQ0 >>832
そうなんですね。
とすると,
#define FILE_FUNC(func) __FILE__ ":" func
みたいにして,
実際使う場面で
FILE_FUNC(__func__)
というように引数として渡す,という方法をとればいい
ってことでしょうか。
そうなんですね。
とすると,
#define FILE_FUNC(func) __FILE__ ":" func
みたいにして,
実際使う場面で
FILE_FUNC(__func__)
というように引数として渡す,という方法をとればいい
ってことでしょうか。
834833 (ワッチョイ ff28-wQSi)
2020/08/20(木) 20:00:10.19ID:vxwYzwgQ0835デフォルトの名無しさん (ワッチョイ 9f63-n+O8)
2020/08/20(木) 23:51:48.90ID:ajS/uCbw0836デフォルトの名無しさん (ワッチョイ ff28-wQSi)
2020/08/21(金) 12:10:40.53ID:RjoBQXpc0837デフォルトの名無しさん (ワッチョイ 1fd4-YpYZ)
2020/08/21(金) 17:03:22.67ID:/1umECfd0 ところで、何で__FILE__は直に文字列リテラルに置換され
__file__は暗黙に宣言される配列の識別子なんだろうな
まさに822が陥ったような混乱の元だと思うが
そうしなければならない理由があるのか
__file__は暗黙に宣言される配列の識別子なんだろうな
まさに822が陥ったような混乱の元だと思うが
そうしなければならない理由があるのか
838デフォルトの名無しさん (ワッチョイ ffe9-YpYZ)
2020/08/21(金) 17:31:23.64ID:J6Koy0SX0839デフォルトの名無しさん (ワッチョイ 1fbb-Dag0)
2020/08/21(金) 18:15:49.48ID:GWEzflke0 ああ、だから大文字じゃないのね
840デフォルトの名無しさん (ワッチョイ 1fd4-YpYZ)
2020/08/21(金) 18:46:45.25ID:/1umECfd0841デフォルトの名無しさん (ワッチョイ 7fad-RTUg)
2020/08/22(土) 10:09:37.81ID:K3IJhML30 >>401
> 何に使うかでそんなに変わるか?
亀レスでごめんなさい。
GUIを含むかどうかでちょと変わると思う。
WindowsならやはりVisualStuidoが便利だった。
Linux、UNIXならgcc,vi,makeの3種の神器かな?
> 何に使うかでそんなに変わるか?
亀レスでごめんなさい。
GUIを含むかどうかでちょと変わると思う。
WindowsならやはりVisualStuidoが便利だった。
Linux、UNIXならgcc,vi,makeの3種の神器かな?
842デフォルトの名無しさん (ワッチョイ ff28-wQSi)
2020/08/25(火) 11:52:50.75ID:c6c4SV8K0 for文の制御式にポインタが単独で使われているコードの意味が分かりません。
https://git.musl-libc.org/cgit/musl/tree/src/locale/catopen.c#n43
ここにある
const char *path, *p, *z;
path = getenv("NLSPATH");
for (p=path; *p; p=z) { // ← これ
...
}
こんな処理です。
繰り返しの際に実行する式にポインタを置くことで
どういう処理が行なわれているのか解説していただけないでしょうか。
どうかよろしくおねがいします。
https://git.musl-libc.org/cgit/musl/tree/src/locale/catopen.c#n43
ここにある
const char *path, *p, *z;
path = getenv("NLSPATH");
for (p=path; *p; p=z) { // ← これ
...
}
こんな処理です。
繰り返しの際に実行する式にポインタを置くことで
どういう処理が行なわれているのか解説していただけないでしょうか。
どうかよろしくおねがいします。
843デフォルトの名無しさん (エムゾネ FF9f-fHWV)
2020/08/25(火) 11:57:23.18ID:Zt9gBA2MF *p なら文字終端 '\0' チェックしてるだけじゃね
for (p=path; *p != '\0'; p=z) {
と一緒
for (p=path; *p != '\0'; p=z) {
と一緒
844デフォルトの名無しさん (ワッチョイ 1fbb-n+O8)
2020/08/25(火) 12:06:04.67ID:IYsRryaL0 p=zの方が気になる
845842 (ワッチョイ ff28-wQSi)
2020/08/25(火) 12:36:19.71ID:c6c4SV8K0846デフォルトの名無しさん (ワッチョイ 9fbd-8gnn)
2020/08/25(火) 12:36:38.95ID:N6/CJWHL0 >>842
*p は、その位置の文字が '¥0' じゃなければループ内に入る判定。
ようするに文字列の終端にたどり着くまでループするということ。
p=z の z は、ループ内で p から見た文字列の中の ':' がある位置の次が入るようになってる。
ようするに path を ':' 区切りにした断片を一つずつ処理してる。
*p は、その位置の文字が '¥0' じゃなければループ内に入る判定。
ようするに文字列の終端にたどり着くまでループするということ。
p=z の z は、ループ内で p から見た文字列の中の ':' がある位置の次が入るようになってる。
ようするに path を ':' 区切りにした断片を一つずつ処理してる。
847デフォルトの名無しさん (ワッチョイ 7f01-3yFl)
2020/08/25(火) 12:44:35.72ID:mY7DCxIU0 >>844
z = __strchrnul(p, ':'); で ':' 毎に切り出して処理して、次の項目に移動してるんでしょ
z = __strchrnul(p, ':'); で ':' 毎に切り出して処理して、次の項目に移動してるんでしょ
848デフォルトの名無しさん (ワッチョイ 1f7c-F02t)
2020/08/25(火) 12:48:06.50ID:lcyhmMWC0 strtok : ぼくの出番は・・・
849デフォルトの名無しさん (ワッチョイ 9f63-n+O8)
2020/08/25(火) 12:55:51.83ID:ch0Vj7Ea0 こういう2重ループは生理的に好きになれないw
850デフォルトの名無しさん (ワッチョイ ff28-wQSi)
2020/08/25(火) 13:24:37.63ID:c6c4SV8K0 >>848
たしかになぜstrtok()ではなくて独自関数を使うか気になりますね。
__strchrnul()はここで定義されていますが,
http://git.musl-libc.org/cgit/musl/tree/src/string/strchrnul.c
strtok()の仕様
https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtok.html
を見ても,ほとんどインターフェースも同じに思えます。
(引数の型がちょっと違う?)
strtok()関数自体を実装しているならともかく
外部から使用するのにわざわざstrtok()と仕様がそっくりな
独自の関数を用いる理由が分からないですね。
たしかになぜstrtok()ではなくて独自関数を使うか気になりますね。
__strchrnul()はここで定義されていますが,
http://git.musl-libc.org/cgit/musl/tree/src/string/strchrnul.c
strtok()の仕様
https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtok.html
を見ても,ほとんどインターフェースも同じに思えます。
(引数の型がちょっと違う?)
strtok()関数自体を実装しているならともかく
外部から使用するのにわざわざstrtok()と仕様がそっくりな
独自の関数を用いる理由が分からないですね。
851デフォルトの名無しさん (ワッチョイ 7f01-3yFl)
2020/08/25(火) 14:01:32.20ID:mY7DCxIU0852デフォルトの名無しさん (ワッチョイ 1fd4-YpYZ)
2020/08/25(火) 15:02:43.34ID:DOmxfygr0 再入可能じゃないからね
853デフォルトの名無しさん (ワッチョイ 7f7c-YpYZ)
2020/08/25(火) 15:06:17.67ID:fzTrphgL0 既存関数を使えばわざわざ文字列をループで処理する必要は無いと思えるけど
例えば昔から良くあるコマンドライン引数をチェックする場合などは
ループで処理するのが一般的かなと思われる
簡単なコードを書いてみたので確認してみるといいかも
https://paiza.io/projects/e/0d-LM04O2-C1g6xC2uXP5w
例えば昔から良くあるコマンドライン引数をチェックする場合などは
ループで処理するのが一般的かなと思われる
簡単なコードを書いてみたので確認してみるといいかも
https://paiza.io/projects/e/0d-LM04O2-C1g6xC2uXP5w
854デフォルトの名無しさん (ワッチョイ 1fd4-YpYZ)
2020/08/25(火) 15:08:24.49ID:DOmxfygr0 コマンドライン引数にstrtokは全く向かない
引用符使われただけでアウト
ASCIIコードしか想定していない
引用符使われただけでアウト
ASCIIコードしか想定していない
855デフォルトの名無しさん (ワッチョイ ff28-wQSi)
2020/08/25(火) 15:38:28.41ID:c6c4SV8K0 >>851
ありがとうございます。
なるほど,
https://www.jpcert.or.jp/sc-rules/c-str06-c.html
にも strtok() を不用意に扱わないようにという記述がありました。
だからわざわざ,strtok()に似ているが与件文字列を変更しない
っていう内部関数を利用していたんですね。
「区切り文字による分割」みたいな処理をする場合は,
strtok()の挙動を完全に理解した上で使うか,
自分で挙動を把握できる内部関数を作るかにするよう心掛けます。
(自分で1からC言語を書けるようになるのは
当分先のことになるとは思いますが)
ありがとうございます。
なるほど,
https://www.jpcert.or.jp/sc-rules/c-str06-c.html
にも strtok() を不用意に扱わないようにという記述がありました。
だからわざわざ,strtok()に似ているが与件文字列を変更しない
っていう内部関数を利用していたんですね。
「区切り文字による分割」みたいな処理をする場合は,
strtok()の挙動を完全に理解した上で使うか,
自分で挙動を把握できる内部関数を作るかにするよう心掛けます。
(自分で1からC言語を書けるようになるのは
当分先のことになるとは思いますが)
856デフォルトの名無しさん (ラクッペペ MM4f-N8Ih)
2020/08/25(火) 18:08:51.59ID:efL3nra7M ライブラリ関数内部で同じライブラリで公開してる別の関数を呼び出すのはエラー時に滅茶苦茶になりそうだから良くない
857デフォルトの名無しさん (ワッチョイ 9f01-Dag0)
2020/08/25(火) 19:42:36.86ID:KqJVwSUy0 へぇ __strchrnul だと非マッチ時 zがヌルポにならないようになってんのか
858デフォルトの名無しさん (ワッチョイ 6ed2-1etN)
2020/08/26(水) 07:47:13.52ID:EcgUuw1J0 文字列はS-JISのこと考えて自分で作るか
逆にunicodeで全部ライブラリに任せるかしてるわ。
逆にunicodeで全部ライブラリに任せるかしてるわ。
859デフォルトの名無しさん (ワッチョイ a5bb-xiBb)
2020/08/26(水) 07:57:09.94ID:68jGS2+/0 こないだユニコード文字列を扱うライブラリを作ったんだが、Poweshellから使うとうまく動作しないでやんの
Bashだとうまくいくからシェルの文字コードが原因かなぁって
Bashだとうまくいくからシェルの文字コードが原因かなぁって
860デフォルトの名無しさん (ワッチョイ 6991-3XxJ)
2020/08/28(金) 14:09:17.18ID:Rsi3PU970 Poweshell 相手 なら UTF16で試してみて
861デフォルトの名無しさん (ワッチョイ a5bb-xiBb)
2020/08/29(土) 18:11:22.84ID:uw2IISYA0862デフォルトの名無しさん (ワッチョイ 27d2-XrX+)
2020/09/05(土) 12:34:48.17ID:inRyx+ft0 一時期ソースファイルで使われる文字コードと
テキストコマンドで指定される文字コードで混乱してた。
テキストコマンドで指定される文字コードで混乱してた。
863デフォルトの名無しさん (ワッチョイ 675f-th+2)
2020/09/05(土) 14:24:19.26ID:D6IgUwp/0 ファイルシステムもコードページあれば良いのに
864デフォルトの名無しさん (ワッチョイ 5f2f-yCsQ)
2020/09/08(火) 19:54:58.87ID:XpL2+zA20 すみません
visualstudio2019で
scanfてうまく動かないて
書き込みありまさしたが
こちらは初心者です
visualstudio2019で
scanfてうまく動かないて
書き込みありまさしたが
こちらは初心者です
865デフォルトの名無しさん (ワッチョイ 27b7-XrX+)
2020/09/08(火) 20:04:29.03ID:oUJlYCUI0 何がうまくいかないの?
866デフォルトの名無しさん (ワッチョイ e7e6-dQ4P)
2020/09/08(火) 20:07:28.59ID:SzSjgAIn0 >>864
母国語でおk
母国語でおk
867デフォルトの名無しさん (ワッチョイ 0701-P8XZ)
2020/09/08(火) 20:33:38.44ID:h4K4tlm90 >>866
ماذا علي أن أفعل لتحسين عمل Scanf؟
ماذا علي أن أفعل لتحسين عمل Scanf؟
868デフォルトの名無しさん (ワッチョイ 5fa5-w/i8)
2020/09/08(火) 20:57:51.12ID:dd3/c9tT0 >>864
scanf_sを使うんだよ
scanf_sを使うんだよ
869デフォルトの名無しさん (ワッチョイ 27b7-XrX+)
2020/09/08(火) 21:00:35.32ID:oUJlYCUI0 自分が初心者だった頃を忘れて弱い者いじめするクズばっかり
870デフォルトの名無しさん (ワッチョイ 87e6-+pFZ)
2020/09/08(火) 21:38:18.70ID:L9CYXS2m0 ここの連中は初心者の時でもこんな愚かな質問しなかっただろうからな
871デフォルトの名無しさん (ワッチョイ 7f63-n8ne)
2020/09/08(火) 21:48:40.05ID:i07xiLbJ0 かまって欲しいだけだろう
872デフォルトの名無しさん (ワッチョイ 0701-P8XZ)
2020/09/08(火) 22:29:20.68ID:h4K4tlm90 よしよし かまってあげよう おいで〜
873デフォルトの名無しさん (ワッチョイ 27bb-n8ne)
2020/09/08(火) 22:40:52.39ID:5p23t/CB0 (≧▽≦)きゃー
874デフォルトの名無しさん (ワッチョイ 0701-P8XZ)
2020/09/08(火) 22:50:33.61ID:h4K4tlm90 (*-ω-)ヾ(・ω・*)ナデナデ
875デフォルトの名無しさん (ワッチョイ 1101-mScE)
2020/09/10(木) 22:31:27.77ID:XqO8hjOE0 >>869
ここ初心者向けじゃないし
ここ初心者向けじゃないし
876デフォルトの名無しさん (ワッチョイ f1b7-pVuC)
2020/09/11(金) 06:53:15.69ID:Cxw4gZ+X0 クズは認めるわけか
877デフォルトの名無しさん (ワッチョイ c5e6-nmCw)
2020/09/11(金) 09:46:30.88ID:t2oJFSgB0 この初心者のほうがよっぽどクズ
878デフォルトの名無しさん (ワッチョイ f1b7-pVuC)
2020/09/11(金) 11:05:17.65ID:Cxw4gZ+X0 クズを認めるからこそ比較できるわけだな
879デフォルトの名無しさん (ワッチョイ ea90-gr/N)
2020/09/11(金) 13:23:30.52ID:eRvWHPbG0 クズでもなんでもいいから正しい日本語を使って質問しなさい
880デフォルトの名無しさん (ワッチョイ f1b7-pVuC)
2020/09/11(金) 16:01:28.53ID:Cxw4gZ+X0 ほらな、質問者がクズかどうかは関係ないんだよ
881デフォルトの名無しさん (ワッチョイ 8d7f-sGGD)
2020/09/11(金) 17:04:12.34ID:ua52u3Jr0 お互い(屑であると)認め合う姿は美しいですね
882デフォルトの名無しさん (ワッチョイ b501-zsLS)
2020/09/12(土) 02:19:04.35ID:SzTm78BI0 静かになるまで5分かかりました(ry
883デフォルトの名無しさん (ワッチョイ 3628-oJ0F)
2020/09/14(月) 21:43:37.62ID:8/TQSAVT0 https://hnw.はてなブログ.com/entry/20130406
この記事(海外の質問箱の邦訳)に対するコメントで,
do{
...
} while (feof(input))
というコードが提案されているのですが,どう思われますか。
少なくとも一つの問題点(余分なループ)は克服できている気がしますが。
この記事(海外の質問箱の邦訳)に対するコメントで,
do{
...
} while (feof(input))
というコードが提案されているのですが,どう思われますか。
少なくとも一つの問題点(余分なループ)は克服できている気がしますが。
884デフォルトの名無しさん (ワッチョイ eaad-pVuC)
2020/09/15(火) 00:55:31.70ID:2J2Mo0F/0 >>883
コメントって、どこにあるの?
まあしかしそう書いたとしても c = fgetc(input) をやった直後の c の値が EOF かどうかを調べる必要があって、
EOF だったらループを抜ける必要がある。do { ... } while (feof(input)); のループ内に if ((c = fgetc(input)) == EOF) break; を
入れるとすると最後の while の条件は無駄だ。決して EOF に到達していないから。
コメントって、どこにあるの?
まあしかしそう書いたとしても c = fgetc(input) をやった直後の c の値が EOF かどうかを調べる必要があって、
EOF だったらループを抜ける必要がある。do { ... } while (feof(input)); のループ内に if ((c = fgetc(input)) == EOF) break; を
入れるとすると最後の while の条件は無駄だ。決して EOF に到達していないから。
885デフォルトの名無しさん (ワッチョイ 6da9-/xaV)
2020/09/15(火) 01:38:55.84ID:GcvmEeWM0 >>883
中身が空っぽなinputだったらどうする?
中身が空っぽなinputだったらどうする?
886デフォルトの名無しさん (ワッチョイ f1b7-pVuC)
2020/09/15(火) 07:29:42.10ID:YjwP830M0 後判定といえば自明な弱点があるね
887デフォルトの名無しさん (ワッチョイ 3628-oJ0F)
2020/09/15(火) 11:24:23.73ID:DboEcGlM0888デフォルトの名無しさん (ワッチョイ eaad-pVuC)
2020/09/15(火) 13:34:11.71ID:2J2Mo0F/0 ま、しかし、よくよく考えてみると feof() って使い所がほとんどないのではないか?
fgetc() が文字だけでなく EOF まで返す仕様になっているから使わずにも書けてしまうよね。
単にEOFになった後かどうかだけを調べたい場合は fgetc() 使ったら無駄な処理になるけど。
fgetc() が文字だけでなく EOF まで返す仕様になっているから使わずにも書けてしまうよね。
単にEOFになった後かどうかだけを調べたい場合は fgetc() 使ったら無駄な処理になるけど。
889デフォルトの名無しさん (ワイーワ2 FF92-e6VR)
2020/09/15(火) 13:46:37.73ID:i/gZOuAlF そもそも feof 使わないよね?って話題だし
890デフォルトの名無しさん (ワッチョイ 1163-pVuC)
2020/09/15(火) 14:02:51.06ID:pUsOBU6W0 fgetc()等はファイルを最後まで読み取った場合だけでなくエラーの場合もEOFを返すことになってるから
どちらの状況か区別するためにfeof(),ferror()はあるんだろ
区別しなくていいなら使わんわな
どちらの状況か区別するためにfeof(),ferror()はあるんだろ
区別しなくていいなら使わんわな
891デフォルトの名無しさん (ワッチョイ ea01-hEa4)
2020/09/15(火) 14:14:08.17ID:8CWM1WbO0 >>883
ダメダメって書いてあるやろ
rero
ferror の条件が成立した場合,feof の条件は成立せず,無限ループになる.
ループ脱出条件にはfread / fscanf / fgetc などの戻り値を使う.
feof は ferror との切り分けにのみ使う.
2014/02/04
ダメダメって書いてあるやろ
rero
ferror の条件が成立した場合,feof の条件は成立せず,無限ループになる.
ループ脱出条件にはfread / fscanf / fgetc などの戻り値を使う.
feof は ferror との切り分けにのみ使う.
2014/02/04
892883 (ワッチョイ 7f28-5uLG)
2020/09/16(水) 18:30:21.50ID:+0jueX8G0 ありがとうございました。
893デフォルトの名無しさん (ワッチョイ d793-lMKa)
2020/09/17(木) 12:37:14.53ID:3L04nVD50 関数定義の書式『例えばprintf関数なら、 int printf(const char * format, ...) 』とかで、関数の引数の型指定が含まれてるけど、これの指す具体的な意味って何?
例えば、const char*型が指定されていたとして、
1、「const char*型でなければならない」
2、「他の型も使えるがconst char*型を推奨する」
3、「色々と対応してるけど代表としてconst char*型を挙げる」
4、「1〜3のうちどれか、関数毎にケースバイケースで具体的には決まってない」
関数定義の書式における型指定には、どのような意味が込められてるんですか?
printf関数では、普通に文字列を入れた配列のポインタ(char *型)にも対応してるので、2か3なんだろうけども。
関数定義書式に含まれる型指定は、1〜4のどれなのか、C言語では統一的に指針が決まってますか?
例えば、const char*型が指定されていたとして、
1、「const char*型でなければならない」
2、「他の型も使えるがconst char*型を推奨する」
3、「色々と対応してるけど代表としてconst char*型を挙げる」
4、「1〜3のうちどれか、関数毎にケースバイケースで具体的には決まってない」
関数定義の書式における型指定には、どのような意味が込められてるんですか?
printf関数では、普通に文字列を入れた配列のポインタ(char *型)にも対応してるので、2か3なんだろうけども。
関数定義書式に含まれる型指定は、1〜4のどれなのか、C言語では統一的に指針が決まってますか?
894デフォルトの名無しさん (ワイーワ2 FFdf-SP/v)
2020/09/17(木) 12:40:32.43ID:OW2OZx8DF 1
895デフォルトの名無しさん (ワッチョイ d793-lMKa)
2020/09/17(木) 12:50:38.33ID:3L04nVD50 printf関数の場合では、「char*型が使えるように見えるけど、色々と問題起きるからconst char*型以外は禁止」ということなんですか。
分かりました。
分かりました。
896デフォルトの名無しさん (ドコグロ MMdf-aBI4)
2020/09/17(木) 12:53:34.67ID:uk2B69G8M const char*はchar*の指す先を書き換えないだけで同じものなのでconst char*をchar*で初期化してなんの問題もない。暗黙変換してくれる。
逆は書き換えられないconst char*が書き換えできる様になってしまうので暗黙にはしない様になっている。
逆は書き換えられないconst char*が書き換えできる様になってしまうので暗黙にはしない様になっている。
897デフォルトの名無しさん (ワッチョイ b7b7-Cup9)
2020/09/17(木) 13:02:01.33ID:9/9M+ZB20 こんなこともできるけどね
static /* const */ char str[] = "hello stupid people";
printf(str);
static /* const */ char str[] = "hello stupid people";
printf(str);
898デフォルトの名無しさん (ワイーワ2 FFdf-SP/v)
2020/09/17(木) 13:08:31.54ID:OW2OZx8DF 質問のレベルから忖度すると
質問者が気にしてるのは
ひょっとすると
...
の部分の方なのかも知れない
質問者が気にしてるのは
ひょっとすると
...
の部分の方なのかも知れない
899デフォルトの名無しさん (ワッチョイ f77c-E8AY)
2020/09/17(木) 13:10:16.65ID:/CJv2N4s0 #include <stdio.h>
int main(int ac, char **av)
{
int p = 0x000a0d41;
printf((char *)&p);
return 0;
}
int main(int ac, char **av)
{
int p = 0x000a0d41;
printf((char *)&p);
return 0;
}
900デフォルトの名無しさん (ワッチョイ bf8c-CUqR)
2020/09/17(木) 13:40:44.35ID:PwEIVjdJ0 関数定義の引数が配列で書けるようになったのはいつから
int func(array[5]){
.......
}
int func(array[5]){
.......
}
901デフォルトの名無しさん (ワッチョイ b7b7-Cup9)
2020/09/17(木) 13:45:22.35ID:9/9M+ZB20 型指定子がないけど暗黙intってことか? 無理だと思うけど
902デフォルトの名無しさん (ワイーワ2 FFdf-SP/v)
2020/09/17(木) 13:46:44.16ID:OW2OZx8DF 昔から
903デフォルトの名無しさん (ワッチョイ 177f-mv5V)
2020/09/17(木) 13:52:07.27ID:qRMpu/GI0 >>899
明示変換してるのに暗黙変換もさせるのは読みづらいよ
明示変換してるのに暗黙変換もさせるのは読みづらいよ
904デフォルトの名無しさん (ワッチョイ b7b7-Cup9)
2020/09/17(木) 13:55:11.12ID:9/9M+ZB20 つーかさ
pにアドレス演算子つけてるの
何かがわかってない兆候じゃね?
pにアドレス演算子つけてるの
何かがわかってない兆候じゃね?
905デフォルトの名無しさん (ワッチョイ d793-lMKa)
2020/09/17(木) 14:31:37.44ID:3L04nVD50 皆さんのレスを行間を読んでまとめること、こんな感じの理解でいいですか?
代入の際、右辺の値は、左辺の型に暗黙変換される。
int a = 3.5; // duble型リテラルを暗黙変換してaには3が入る
int a = 'a' // const char型?リテラルを暗黙変換してaには文字コードを表す97が入る
int a ="ほげ"; // const char型リテラルを暗黙変換してaにはよくわからん不正値が入る
同様に、関数へ引数を渡すことも代入の一種であり、実引数が代入する側であるから代入式の右辺に相当し、仮引数が代入される側であるから左辺に相当する。
その際、実引数char*型は仮引数const char*型へ暗黙変換される。
int main(void) {
char hoge[] = "ほげ";
printf(hoge); // 実引数hogeは先頭要素を指すポインタchar*型で、暗黙変換を伴って仮引数のconst char*型となる
}
この逆、仮引数char*型に実引数const char*型を渡すのはNG。char*型とわざわざ指定されてる理由は、値を書き換え可能なポインタを求めるためであり、const char*型はダメ。
代入の際、右辺の値は、左辺の型に暗黙変換される。
int a = 3.5; // duble型リテラルを暗黙変換してaには3が入る
int a = 'a' // const char型?リテラルを暗黙変換してaには文字コードを表す97が入る
int a ="ほげ"; // const char型リテラルを暗黙変換してaにはよくわからん不正値が入る
同様に、関数へ引数を渡すことも代入の一種であり、実引数が代入する側であるから代入式の右辺に相当し、仮引数が代入される側であるから左辺に相当する。
その際、実引数char*型は仮引数const char*型へ暗黙変換される。
int main(void) {
char hoge[] = "ほげ";
printf(hoge); // 実引数hogeは先頭要素を指すポインタchar*型で、暗黙変換を伴って仮引数のconst char*型となる
}
この逆、仮引数char*型に実引数const char*型を渡すのはNG。char*型とわざわざ指定されてる理由は、値を書き換え可能なポインタを求めるためであり、const char*型はダメ。
906はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/17(木) 14:32:12.65ID:FojOL81h0 >>900
型が書かれていないけどそれはタイプミスだとすれば、
配列形式で仮引数を書くこと自体は昔から出来る。
ただし、配列形式で書かれるとそれはポインタに調整される。
たとえば仮引数が int array[5] だったら int* array と全く同じとみなされる。
配列の大きさの情報は無視される。
(ひょっとすると警告を出すためのヒントにするくらいの処理系はあったりするのかもしれんけど。)
型が書かれていないけどそれはタイプミスだとすれば、
配列形式で仮引数を書くこと自体は昔から出来る。
ただし、配列形式で書かれるとそれはポインタに調整される。
たとえば仮引数が int array[5] だったら int* array と全く同じとみなされる。
配列の大きさの情報は無視される。
(ひょっとすると警告を出すためのヒントにするくらいの処理系はあったりするのかもしれんけど。)
907はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/17(木) 14:42:51.44ID:FojOL81h0 >>905
暗黙の変換がされる場合とされない場合はあって、
int a ="ほげ";
で暗黙の変換をする保証はない。
C99 だと単純代入で許される型の組み合わせは 6.3.16 に書かれている。
処理系の拡張としてやっちゃうこともあるかもしれんけど、
その場合でも警告は出るんじゃないかなぁ。
> 関数へ引数を渡すことも代入の一種であり
その通りだが、関数原型 (プロトタイプ) がない場合や
可変長引数 (仮引数が ... で表されるやつ) の場合はちょっとルールが特殊な部分もある。
まちがっててもコンパイラが検出できないこともあるので気を付けないといけない。
暗黙の変換がされる場合とされない場合はあって、
int a ="ほげ";
で暗黙の変換をする保証はない。
C99 だと単純代入で許される型の組み合わせは 6.3.16 に書かれている。
処理系の拡張としてやっちゃうこともあるかもしれんけど、
その場合でも警告は出るんじゃないかなぁ。
> 関数へ引数を渡すことも代入の一種であり
その通りだが、関数原型 (プロトタイプ) がない場合や
可変長引数 (仮引数が ... で表されるやつ) の場合はちょっとルールが特殊な部分もある。
まちがっててもコンパイラが検出できないこともあるので気を付けないといけない。
908デフォルトの名無しさん (ワッチョイ b7b7-Cup9)
2020/09/17(木) 16:23:39.93ID:9/9M+ZB20 処理系の拡張ねえ
gccは-pedanticつけないと黙って通す場合あるかんな
>>905
void func(char *);
func("const char array");
これconst違反なのにできちまう
gccは-pedanticつけないと黙って通す場合あるかんな
>>905
void func(char *);
func("const char array");
これconst違反なのにできちまう
909デフォルトの名無しさん (ワッチョイ bf8c-CUqR)
2020/09/17(木) 17:46:14.08ID:7hPXgG620910はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/17(木) 18:43:35.04ID:FojOL81h0 >>908
C の文字列リテラルは char の配列ということになっているので char* で受け取れる。
型の視点で見ればそのコードに const は登場しない。
文字列リテラルを書き換えようとした結果は未定義であるにもかかわらず
型に const が付かない C のクソなところのひとつ。
(C++ では文字列リテラルの型には const が付く。)
C の文字列リテラルは char の配列ということになっているので char* で受け取れる。
型の視点で見ればそのコードに const は登場しない。
文字列リテラルを書き換えようとした結果は未定義であるにもかかわらず
型に const が付かない C のクソなところのひとつ。
(C++ では文字列リテラルの型には const が付く。)
911デフォルトの名無しさん (ワッチョイ d793-lMKa)
2020/09/17(木) 19:21:07.83ID:3L04nVD50 よく見てみたら使ってるツールがC++用だった。
C言語入門本でインストールを促すソフトが大抵Visual StudioのC++で、
意識せずにC++の開発環境でC言語の勉強をしてたんだな。
それで、C言語の挙動だと思ってたのが、実はC++の挙動だったんだな。const の件もそう。
C言語入門本でインストールを促すソフトが大抵Visual StudioのC++で、
意識せずにC++の開発環境でC言語の勉強をしてたんだな。
それで、C言語の挙動だと思ってたのが、実はC++の挙動だったんだな。const の件もそう。
912デフォルトの名無しさん (ワッチョイ b7b7-Cup9)
2020/09/17(木) 19:39:01.71ID:9/9M+ZB20913デフォルトの名無しさん (ラクッペペ MM8f-kMIc)
2020/09/17(木) 19:55:04.93ID:+PkSrmT3M いくら引数リストに要素数を記述してもコンパイラは無視する
int func(int **array)と同じ扱いでただのニ重ポインタ
int func(int **array)と同じ扱いでただのニ重ポインタ
914デフォルトの名無しさん (ワッチョイ b7b7-Cup9)
2020/09/17(木) 19:57:19.31ID:9/9M+ZB20 >>913
アホwバカwww
アホwバカwww
915デフォルトの名無しさん (ワッチョイ b7b7-Cup9)
2020/09/17(木) 19:58:54.02ID:9/9M+ZB20 char **aho = 0;
printf("%p ", aho);
aho++;
printf("%p ", aho);
printf("%p ", array);
array++;
printf("%p ", array);
printf("%p ", aho);
aho++;
printf("%p ", aho);
printf("%p ", array);
array++;
printf("%p ", array);
916デフォルトの名無しさん (ワッチョイ d793-lMKa)
2020/09/17(木) 19:59:49.49ID:3L04nVD50 でもまあプログラムの再利用性を考えたら、constの件は、C++仕様に配慮して省かないことが大事か。
C++に配慮したコードを書くことで、C言語でもC++でも通用するプログラムとなり、プログラムの再利用性が上がる。
C言語ではconstを省くことが文法的には認められてても・・・・・C++に流用できないプログラムは、たぶんコードとしては減点となる。
C++に配慮したコードを書くことで、C言語でもC++でも通用するプログラムとなり、プログラムの再利用性が上がる。
C言語ではconstを省くことが文法的には認められてても・・・・・C++に流用できないプログラムは、たぶんコードとしては減点となる。
917デフォルトの名無しさん (ラクッペペ MM8f-kMIc)
2020/09/17(木) 20:03:53.36ID:FZAv8QRcM918はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/17(木) 20:05:11.15ID:FojOL81h0919はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/17(木) 20:08:22.99ID:FojOL81h0 >>917
配列を渡すのではなく「配列へのポインタ」だ。
配列は多くの場合に配列の先頭要素を指すポインタに暗黙に型変換されるけども、
それとは別に配列を指すポインタというものが存在し、
指す先の配列の大きさは型情報として保存される。
配列を渡すのではなく「配列へのポインタ」だ。
配列は多くの場合に配列の先頭要素を指すポインタに暗黙に型変換されるけども、
それとは別に配列を指すポインタというものが存在し、
指す先の配列の大きさは型情報として保存される。
920デフォルトの名無しさん (ラクッペペ MM8f-kMIc)
2020/09/17(木) 20:13:48.15ID:9q71Nrm0M 関数の引数として配列を渡す場合、アドレスと要素数は別に渡す必要がある
関数内で要素数を知る手段はない
int func(int **array, int i, int j)
関数内で要素数を知る手段はない
int func(int **array, int i, int j)
921はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/17(木) 20:14:06.25ID:FojOL81h0 int array[][5] という配列があったとしたら、その先頭要素の型は int [5] なので、
通常通り配列の先頭要素そ指す型に型変換したら int (*)[5] になるんだ。
仮引数の側もそれと同じような調整が入る。
通常通り配列の先頭要素そ指す型に型変換したら int (*)[5] になるんだ。
仮引数の側もそれと同じような調整が入る。
922デフォルトの名無しさん (ラクッペペ MM8f-kMIc)
2020/09/17(木) 20:19:02.57ID:9q71Nrm0M それは配列の変数宣言の場合だ
仮引数の場合には当たらない
仮引数の場合には当たらない
923はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/17(木) 20:29:34.78ID:FojOL81h0924デフォルトの名無しさん (ラクッペペ MM8f-kMIc)
2020/09/17(木) 20:31:16.69ID:JChOP/F3M だから糖衣構文だと言ってるだろ
925はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/17(木) 20:32:41.07ID:FojOL81h0 >>916
正直言って、const のありがたみが今一つよくわからないんですよね…
正直言って、const のありがたみが今一つよくわからないんですよね…
927デフォルトの名無しさん (ワッチョイ 17da-o3gE)
2020/09/17(木) 21:37:33.81ID:VrEKPYEi0 確認してみた
配列が仮引数の関数内で配列の型情報は失われて単なるポインタになってる
メイン関数内配列サイズ 20Byte (int[5] = 4Byte * 5)
関数内配列サイズ 8Byte (int* = 64bit)
https://i.imgur.com/nItgOZC.png
配列が仮引数の関数内で配列の型情報は失われて単なるポインタになってる
メイン関数内配列サイズ 20Byte (int[5] = 4Byte * 5)
関数内配列サイズ 8Byte (int* = 64bit)
https://i.imgur.com/nItgOZC.png
928デフォルトの名無しさん (ラクッペペ MM8f-kMIc)
2020/09/17(木) 21:54:03.82ID:PVWtVfHXM そう、仮引数の配列要素数はコンパイラに無視される
ただのポインタだから配列サイズは失われている
ただのポインタだから配列サイズは失われている
929デフォルトの名無しさん (アウアウエー Sadf-XGHE)
2020/09/17(木) 22:14:39.96ID:ysRkZn2Ya >>926
うっかり変更しようとしたら、コンパイル時にエラーになるでしょ
うっかり変更しようとしたら、コンパイル時にエラーになるでしょ
930デフォルトの名無しさん (ワッチョイ 177f-mv5V)
2020/09/17(木) 22:35:38.61ID:qRMpu/GI0931はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/17(木) 22:46:13.06ID:FojOL81h0 修飾なしで const になって、変更可能な変数の場合に指定を付けるようになってればよかったのに
という声は一部では根強く有る。
もちろんそんな非互換な変更を C/C++ が受け入れるはずがないので
あくまでももしもの話というか愚痴の類なんだけど。
でも Rust がまさにそうなったので型の厳しさを指向するなら
デフォルトで変更不能な方が自然なのかもしれんね。
個人的には、 C で意識して const を付けるのは関数の仮引数くらいで十分だろう
という程度かな。 そのかわり仮引数の型付けはかなりしっかりしたい。
という声は一部では根強く有る。
もちろんそんな非互換な変更を C/C++ が受け入れるはずがないので
あくまでももしもの話というか愚痴の類なんだけど。
でも Rust がまさにそうなったので型の厳しさを指向するなら
デフォルトで変更不能な方が自然なのかもしれんね。
個人的には、 C で意識して const を付けるのは関数の仮引数くらいで十分だろう
という程度かな。 そのかわり仮引数の型付けはかなりしっかりしたい。
932デフォルトの名無しさん (ワッチョイ 17da-o3gE)
2020/09/17(木) 23:08:14.29ID:VrEKPYEi0933デフォルトの名無しさん (ワッチョイ ff63-LEsg)
2020/09/17(木) 23:13:21.69ID:aQ5w/H9b0 リソースが極限まで制限されるような環境下で動かすことがる
ハードに近い部分を書くことが多かった
最適化の精度が悪かった
みたいな時代背景があるのでデフォルトがconstはナンセンス
もちろん今の時代に1から設計するならそういう言語が出てくるのは当然
ハードに近い部分を書くことが多かった
最適化の精度が悪かった
みたいな時代背景があるのでデフォルトがconstはナンセンス
もちろん今の時代に1から設計するならそういう言語が出てくるのは当然
934デフォルトの名無しさん (ワッチョイ 177f-PS54)
2020/09/17(木) 23:27:44.50ID:qRMpu/GI0 >>932
sizeof(*array)だよ
sizeof(*array)だよ
935デフォルトの名無しさん (ラクッペペ MM8f-Y+8D)
2020/09/17(木) 23:46:44.97ID:cQbuW7S9M936はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/18(金) 00:25:49.56ID:InePzAsW0 普通に array[1][3] みたいにして要素にアクセスするときでも
規格上の理屈では *(*(array+1)+3) の構文糖であるということになってて、
じゃあこれを成り立たせるにはどういう型情報があればいいのか
みたいな方向でパズル的に考えて遊んだりするのも面白いかもね。
あとここまでのやりとりで出てきてないっぽいから注意点を示しておくけど、
配列が暗黙の型変換でそれの先頭を指すポインタになるルールの例外が
sizeof を適用したときと単項 & を適用したときだよ。
規格上の理屈では *(*(array+1)+3) の構文糖であるということになってて、
じゃあこれを成り立たせるにはどういう型情報があればいいのか
みたいな方向でパズル的に考えて遊んだりするのも面白いかもね。
あとここまでのやりとりで出てきてないっぽいから注意点を示しておくけど、
配列が暗黙の型変換でそれの先頭を指すポインタになるルールの例外が
sizeof を適用したときと単項 & を適用したときだよ。
937デフォルトの名無しさん (ワッチョイ b7b7-Cup9)
2020/09/18(金) 06:03:42.05ID:dDojkzke0 sizeofと&が例外って言い方よく見かけるけど
気持ちの中ではこっちが本来だね
extern int array[]; と
extern int *array; じゃ
意味違うし
気持ちの中ではこっちが本来だね
extern int array[]; と
extern int *array; じゃ
意味違うし
938デフォルトの名無しさん (ワッチョイ 9f01-RDjc)
2020/09/18(金) 06:28:13.21ID:n6muJc1p0 >>933
> リソースが極限まで制限されるような環境下で動かすことがる
> ハードに近い部分を書くことが多かった
> 最適化の精度が悪かった
なんの理由にもなってないと思うが…
単にK&Rがそう言うのに無頓着だっただけだろ
> リソースが極限まで制限されるような環境下で動かすことがる
> ハードに近い部分を書くことが多かった
> 最適化の精度が悪かった
なんの理由にもなってないと思うが…
単にK&Rがそう言うのに無頓着だっただけだろ
939デフォルトの名無しさん (ワッチョイ b7b7-Cup9)
2020/09/18(金) 06:31:46.59ID:dDojkzke0 何の理由にもなってないのはそのとおりだが
なんで無頓着って話になるんだ?
アセンブラで書いていたUnicsを高級言語で書けるようにしようって作ったんだぜ?
なんで無頓着って話になるんだ?
アセンブラで書いていたUnicsを高級言語で書けるようにしようって作ったんだぜ?
940はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/18(金) 09:01:10.98ID:InePzAsW0941デフォルトの名無しさん (ワッチョイ b7b7-Cup9)
2020/09/18(金) 09:11:41.22ID:dDojkzke0 初心者がややこしい規則をこれから憶えようってときには
確かにあの言い方は情報量少なくて憶えやすそうだけど
初心者を卒業したらいつまでもしがみついてると格好悪いね
確かにあの言い方は情報量少なくて憶えやすそうだけど
初心者を卒業したらいつまでもしがみついてると格好悪いね
942デフォルトの名無しさん (ワッチョイ 9f01-RDjc)
2020/09/18(金) 10:09:00.07ID:n6muJc1p0943デフォルトの名無しさん (エムゾネ FFbf-SP/v)
2020/09/18(金) 10:37:02.65ID:6n8VMUNiF ラクッペペ MM8f-kMIc
↑
こいつは無視でOK
↑
こいつは無視でOK
944デフォルトの名無しさん (ワントンキン MM7f-zg3h)
2020/09/18(金) 12:10:56.45ID:3NbVdp1XM そんな感じの2次元配列の引数としてはかけるけど
実際その関数になに代入してもエラー吐くやつとかあったな
実際その関数になに代入してもエラー吐くやつとかあったな
945デフォルトの名無しさん (ワッチョイ b7b7-Cup9)
2020/09/18(金) 12:52:30.78ID:dDojkzke0 関数に代入ってどゆこと?
946デフォルトの名無しさん (ワッチョイ b7b7-Cup9)
2020/09/18(金) 12:54:19.87ID:dDojkzke0947デフォルトの名無しさん (ワントンキン MM7f-zg3h)
2020/09/18(金) 16:08:04.83ID:3NbVdp1XM >>945
引数になにいれてもだった
引数になにいれてもだった
948デフォルトの名無しさん (ワッチョイ b7b7-Cup9)
2020/09/18(金) 20:15:43.21ID:dDojkzke0 こういうこと?
void func(int (*array)[5], int **pointer)
{
char a[2][5], *p;
array = a; //ok
pointer = a; //error
array = &p; //error
pointer = &p; //ok
}
void func(int (*array)[5], int **pointer)
{
char a[2][5], *p;
array = a; //ok
pointer = a; //error
array = &p; //error
pointer = &p; //ok
}
949はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/18(金) 23:38:09.01ID:InePzAsW0950948 (ワッチョイ b7b7-Cup9)
2020/09/19(土) 09:21:06.58ID:FHaFE8730 あ、すまんw
s/char/int/g
s/char/int/g
951デフォルトの名無しさん (ワッチョイ 7f28-5uLG)
2020/09/19(土) 11:02:59.46ID:Uw1s41Nc0952はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/19(土) 13:13:28.09ID:cxOsPIuF0 >>951
一応は >>949 も未定義だよ。
呼出規約が cdecl だったら余計な引数は捨てられるだけで問題にならないとは思うけど。
余計な引数を渡すのとは逆に必要な引数を渡さないという例も書けるから、
より危険性がわかりやすいかな。
https://wandbox.org/permlink/1F876xK6UZ4wFjAA
余談だけど関数定義は宣言も兼ねるというルールにおいて、
K&R スタイルの関数定義はプロトタイプを持たない宣言でもあるという扱いだから
別途プロトタイプ宣言をする分にはエラーとして検出される。
https://wandbox.org/permlink/4n574f4R9yq0BzUj
一応は >>949 も未定義だよ。
呼出規約が cdecl だったら余計な引数は捨てられるだけで問題にならないとは思うけど。
余計な引数を渡すのとは逆に必要な引数を渡さないという例も書けるから、
より危険性がわかりやすいかな。
https://wandbox.org/permlink/1F876xK6UZ4wFjAA
余談だけど関数定義は宣言も兼ねるというルールにおいて、
K&R スタイルの関数定義はプロトタイプを持たない宣言でもあるという扱いだから
別途プロトタイプ宣言をする分にはエラーとして検出される。
https://wandbox.org/permlink/4n574f4R9yq0BzUj
953デフォルトの名無しさん (ワッチョイ 7f28-5uLG)
2020/09/19(土) 14:57:40.15ID:Uw1s41Nc0954デフォルトの名無しさん (ワッチョイ 7f28-5uLG)
2020/09/19(土) 14:57:50.91ID:Uw1s41Nc0 すまんsage
955デフォルトの名無しさん (ワッチョイ 9f26-XaKm)
2020/09/21(月) 03:21:46.70ID:SqQ7e3H60 >>952
普通先行宣言をちゃんとするだろ
普通先行宣言をちゃんとするだろ
956はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/21(月) 08:57:54.77ID:sulqQktu0 >>955
普通はする。 すべきだ。 というのがどれほどあてになるか。
普通はすることを (うっかり) しなかったら (エラーとして検出されずに) 通ってしまうってのは
K&R スタイルの関数定義はイケてないねって話。
普通はする。 すべきだ。 というのがどれほどあてになるか。
普通はすることを (うっかり) しなかったら (エラーとして検出されずに) 通ってしまうってのは
K&R スタイルの関数定義はイケてないねって話。
957はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/21(月) 08:59:37.43ID:sulqQktu0 K&R スタイルでなくともファイルを分割すると宣言と定義の矛盾が検出されなかったりもする。
// foo.c
void foo(int x) {
}
// foo.h
void foo(void);
// main.c
#include "foo.h"
int main(void) {
foo();
}
このとき foo.c をコンパイルするだけなら foo.h は不要だが
foo.c で foo.h をインクルードしておかないと間違いは検出できない。
// foo.c
void foo(int x) {
}
// foo.h
void foo(void);
// main.c
#include "foo.h"
int main(void) {
foo();
}
このとき foo.c をコンパイルするだけなら foo.h は不要だが
foo.c で foo.h をインクルードしておかないと間違いは検出できない。
958デフォルトの名無しさん (アウウィフ FF5b-SP/v)
2020/09/21(月) 10:49:53.26ID:M8W5JifWF linkエラーは?
959デフォルトの名無しさん (ワッチョイ 9f01-RDjc)
2020/09/21(月) 11:10:21.40ID:WONfy98d0960デフォルトの名無しさん (アウウィフ FF5b-SP/v)
2020/09/21(月) 11:19:45.80ID:M8W5JifWF 実行時にスタック壊れたり
hangupしたりするんです?
hangupしたりするんです?
961はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-b3rt)
2020/09/21(月) 12:59:37.93ID:sulqQktu0962デフォルトの名無しさん (ワッチョイ b7b7-Cup9)
2020/09/21(月) 17:40:26.50ID:PNFNM3Vd0 > 現代の実装技術なら検出できないことはないはずなんだが、
ちゃんとやってるよ
外部参照名の長さの上限を増やすという
後方互換性を損なわない賢いやり方で
それの恩恵を有り難く頂戴しているのがC++
ちゃんとやってるよ
外部参照名の長さの上限を増やすという
後方互換性を損なわない賢いやり方で
それの恩恵を有り難く頂戴しているのがC++
963デフォルトの名無しさん (ドコグロ MMdf-RDjc)
2020/09/21(月) 20:06:59.96ID:CAa9Vr4hM 意味わからん
マンダリングしてるC処理系なんてあったっけ?
別にオブジェクトコードに含ませなくてもデバッグ情報に含ませといてチェックするとかでも良いと思うけどね
マンダリングしてるC処理系なんてあったっけ?
別にオブジェクトコードに含ませなくてもデバッグ情報に含ませといてチェックするとかでも良いと思うけどね
964デフォルトの名無しさん (ワッチョイ b7b7-Cup9)
2020/09/21(月) 21:16:44.87ID:PNFNM3Vd0 s/マンダリング/マングリング/g
965デフォルトの名無しさん (バッミングク MM4f-ejv8)
2020/09/21(月) 21:27:28.62ID:r8sxqPhqM >>963
32bitWindows向けのstdcallは引数等で使うスタックサイズを名前の後ろに付け加える
32bitWindows向けのstdcallは引数等で使うスタックサイズを名前の後ろに付け加える
966デフォルトの名無しさん (ワッチョイ 9f47-SP/v)
2020/09/22(火) 02:46:33.89ID:EwzeVKsQ0 本人が間違ってる分には無視すれば良いだけだが
初心者スレで嘘を撒き散らすのは良くないな
初心者スレで嘘を撒き散らすのは良くないな
967デフォルトの名無しさん (アウアウウー Sa5b-e7tI)
2020/09/22(火) 09:19:28.05ID:73EWHT9ca volatileオブジェクトへのアクセスは副作用を生じるというのを見たことがあるのですが
この場合の副作用とは具体的にはどういう事象のことを言っているのでしょうか?
この場合の副作用とは具体的にはどういう事象のことを言っているのでしょうか?
968デフォルトの名無しさん (ワッチョイ bfe9-Cup9)
2020/09/22(火) 09:29:18.39ID:GaogVwml0 >>967
具体例としては、 volatile なオブジェクトへのポインタを通したアクセスをメモリマップドI/Oと対応させることが多い。
https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%9E%E3%83%83%E3%83%97%E3%83%89I/O
具体例としては、 volatile なオブジェクトへのポインタを通したアクセスをメモリマップドI/Oと対応させることが多い。
https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%9E%E3%83%83%E3%83%97%E3%83%89I/O
969デフォルトの名無しさん (オイコラミネオ MMab-bB21)
2020/09/22(火) 11:37:01.89ID:duZr+LV8M >>967
遅くなることがあるということかな?
遅くなることがあるということかな?
970デフォルトの名無しさん (アウアウウー Sa5b-e7tI)
2020/09/22(火) 12:21:55.75ID:73EWHT9ca971デフォルトの名無しさん (アウアウエー Sadf-XGHE)
2020/09/22(火) 12:26:59.11ID:ZRR+59kRa 最適化によって、本来は必要な処理がコンパイラによって省かれてしまうとか
972デフォルトの名無しさん (アウアウエー Sadf-XGHE)
2020/09/22(火) 12:28:12.05ID:ZRR+59kRa コンパイラの判断によって、一部のコードが生成されないとか
973デフォルトの名無しさん (ワッチョイ 177f-PS54)
2020/09/22(火) 12:48:41.23ID:fNKq19I/0974デフォルトの名無しさん (ワッチョイ bfe9-Cup9)
2020/09/22(火) 13:01:07.61ID:GaogVwml0 >>970
副作用 (プログラム)
https://ja.wikipedia.org/wiki/%E5%89%AF%E4%BD%9C%E7%94%A8_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0)
> プログラミングにおける副作用(ふくさよう)とは、ある機能がコンピュータの(論理的な)状態を変化させ、それ以降で得られる結果に影響を与えることをいう。
C言語における定義はこんな感じ。
http://kikakurui.com/x3/X3010-2003-01.html#13
> ボラタイルオブジェクトへのアクセス,オブジェクトの変更,ファイルの変更,又はこれらのいずれか
> の操作を行う関数の呼出しは,すべて副作用(side effect)と呼び(11),実行環境の状態に変化を生じる。
副作用 (プログラム)
https://ja.wikipedia.org/wiki/%E5%89%AF%E4%BD%9C%E7%94%A8_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0)
> プログラミングにおける副作用(ふくさよう)とは、ある機能がコンピュータの(論理的な)状態を変化させ、それ以降で得られる結果に影響を与えることをいう。
C言語における定義はこんな感じ。
http://kikakurui.com/x3/X3010-2003-01.html#13
> ボラタイルオブジェクトへのアクセス,オブジェクトの変更,ファイルの変更,又はこれらのいずれか
> の操作を行う関数の呼出しは,すべて副作用(side effect)と呼び(11),実行環境の状態に変化を生じる。
975967 (アウアウウー Sa5b-e7tI)
2020/09/22(火) 17:15:02.44ID:73EWHT9ca 回答ありがとうございました
組み込みの資料か何かでvolatileの副作用についての記述があり質問させていただきました
副作用の意味がいまいち分かってないみたいなので勉強します
組み込みの資料か何かでvolatileの副作用についての記述があり質問させていただきました
副作用の意味がいまいち分かってないみたいなので勉強します
976デフォルトの名無しさん (ワッチョイ d602-lsHo)
2020/09/26(土) 02:24:05.62ID:AJ59WF/j0 int main(double a, double b)
{
printf("main");
}
{
printf("main");
}
977デフォルトの名無しさん (アウアウエー Saaa-LUZf)
2020/09/26(土) 02:27:39.44ID:80lZAyo5a コンパイル通るのかな….
978デフォルトの名無しさん (ワッチョイ 6bb7-b+lb)
2020/09/26(土) 05:50:57.90ID:JvTrRG8q0 (void)と(int, char**)以外は処理系定義
コンパイラが対応していれば適格
対応していなければ未定義
コンパイラが対応していれば適格
対応していなければ未定義
979デフォルトの名無しさん (ブーイモ MM5b-ODSS)
2020/09/27(日) 13:50:39.37ID:LQE5yA3hM crtstartupのお仕事だからコンパイラほぼ関係ないな
大抵の実用リンカは差し替えできるでしょ
大抵の実用リンカは差し替えできるでしょ
980デフォルトの名無しさん (ワッチョイ f793-raSa)
2020/09/28(月) 07:00:27.18ID:BXhKM0Xn0 数値リテラル「0」の型は何ですか?
int* p = 0; // これはOK
int* p = (int)0; // 明示的にint型にしてから渡すと「int型はint*型に変換できません」とエラー。ということは、この 0 はint型以外?
int* p = (unsigned int)0; // これもエラーで無理。
printf("%zu", sizeof(0)); // 0の型のサイズを調べると4byteと表示される。
この数値リテラルの「0」の型は何ですか?
ちなみに、まだC言語環境を構築してないから、代わりVisualC++を使ってるけど、他の環境でも起きますか?
int* p = 0; // これはOK
int* p = (int)0; // 明示的にint型にしてから渡すと「int型はint*型に変換できません」とエラー。ということは、この 0 はint型以外?
int* p = (unsigned int)0; // これもエラーで無理。
printf("%zu", sizeof(0)); // 0の型のサイズを調べると4byteと表示される。
この数値リテラルの「0」の型は何ですか?
ちなみに、まだC言語環境を構築してないから、代わりVisualC++を使ってるけど、他の環境でも起きますか?
981デフォルトの名無しさん (ワッチョイ f793-raSa)
2020/09/28(月) 07:30:53.01ID:BXhKM0Xn0 さらに調べると・・・・
キャスト演算子で型を指定した0は、代入の際にint*型へ変換してくれない。
接尾語を付けて型を指定した0は、代入の際にint*型に変換してくれる。
int* p = (long int)0; // NG
int* p = 0L; // OK
int* p = (unsigned int)0; // NG
int* p = 0u; // OK
キャスト演算子で型を指定すると、代入の際の暗黙的な変換が禁止される仕様とかあるんですか?
キャスト演算子で型を指定した0は、代入の際にint*型へ変換してくれない。
接尾語を付けて型を指定した0は、代入の際にint*型に変換してくれる。
int* p = (long int)0; // NG
int* p = 0L; // OK
int* p = (unsigned int)0; // NG
int* p = 0u; // OK
キャスト演算子で型を指定すると、代入の際の暗黙的な変換が禁止される仕様とかあるんですか?
982デフォルトの名無しさん (ワッチョイ 6bb7-b+lb)
2020/09/28(月) 07:54:15.67ID:QxfbhGyV0 >>980
intだよ
D:\learn>gcc --version
gcc (Rev2, Built by MSYS2 project) 10.1.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
D:\learn>gcc 980.c
D:\learn>gcc 980.c -pedantic -Wall
980.c: In function 'main':
980.c:9:10: warning: unused variable 'p3' [-Wunused-variable]
9 | int* p3 = (unsigned int)0; //
| ^~
980.c:8:10: warning: unused variable 'p2' [-Wunused-variable]
8 | int* p2 = (int)0; // ntintnt*nt
| ^~
980.c:7:10: warning: unused variable 'p1' [-Wunused-variable]
7 | int* p1 = 0; // K
| ^~
-Wallにするとunusedって警告でるけど型の話じゃないね
intだよ
D:\learn>gcc --version
gcc (Rev2, Built by MSYS2 project) 10.1.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
D:\learn>gcc 980.c
D:\learn>gcc 980.c -pedantic -Wall
980.c: In function 'main':
980.c:9:10: warning: unused variable 'p3' [-Wunused-variable]
9 | int* p3 = (unsigned int)0; //
| ^~
980.c:8:10: warning: unused variable 'p2' [-Wunused-variable]
8 | int* p2 = (int)0; // ntintnt*nt
| ^~
980.c:7:10: warning: unused variable 'p1' [-Wunused-variable]
7 | int* p1 = 0; // K
| ^~
-Wallにするとunusedって警告でるけど型の話じゃないね
983デフォルトの名無しさん (ワッチョイ 6bb7-b+lb)
2020/09/28(月) 08:00:54.96ID:QxfbhGyV0 >>981
D:\learn>cl 980.c /W4
Microsoft(R) C/C++ Optimizing Compiler Version 19.27.29111 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
980.c
980.c(8): warning C4047: '初期化中': 間接参照のレベルが 'int *' と 'int' で異なっています。
980.c(9): warning C4189: 'p3': ローカル変数が初期化されましたが、参照されていません
980.c(7): warning C4189: 'p1': ローカル変数が初期化されましたが、参照されていません
980.c(8): warning C4189: 'p2': ローカル変数が初期化されましたが、参照されていません
Microsoft (R) Incremental Linker Version 14.27.29111.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:980.exe
980.obj
参照されていませんという警告は型の話ではないのでここではスルー
型についての警告が出ている8行目とやらはこれ
> int* p2 = (int)0; // 明示的にint型にしてから渡すと「int型はint*型に変換できません」とエラー。ということは、この 0 はint型以外?
隣の9行目は警告されていない(しかも/W4で)
> int* p3 = (unsigned int)0; // これもエラーで無理。
おそらくclが警告しているのはXXX*とXXXでポインタの間接段数を間違えたんだろうということ
これなら9行目はXXX*とYYYで間接段数の問題ではないので黙っているという説明がつく
D:\learn>cl 980.c /W4
Microsoft(R) C/C++ Optimizing Compiler Version 19.27.29111 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
980.c
980.c(8): warning C4047: '初期化中': 間接参照のレベルが 'int *' と 'int' で異なっています。
980.c(9): warning C4189: 'p3': ローカル変数が初期化されましたが、参照されていません
980.c(7): warning C4189: 'p1': ローカル変数が初期化されましたが、参照されていません
980.c(8): warning C4189: 'p2': ローカル変数が初期化されましたが、参照されていません
Microsoft (R) Incremental Linker Version 14.27.29111.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:980.exe
980.obj
参照されていませんという警告は型の話ではないのでここではスルー
型についての警告が出ている8行目とやらはこれ
> int* p2 = (int)0; // 明示的にint型にしてから渡すと「int型はint*型に変換できません」とエラー。ということは、この 0 はint型以外?
隣の9行目は警告されていない(しかも/W4で)
> int* p3 = (unsigned int)0; // これもエラーで無理。
おそらくclが警告しているのはXXX*とXXXでポインタの間接段数を間違えたんだろうということ
これなら9行目はXXX*とYYYで間接段数の問題ではないので黙っているという説明がつく
984デフォルトの名無しさん (ワッチョイ 6b05-b+lb)
2020/09/28(月) 08:46:00.83ID:E0ldxkXM0 0だけは特別にポインタにキャスト可能な仕様なんじゃよ
0がいい 0になろう
0がいい 0になろう
985デフォルトの名無しさん (ワッチョイ 1ee9-b+lb)
2020/09/28(月) 08:46:40.00ID:IwymMB/J0 >>980
0 の型は int だけど、空ポインタ定数 "null pointer constant" なので、すべてのポインタ型への暗黙変換が効く。
http://kikakurui.com/x3/X3010-2003-01.html#39
> 値0をもつ整数定数式又はその定数式を型void *にキャストした式を,空ポインタ定数(null pointer constant)と呼ぶ。
(int)0 になると空ポインタ定数ではなくなるので、ポインタに暗黙変換できなくなり、初期化・代入できなくなる。
0 の型は int だけど、空ポインタ定数 "null pointer constant" なので、すべてのポインタ型への暗黙変換が効く。
http://kikakurui.com/x3/X3010-2003-01.html#39
> 値0をもつ整数定数式又はその定数式を型void *にキャストした式を,空ポインタ定数(null pointer constant)と呼ぶ。
(int)0 になると空ポインタ定数ではなくなるので、ポインタに暗黙変換できなくなり、初期化・代入できなくなる。
986デフォルトの名無しさん (ワッチョイ 4b2c-ozis)
2020/09/28(月) 09:14:55.72ID:QIpyCS2B0 >>981
int* p = (long int)0; // NG
int* p = (unsigned int)0; // NG
long, unsigned は、int 型と、数値の範囲が異なる。
int 型しかキャストできないのでは?
int* p = (long int)0; // NG
int* p = (unsigned int)0; // NG
long, unsigned は、int 型と、数値の範囲が異なる。
int 型しかキャストできないのでは?
987986 (ワッチョイ 4b2c-ozis)
2020/09/28(月) 09:19:20.10ID:QIpyCS2B0 0 アドレスの特別ルールか
988デフォルトの名無しさん (ワッチョイ 6bb7-b+lb)
2020/09/28(月) 09:26:33.33ID:QxfbhGyV0 0も厳格にはマジックナンバーだが
現実のシステムで0番地なんか普通の変数に使えなくていいから
理に適ってる
現実のシステムで0番地なんか普通の変数に使えなくていいから
理に適ってる
989デフォルトの名無しさん (ワッチョイ 1ee9-b+lb)
2020/09/28(月) 09:47:47.09ID:IwymMB/J0 アドレスは関係ないよ。
http://www.kouno.jp/home/c_faq/c5.html#5
http://www.kouno.jp/home/c_faq/c5.html#5
990デフォルトの名無しさん (ワッチョイ f793-raSa)
2020/09/28(月) 10:10:46.96ID:BXhKM0Xn0 >>982
むつかしくてわからないのでひらがなでおねがいします
>>985
こんな感じで理解しておけばいいですか?
・整数定数式としての「0」とは、ソースコードに直接書かれた「0」で、評価されて返ってきた「(int)0 ⇒ 0」や「4 - 4 ⇒ 0」などの「0」は整数定数式とは言わない。
・同じ0でも、void*型の「0」や、整数定数式としての「0」だけを空ポインタ定数と呼び、空ポインタ定数は代入の際にポインタ型へ暗黙変換できる。
よって
int* p = (int)0; // 「(int)0」が評価されて返ってきた「0」は整数定数式ではないので空ポインタ定数ではない。だから暗黙変換できずに代入無理。
int* p = 4-4; // 同様に、評価されて返ってきた「0」は整数定数式ではないので空ポインタ定数ではない。だから暗黙変換できずに代入無理。
int* p = 0; // 定数式としての「0」だから代入OK
型と値が一緒の、同じint型の「0」であっても、定数式と返り値とでは、それぞれの持ってる機能が違うということですか?
むつかしくてわからないのでひらがなでおねがいします
>>985
こんな感じで理解しておけばいいですか?
・整数定数式としての「0」とは、ソースコードに直接書かれた「0」で、評価されて返ってきた「(int)0 ⇒ 0」や「4 - 4 ⇒ 0」などの「0」は整数定数式とは言わない。
・同じ0でも、void*型の「0」や、整数定数式としての「0」だけを空ポインタ定数と呼び、空ポインタ定数は代入の際にポインタ型へ暗黙変換できる。
よって
int* p = (int)0; // 「(int)0」が評価されて返ってきた「0」は整数定数式ではないので空ポインタ定数ではない。だから暗黙変換できずに代入無理。
int* p = 4-4; // 同様に、評価されて返ってきた「0」は整数定数式ではないので空ポインタ定数ではない。だから暗黙変換できずに代入無理。
int* p = 0; // 定数式としての「0」だから代入OK
型と値が一緒の、同じint型の「0」であっても、定数式と返り値とでは、それぞれの持ってる機能が違うということですか?
991デフォルトの名無しさん (ワッチョイ 6bb7-b+lb)
2020/09/28(月) 10:24:28.53ID:QxfbhGyV0 >>990
じーしーしーのばーじょんをかくにんしてから
おまえさんのこーどをくわせてみてるんだよ
せんげんだけしてつかってないへんすうがあるのをけいこくされているけど
それはおまえさんがきにしてるかたのもんだいじゃなさそうだねっていってるの
じーしーしーのばーじょんをかくにんしてから
おまえさんのこーどをくわせてみてるんだよ
せんげんだけしてつかってないへんすうがあるのをけいこくされているけど
それはおまえさんがきにしてるかたのもんだいじゃなさそうだねっていってるの
992デフォルトの名無しさん (ワッチョイ f793-raSa)
2020/09/28(月) 10:34:20.53ID:BXhKM0Xn0993デフォルトの名無しさん (エムゾネ FF32-0ian)
2020/09/28(月) 11:51:02.18ID:PXJ7xAyjF NULL == 0 // true
ちなみに0は
ちなみに0は
994デフォルトの名無しさん (エムゾネ FF32-0ian)
2020/09/28(月) 11:51:34.94ID:PXJ7xAyjF NULL == 0 // true
ちなみに0は8進数な
ちなみに0は8進数な
995デフォルトの名無しさん (ワントンキン MM42-S6Ic)
2020/09/28(月) 12:33:12.25ID:Iit1NWg4M NULL == 0 // true
ちなみに0は8進数なんてことなく10進数なんてことなく16進数なんてこともない
ちなみに0は8進数なんてことなく10進数なんてことなく16進数なんてこともない
996デフォルトの名無しさん (ワッチョイ 6bb7-b+lb)
2020/09/28(月) 13:16:35.37ID:QxfbhGyV0 いや8進数だよ
0xで始まったら16進数
0で始まったら8進数
こんな関数作って見たらわかるよ
syukudai("210") == 210
syukudai("110") == 110
syukudai("010") == 8
syukudai("0x10") == 16
0xで始まったら16進数
0で始まったら8進数
こんな関数作って見たらわかるよ
syukudai("210") == 210
syukudai("110") == 110
syukudai("010") == 8
syukudai("0x10") == 16
997デフォルトの名無しさん (ワッチョイ 92a5-6ZJT)
2020/09/28(月) 13:27:42.04ID:zovFJ8Ky0 次スレは
998デフォルトの名無しさん (ブーイモ MM0e-Nkam)
2020/09/28(月) 14:23:39.09ID:qeCUoC3kM みんなの心の中にいつまでもいるさ
999デフォルトの名無しさん (ワッチョイ 6b4e-gvfU)
2020/09/28(月) 14:46:36.10ID:MwxSOqxv0 質問いいですか?
1000デフォルトの名無しさん (ワントンキン MM42-S6Ic)
2020/09/28(月) 14:57:57.86ID:Iit1NWg4M10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 140日 15時間 37分 31秒
新しいスレッドを立ててください。
life time: 140日 15時間 37分 31秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 国民 居住目的でない住宅所有者に「空室税」課せる法案を提出 [少考さん★]
- 「働いて働いて」の流行語大賞に懸念 「言葉が独り歩き」 過労自殺遺族 [尺アジ★]
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化へ 過去10年間に使用のメールアドレスや電話番号等も★3 [Hitzeschleier★]
- 【画像】消えた美人女優 上原多香子さん(42)、沖縄で目撃される [牛丼★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は ★2 [蚤の市★]
- バイク事故で入院ゆたぼん、見舞金「1円」振り込みの名義に衝撃「悲しい人ですね」「こういう人がいるから…」 [muffin★]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★1
- 高市早苗、森元総理の愛人だった [347751896]
- 自分の年代のボーナスってどれくらいなのかが全然わからんから転職すべきかわからん
- おまえら年末ジャンボ宝くじ買った?
- 【声優】亡くなった人で好きだった声優👈誰を思いつく?? [519998392] [839143615]
- イタリア国内で7人の男がぺニスで数珠繋ぎになって逮捕 [347751896]
