!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言語なら俺に聞け 156
https://mevius.5ch.net/test/read.cgi/tech/1601271690/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
C言語なら俺に聞け 157
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん (ワッチョイ 0345-kMi9)
2021/06/28(月) 11:22:51.50ID:so+vl3vs0822デフォルトの名無しさん (ワッチョイ 13ad-BvZE)
2021/11/01(月) 03:55:44.21ID:6HuVbq6K0 饅頭怖い
823デフォルトの名無しさん (ワッチョイ 2bbd-ruXn)
2021/11/01(月) 11:25:10.37ID:/Zy4WfCe0 lu分解をc言語でやりたく、次のようなコード(1部分になります)を書いたのですが、y0の値が0.8になるはずなのに全く違うものとなってしまいます。原因が全くわからないのですが、どこを改良すればよいのでしょうか。
for(int n = 1; n <= M+1; n++){
t = n*dt;
for(int i = 0; i <= N; i++){
x[i] = 0.0;
}
/* Ax = uを解く */
/* Ly = u */
y[0] = u[0]/l[0][0];
for (int i = 1; i <= N; i++){
y[i] = (u[i] - l[1][i]*y[i-1])/l[0][i];
}
/* Ux = y */
x[N] = y[N];
for (int i = N-1; i >= 0; i--){
x[i] = y[i] - m[i]*y[i+1];
}
/* 更新 */
for(int i = 0; i <= N; i++){
u[i] = x[i];
}
}
for(int n = 1; n <= M+1; n++){
t = n*dt;
for(int i = 0; i <= N; i++){
x[i] = 0.0;
}
/* Ax = uを解く */
/* Ly = u */
y[0] = u[0]/l[0][0];
for (int i = 1; i <= N; i++){
y[i] = (u[i] - l[1][i]*y[i-1])/l[0][i];
}
/* Ux = y */
x[N] = y[N];
for (int i = N-1; i >= 0; i--){
x[i] = y[i] - m[i]*y[i+1];
}
/* 更新 */
for(int i = 0; i <= N; i++){
u[i] = x[i];
}
}
824デフォルトの名無しさん (エムゾネ FF33-48dE)
2021/11/01(月) 12:00:24.14ID:z/x9VzKbF int → double または float
825デフォルトの名無しさん (ワッチョイ 1369-flnY)
2021/11/01(月) 13:05:24.25ID:qmVDupeY0 x, y, l, m, u の宣言で添え字のとりえる範囲分はちゃんと確保してる?
(lu分解として正しいかどうかはおいといて)ループのコードから
x 0..N まで → 最低限 double x[N+1];
y 0..N まで → 最低限 double y[N+1];
u 0..N まで → 最低限 double m[N+1];
m 0..N-1 まで → 最低限 double m[N];
l [0][0]..[1][N] まで → 最低限 double l[2][N+1];
(lu分解として正しいかどうかはおいといて)ループのコードから
x 0..N まで → 最低限 double x[N+1];
y 0..N まで → 最低限 double y[N+1];
u 0..N まで → 最低限 double m[N+1];
m 0..N-1 まで → 最低限 double m[N];
l [0][0]..[1][N] まで → 最低限 double l[2][N+1];
826デフォルトの名無しさん (ワッチョイ 2bbd-ruXn)
2021/11/01(月) 15:07:15.16ID:/Zy4WfCe0 最初に宣言して確保してるので、大丈夫だと思うんですが、、
いちおうx,y,l,m,uをそれぞれ出力してみたのですが、yだけ間違えた値になってしまいます。
ループの順番とかがおかしいんですかね?
いちおうx,y,l,m,uをそれぞれ出力してみたのですが、yだけ間違えた値になってしまいます。
ループの順番とかがおかしいんですかね?
827デフォルトの名無しさん (ワッチョイ 13ad-BvZE)
2021/11/01(月) 19:03:15.19ID:6HuVbq6K0 全ての変数の宣言を書け
828デフォルトの名無しさん (ワッチョイ 1901-JVmF)
2021/11/01(月) 20:58:39.67ID:6+jC3RjR0 最小限再現できるコードを書いてもらわんと指摘することはできんねぇ
(そして最小限再現にシェイプアップする過程でやらかしを見つける)
(そして最小限再現にシェイプアップする過程でやらかしを見つける)
829デフォルトの名無しさん (ワッチョイ 6910-7alp)
2021/11/02(火) 07:44:51.26ID:I7k+rE/i0 >lu分解
java版?なら見つかった。
ttps://qiita.com/edo_m18/items/1d67532bed4a083cddb3
java版?なら見つかった。
ttps://qiita.com/edo_m18/items/1d67532bed4a083cddb3
830デフォルトの名無しさん (エムゾネ FF33-48dE)
2021/11/02(火) 10:38:39.23ID:px0qcy1yF831デフォルトの名無しさん (ワッチョイ 81b2-JVmF)
2021/11/03(水) 06:47:18.51ID:biZn6gZT0 小学生の頃から知ってたことばかりでウルトラつまんねえ番組だ
832デフォルトの名無しさん (ワッチョイ 515f-Ds5/)
2021/11/07(日) 10:08:30.22ID:gNBrcBZD0 サイコパスゲイ病人菊永裕太郎
833デフォルトの名無しさん (ワッチョイ f59b-bQ3l)
2021/11/08(月) 14:05:50.44ID:QzkUvy+x0834デフォルトの名無しさん (ワッチョイ a37d-IZSS)
2021/11/13(土) 19:10:26.04ID:EXpCOp4b0 int main() {
return 0;
}
いきなりこれの意味がわかりません。解説によるとゼロを返して正常終了する。
とかなんとかなんですが、どういう意味でしょうか。
オンライン上にゼロの意味の解説が見つかりません。
return 0;
}
いきなりこれの意味がわかりません。解説によるとゼロを返して正常終了する。
とかなんとかなんですが、どういう意味でしょうか。
オンライン上にゼロの意味の解説が見つかりません。
835デフォルトの名無しさん (ワッチョイ e336-wd7R)
2021/11/13(土) 19:43:45.28ID:Q3rklS0i0 大抵の解説では「OSに返す値」となってる。
プログラムが正常終了したら 0。
異常終了や目的の処理が出来なかったときには0以外を返すのが慣例。
Linuxならシェルで echo $?
Windowsならコマンドプロンプト/バッチファイルで echo %ERRORLEVEL%
で確認できる・・・らしい。
0以外を受け取ったからとOSが何か特別な処理をするわけではない。
プログラムが正常終了したら 0。
異常終了や目的の処理が出来なかったときには0以外を返すのが慣例。
Linuxならシェルで echo $?
Windowsならコマンドプロンプト/バッチファイルで echo %ERRORLEVEL%
で確認できる・・・らしい。
0以外を受け取ったからとOSが何か特別な処理をするわけではない。
836デフォルトの名無しさん (ワッチョイ a5da-WW/G)
2021/11/13(土) 19:53:04.62ID:NDPTYcvp0837デフォルトの名無しさん (ワッチョイ 2302-lRA9)
2021/11/13(土) 20:53:19.24ID:pG0a2gxf0 この段階では
0をかえす
そして
正常終了する
ぐらいの認識でいいんじゃないの?
別にどんな整数を返しても正常終了するわけだし
0をかえす
そして
正常終了する
ぐらいの認識でいいんじゃないの?
別にどんな整数を返しても正常終了するわけだし
838はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2b3e-wd7R)
2021/11/13(土) 20:56:10.46ID:FTD0k+Bx0 >>834-835
厳密にいえば、言語仕様上では
・ 0 又は EXIT_SUCCESS の場合は成功終了であることを処理系定義の方法で返す
・ EXIT_FAILURE の場合は失敗終了であることを処理系定義の方法で返す
・ それら意外の場合には返される状態は処理系定義とする
という規則になっている。
どのように解釈されるかは言語仕様の側でははっきりとは決めずにホスト環境 (普通は OS のこと) や処理系の都合次第なので、
言語よりは OS の資料にあたるほうがわかりやすいかもしれない。
言語仕様として確実に保証してるのは少なくとも成功したのか失敗したのかだけは返せる (受け取るかどうかは知らんけど) ってだけだね。
POSIX (Unix 系 OS) では exit status と呼んでるけど、
Windows では error level とか exit code と言ってる。
厳密にいえば、言語仕様上では
・ 0 又は EXIT_SUCCESS の場合は成功終了であることを処理系定義の方法で返す
・ EXIT_FAILURE の場合は失敗終了であることを処理系定義の方法で返す
・ それら意外の場合には返される状態は処理系定義とする
という規則になっている。
どのように解釈されるかは言語仕様の側でははっきりとは決めずにホスト環境 (普通は OS のこと) や処理系の都合次第なので、
言語よりは OS の資料にあたるほうがわかりやすいかもしれない。
言語仕様として確実に保証してるのは少なくとも成功したのか失敗したのかだけは返せる (受け取るかどうかは知らんけど) ってだけだね。
POSIX (Unix 系 OS) では exit status と呼んでるけど、
Windows では error level とか exit code と言ってる。
839デフォルトの名無しさん (JP 0Hab-x5sK)
2021/11/13(土) 22:33:17.66ID:uR+eQ86NH 単独で使う場合は関係ないけど
シェルとかバッチファイルから呼び出す場合にエラーや望まない結果だったら処理を中断とかしたい場合に
ちゃんと値を返しておくと便利になる
シェルとかバッチファイルから呼び出す場合にエラーや望まない結果だったら処理を中断とかしたい場合に
ちゃんと値を返しておくと便利になる
840デフォルトの名無しさん (ワッチョイ 2363-wd7R)
2021/11/13(土) 22:42:47.32ID:J/2HuwPl0 パイプ使うときはどう利用すればいい?
841デフォルトの名無しさん (ワッチョイ 1d0b-4vRU)
2021/11/13(土) 22:51:27.93ID:TY5ABTi00 棒を挟むんだよ
842ハノン ◆QZaw55cn4c (ワッチョイ 9be9-KVNp)
2021/11/13(土) 22:53:39.30ID:DyUYxUU00 >>839
呼び出したプログラムが返してくる値を使うプログラムとしては make がありますね…
呼び出したプログラムが返してくる値を使うプログラムとしては make がありますね…
843デフォルトの名無しさん (ワッチョイ 9521-EbYB)
2021/11/14(日) 09:01:01.66ID:TENET21t0 >>834
補足として、CのAPIにも失敗時に0を割り当てる場合と、成功時に0を割り当てる場合がある。
エラーの要因なんかを意識したい体系では後者も普通に使われるが、同じコード内で前者と
混在せざえるをえない事もある。マクロなんかを使った記述を意識しないとハマるぞw
補足として、CのAPIにも失敗時に0を割り当てる場合と、成功時に0を割り当てる場合がある。
エラーの要因なんかを意識したい体系では後者も普通に使われるが、同じコード内で前者と
混在せざえるをえない事もある。マクロなんかを使った記述を意識しないとハマるぞw
845デフォルトの名無しさん (ワッチョイ 1be7-4vRU)
2021/11/14(日) 13:25:42.20ID:EUNDgDvQ0846デフォルトの名無しさん (エムゾネ FF43-09aj)
2021/11/14(日) 13:59:30.15ID:E00roTgyF847ハノン ◆QZaw55cn4c (ワッチョイ 9be9-KVNp)
2021/11/14(日) 14:07:31.05ID:5CSGBVhH0 >>846
リンクされるスタートアップが返り値の存在を前提にしているというのに、main() ごときが返り値の有無を指定するなんて傲慢じゃないですかぁぁぁぁ!
リンクされるスタートアップが返り値の存在を前提にしているというのに、main() ごときが返り値の有無を指定するなんて傲慢じゃないですかぁぁぁぁ!
848はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a53e-wd7R)
2021/11/14(日) 15:32:15.51ID:A4GQ1/1N0 main の型を変則的にするくらいなら main をエントリーポイントにしない
(エントリーポイントの関数を別の名前にする) ほうが好ましいと個人的には思う。
言語仕様の外 (処理系定義) で定義された方法を使おうとしていることがわかりやすいので。
(エントリーポイントの関数を別の名前にする) ほうが好ましいと個人的には思う。
言語仕様の外 (処理系定義) で定義された方法を使おうとしていることがわかりやすいので。
849デフォルトの名無しさん (スップ Sd03-EoEW)
2021/11/15(月) 08:57:20.76ID:ELwWgVHxd >>846
俺もそう思う
俺もそう思う
850デフォルトの名無しさん (スップ Sd03-EoEW)
2021/11/15(月) 08:59:15.64ID:ELwWgVHxd 実行開始点は◯◯関数とドキュメントのどこに書こうか悩まずに済むならそうしたい
851834 (ワッチョイ a37d-Itmb)
2021/11/15(月) 18:18:16.98ID:oeHKaDHh0 ただの慣例なんですね、ご回答ありがとうございました。
852デフォルトの名無しさん (ワッチョイ 1554-WW/G)
2021/11/15(月) 19:21:59.60ID:BFf+frEV0 C言語初心者です。sleepを使って一文字ずつ
2秒ごとに表示したいのですが
Windowsの端末だとうまくいくのですが、
Ubuntuだと8秒後にまとめてHelloと一度に
表示されてしまいます。ubuntuでも
windowsのように一文字ずつ表示させたいのですが
できないのでしょうか?コンパイラはGCCです。
#include <stdio.h>
#include <unistd.h>
int main (){
printf("H");
sleep(2);
printf("e");
sleep(2);
printf("l");
sleep(2);
printf("l");
sleep(2);
printf("o\n");
return 0;
}
2秒ごとに表示したいのですが
Windowsの端末だとうまくいくのですが、
Ubuntuだと8秒後にまとめてHelloと一度に
表示されてしまいます。ubuntuでも
windowsのように一文字ずつ表示させたいのですが
できないのでしょうか?コンパイラはGCCです。
#include <stdio.h>
#include <unistd.h>
int main (){
printf("H");
sleep(2);
printf("e");
sleep(2);
printf("l");
sleep(2);
printf("l");
sleep(2);
printf("o\n");
return 0;
}
853ハノン ◆QZaw55cn4c (ワッチョイ 9be9-KVNp)
2021/11/15(月) 19:27:49.92ID:a976/UsH0 >>852
printf('A'); fflush(stdout); はいかが?
printf('A'); fflush(stdout); はいかが?
854デフォルトの名無しさん (ワッチョイ 1dbb-lRA9)
2021/11/15(月) 19:28:12.24ID:Xr7xQZWT0 printfとsleepの間に↓
fflush(stdout);
fflush(stdout);
855デフォルトの名無しさん (ワッチョイ 1554-WW/G)
2021/11/15(月) 19:45:10.08ID:BFf+frEV0856はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a53e-wd7R)
2021/11/15(月) 23:18:43.35ID:LEZCO+bp0 >>852
どちらの挙動も言語仕様的にはアリ。
ストリームが対話型装置を参照していると判定できて、かつその場合に限り完全バッファリングすることになっていて、
逆に言えば対話型装置 (この場合はコンソール) に繋がっているときはラインバッファリングかもしれないし、
バッファリング無しかもしれない。
フラッシュを明示的に指示するのでもよいが、 setvbuf 関数でバッファリングをしないように設定することもできる。
どちらの挙動も言語仕様的にはアリ。
ストリームが対話型装置を参照していると判定できて、かつその場合に限り完全バッファリングすることになっていて、
逆に言えば対話型装置 (この場合はコンソール) に繋がっているときはラインバッファリングかもしれないし、
バッファリング無しかもしれない。
フラッシュを明示的に指示するのでもよいが、 setvbuf 関数でバッファリングをしないように設定することもできる。
857はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a53e-wd7R)
2021/11/15(月) 23:20:10.09ID:LEZCO+bp0858デフォルトの名無しさん (ワッチョイ 2363-wd7R)
2021/11/15(月) 23:52:40.37ID:9q/xF8xE0 低レベルの出力関数使ってバッファリングを回避してみる、とか
859デフォルトの名無しさん (ワッチョイ 4b46-Itmb)
2021/11/16(火) 21:41:05.99ID:vUDwceGd0 lintの無い事い今更気付いたのだが、代替何?
860デフォルトの名無しさん (ワッチョイ 2301-riRZ)
2021/11/16(火) 23:22:15.69ID:hcv5mNbC0 >>859
clion
clion
861デフォルトの名無しさん (アウアウウー Saa9-09aj)
2021/11/17(水) 02:29:57.06ID:+JwFzM8Ra >>851
int main(){
int a=0;
return a;
}
と
void main(){
int a=0;
}
をそれぞれ asm 付きでコンパイルして比較してみ
判ったら次は a=0; を inline にしてみ
int main(){
int a=0;
return a;
}
と
void main(){
int a=0;
}
をそれぞれ asm 付きでコンパイルして比較してみ
判ったら次は a=0; を inline にしてみ
862デフォルトの名無しさん (ガラプー KKab-UqSN)
2021/11/17(水) 16:44:53.52ID:802yK0wSK >>859
splint
splint
863はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a53e-wd7R)
2021/11/17(水) 17:37:06.80ID:R6z6I7690 >>859
コンパイラが細かくチェックするようになったから lint の出番がなくなった。
gcc や clang なら -fsyntax-only オプションを付けると文法のチェックまでで段階を止める。
必要な警告オプションを付けた上でこれを使えば古い時代の lint より厳しいくらいだと思う。
(ちなみに -Wall や -Wextra を付けても全ての警告が有効になるわけではない。)
コンパイラが細かくチェックするようになったから lint の出番がなくなった。
gcc や clang なら -fsyntax-only オプションを付けると文法のチェックまでで段階を止める。
必要な警告オプションを付けた上でこれを使えば古い時代の lint より厳しいくらいだと思う。
(ちなみに -Wall や -Wextra を付けても全ての警告が有効になるわけではない。)
864ハノン ◆QZaw55cn4c (ワッチョイ 9be9-KVNp)
2021/11/17(水) 19:11:13.17ID:Kdlo9yNJ0865デフォルトの名無しさん (スップ Sd03-x5sK)
2021/11/17(水) 20:49:44.01ID:U3uLHNTwd 最近のコンパイラはミスタイプすると
「contが見つかりません、もしかしてcountのことですか?」みたいなことまで言ってくるもんなあ
グーグルかよ
「contが見つかりません、もしかしてcountのことですか?」みたいなことまで言ってくるもんなあ
グーグルかよ
867デフォルトの名無しさん (ワッチョイ dd10-+irO)
2021/11/18(木) 00:32:41.46ID:HOoxCKRv0 入門サイトで勉強しててこんな感じのコードがエラーになって
{
int a = 100;
printf("数値:%d アドレス:%x", a, &a);
}
gccのエラーをコピペで検索すると、&aはポインタだから、アドレス:%pだと回答がヒット。
コンパイラやバージョンによって挙動が違うのでしょうか?
{
int a = 100;
printf("数値:%d アドレス:%x", a, &a);
}
gccのエラーをコピペで検索すると、&aはポインタだから、アドレス:%pだと回答がヒット。
コンパイラやバージョンによって挙動が違うのでしょうか?
868はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a53e-wd7R)
2021/11/18(木) 00:55:33.69ID:ku1GvVZm0 >>867
言語仕様で未規定や処理系定義としている場合があって、
そういうのは処理系や実行環境の都合に合わせて決めていいことになってる。
そして「未定義」とされている場合は何が起こってもいいことになってるので、
暴走するかもしれないし、 OS が止めてくれるかもしれないし、しれっと意味不明の結果を出力するかもしれない。
たぶんそれは未定義に該当すると思う。
C の可変長引数は型チェックをゆるゆるにすることで実現されていて、
処理系の内実をわかってる人は言語仕様上の保証がない (けど実態としては問題がない) コードを書くのは普通にある。
パソコンで一般的に使われている呼び出し規約 (関数を呼出す機械語レベルの挙動の規則) だと
ポインタと (レジスタの幅以下の大きさの) 整数は同じ方法で渡すので問題にならないんだけど、
言語仕様では保証がない。
可変長引数の型チェックはゆるゆるなんだけど printf は頻出するからコンパイラが特別扱いで
少しチェックを厳しくしているのでエラーになることもあったりする。
まあ基本的には保証されてないのでやらないほうがいいよ。
言語仕様で未規定や処理系定義としている場合があって、
そういうのは処理系や実行環境の都合に合わせて決めていいことになってる。
そして「未定義」とされている場合は何が起こってもいいことになってるので、
暴走するかもしれないし、 OS が止めてくれるかもしれないし、しれっと意味不明の結果を出力するかもしれない。
たぶんそれは未定義に該当すると思う。
C の可変長引数は型チェックをゆるゆるにすることで実現されていて、
処理系の内実をわかってる人は言語仕様上の保証がない (けど実態としては問題がない) コードを書くのは普通にある。
パソコンで一般的に使われている呼び出し規約 (関数を呼出す機械語レベルの挙動の規則) だと
ポインタと (レジスタの幅以下の大きさの) 整数は同じ方法で渡すので問題にならないんだけど、
言語仕様では保証がない。
可変長引数の型チェックはゆるゆるなんだけど printf は頻出するからコンパイラが特別扱いで
少しチェックを厳しくしているのでエラーになることもあったりする。
まあ基本的には保証されてないのでやらないほうがいいよ。
869867 (ワッチョイ dd10-+irO)
2021/11/18(木) 01:52:34.49ID:HOoxCKRv0870はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a53e-wd7R)
2021/11/18(木) 02:23:30.05ID:ku1GvVZm0 逆に完全に言語仕様に沿っていても警告になる場合もあるし、
(基本的には警告が出ないようなコードのほうが綺麗ではあるが)
言語仕様的に OK なのか NG なのか、
とりあえず自分の実行環境で OK なのか NG なのかを正確に把握するのはかなり分かり難いと思う。
(基本的には警告が出ないようなコードのほうが綺麗ではあるが)
言語仕様的に OK なのか NG なのか、
とりあえず自分の実行環境で OK なのか NG なのかを正確に把握するのはかなり分かり難いと思う。
871デフォルトの名無しさん (ワッチョイ cb0e-4vRU)
2021/11/18(木) 02:53:45.75ID:SHW/gJRC0872デフォルトの名無しさん (スプッッ Sd93-HWhl)
2021/11/18(木) 10:38:56.92ID:7kNuqccRd 0から100までの整数のうち、17の倍数となる数の合計を求め、かつ途中の加算処理を出力するプログラムをつくったのですが、うまくいきません。
873デフォルトの名無しさん (スプッッ Sd93-HWhl)
2021/11/18(木) 10:39:42.31ID:7kNuqccRd うまくいかないのは過程を出力する処理の過程なのですが、どうしたらよいですか。
コードは以下です。
#include <stdio.h>
int main()
{
int i,sum=0;
for(i=17; i<=100; i=i+17) {
sum=sum+i;
printf("途中計算→%d\n", sum);
}
printf("合計=%d\n",sum);
return 0;
}
コードは以下です。
#include <stdio.h>
int main()
{
int i,sum=0;
for(i=17; i<=100; i=i+17) {
sum=sum+i;
printf("途中計算→%d\n", sum);
}
printf("合計=%d\n",sum);
return 0;
}
874デフォルトの名無しさん (ワッチョイ cb0e-4vRU)
2021/11/18(木) 10:49:25.32ID:SHW/gJRC0 ダッサいループ書いてないで公式立てたら?
875デフォルトの名無しさん (ワッチョイ e369-lRA9)
2021/11/18(木) 11:10:34.71ID:R1PabgqQ0876デフォルトの名無しさん (ワッチョイ cb0e-4vRU)
2021/11/18(木) 11:14:20.02ID:SHW/gJRC0 17から開始で17ずつ増やしてるだろ
0は17の倍数じゃないそうだが
0は17の倍数じゃないそうだが
877デフォルトの名無しさん (ワッチョイ 4bbb-fsgr)
2021/11/18(木) 11:32:07.83ID:RYwZiL190 >>873
何がどううまく行かないの?あってそうに見えるけど
何がどううまく行かないの?あってそうに見えるけど
878デフォルトの名無しさん (エムゾネ FF43-09aj)
2021/11/18(木) 14:40:44.78ID:/He/baLSF879デフォルトの名無しさん (エムゾネ FF43-09aj)
2021/11/18(木) 14:45:21.17ID:/He/baLSF >>873
printf("途中計算→%d, %d, %d\n", i / 17, i, sum);
printf("途中計算→%d, %d, %d\n", i / 17, i, sum);
880デフォルトの名無しさん (エムゾネ FF43-09aj)
2021/11/18(木) 14:45:34.58ID:/He/baLSF881デフォルトの名無しさん (スッップ Sd43-x5sK)
2021/11/18(木) 18:35:31.06ID:CfNf7HSld >>867
伝統的にポインタはintと同じメモリサイズなので昔はそう書いてた
そうなんだよな最近のコンパイラはprintfのフォーマットと引数をチェックしてるんだよな
もう慣れたが最初不思議な気がした
組み込みだと自分でprintf関数作ったり(標準だと使わない機能が多くて重すぎるから)するけどそんな時はどうなるのだろうとか
伝統的にポインタはintと同じメモリサイズなので昔はそう書いてた
そうなんだよな最近のコンパイラはprintfのフォーマットと引数をチェックしてるんだよな
もう慣れたが最初不思議な気がした
組み込みだと自分でprintf関数作ったり(標準だと使わない機能が多くて重すぎるから)するけどそんな時はどうなるのだろうとか
882デフォルトの名無しさん (ワッチョイ e2ad-+VBe)
2021/11/19(金) 00:07:30.77ID:tkL53aTR0 >>872
( ´_ゝ`)フーン
( ´_ゝ`)フーン
883デフォルトの名無しさん (ワッチョイ e2ad-+VBe)
2021/11/19(金) 00:11:12.00ID:tkL53aTR0 >>873
それでいいのでは?
それでいいのでは?
884はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 573e-+VBe)
2021/11/19(金) 00:18:54.40ID:bln5kEpJ0 64 ビット環境では LP64 や LLP64 (int とポインタの大きさが違う) が標準的になってしまったから
古いコードをそのまま持ってきたら通らないってことは割とよくあるよね。
古いコードをそのまま持ってきたら通らないってことは割とよくあるよね。
885デフォルトの名無しさん (ワッチョイ e2ad-+VBe)
2021/11/19(金) 00:37:21.78ID:tkL53aTR0 long と int (及び char *)を全て32bitとして扱っていて、辛うじてコンパイルは通るが決してまともに動かない
プログラムがあったので、しょうがないから gcc の -m32 と32bit用ライブラリで何とかした。何せ量が膨大で、
人力で直してたら多分何人か死んでたと思う。
プログラムがあったので、しょうがないから gcc の -m32 と32bit用ライブラリで何とかした。何せ量が膨大で、
人力で直してたら多分何人か死んでたと思う。
886デフォルトの名無しさん (ワッチョイ c60e-acBJ)
2021/11/19(金) 05:44:49.46ID:6rl9yCzd0 俺が出向いた、とあるクライアントでは人海戦術してた
887デフォルトの名無しさん (エムゾネ FF02-iUmB)
2021/11/19(金) 10:15:17.36ID:eyeX0xyMF long が int に追い越されたのかと思った
888ハノン ◆QZaw55cn4c (ワッチョイ 4ee9-XdqU)
2021/11/20(土) 20:09:18.64ID:NniTuIFb0 >>884-886
far near 修飾があたりまえな世界から来た私にとっては、なんで今更なことしているの?と疑問におもっていました
far near 修飾があたりまえな世界から来た私にとっては、なんで今更なことしているの?と疑問におもっていました
889デフォルトの名無しさん (ワッチョイ ef63-YZaJ)
2021/11/20(土) 20:11:58.21ID:LAgO+4EW0 そういえばhageモデルなんてあったな
890ハノン ◆QZaw55cn4c (ワッチョイ 4ee9-XdqU)
2021/11/20(土) 21:32:53.52ID:NniTuIFb0 >>889
hage モデル、もとい huge モデルにはバグがある、とのもっぱらの噂でしたが実際どうだったんでしょうか…
hage モデル、もとい huge モデルにはバグがある、とのもっぱらの噂でしたが実際どうだったんでしょうか…
891デフォルトの名無しさん (ワッチョイ e2ad-+VBe)
2021/11/20(土) 22:42:01.83ID:PPXRLNML0 ていうか、8086のHugeみたいなものはバグ作り込んでしまいそうで怖いよな。ポインタ絡みで。
違う値が同じアドレスになる事あるし。
違う値が同じアドレスになる事あるし。
892デフォルトの名無しさん (ワッチョイ ef63-YZaJ)
2021/11/20(土) 22:45:40.83ID:LAgO+4EW0 当時300kを越える配列を処理したくて使いました
使うというか、複数のセグメントに分割して割り当て、
自前で配列インデックスを計算してアクセスしただけですが
使うというか、複数のセグメントに分割して割り当て、
自前で配列インデックスを計算してアクセスしただけですが
893はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 573e-+VBe)
2021/11/21(日) 00:46:36.95ID:mkw0m2hl0 違う場所が同じ値になるような場合があっても言語仕様が保証している範囲ではちゃんと仕様通りだったりするんだよな。
というより保証が可能な範囲をうまいこと言語仕様にまとめたって感じなんだと思う。
というより保証が可能な範囲をうまいこと言語仕様にまとめたって感じなんだと思う。
894デフォルトの名無しさん (ワッチョイ c60e-acBJ)
2021/11/21(日) 08:41:13.51ID:uokK0Aao0 >>888
Windowsが64bit主流になっていく頃にも一騒動あったよ
Windowsが64bit主流になっていく頃にも一騒動あったよ
895ハノン ◆QZaw55cn4c (ワッチョイ 4ee9-XdqU)
2021/11/21(日) 12:42:55.44ID:ODZrEgDk0 >>891
さらに年寄りの繰言を続けますが、
>違う値が同じアドレスになる事あるし。
というのは far ポインタでも同じです、far と hage じゃなかった huge の違いは、オフセットの繰り上がりがセグメントに反映されるかされないか
私は余計なことはしてほしくないので、繰り上がりがない far を愛用していました、huge はいまいち信用できませんでした
さらに年寄りの繰言を続けますが、
>違う値が同じアドレスになる事あるし。
というのは far ポインタでも同じです、far と hage じゃなかった huge の違いは、オフセットの繰り上がりがセグメントに反映されるかされないか
私は余計なことはしてほしくないので、繰り上がりがない far を愛用していました、huge はいまいち信用できませんでした
896ハノン ◆QZaw55cn4c (ワッチョイ 4ee9-XdqU)
2021/11/21(日) 12:44:00.07ID:ODZrEgDk0897デフォルトの名無しさん (ワッチョイ b7bb-D8AZ)
2021/12/01(水) 02:11:41.33ID:AqcF5lvQ0 構造体のパディングの値って未規定ですか?
898ハノン ◆QZaw55cn4c (ワッチョイ bfe9-Dsww)
2021/12/01(水) 02:24:50.55ID:VU8XmWVx0 >>897
パディングの状況に依存するコードを書くのはよろしくない、というのが一般論だったかと
ファイル入出力で問題になりますが、私はもう、ちまちま fwrite() fread() で「1 byte ずつ」やるしかない、とまで諦めています
環境がバッファリングしてくれますし
パディングの状況に依存するコードを書くのはよろしくない、というのが一般論だったかと
ファイル入出力で問題になりますが、私はもう、ちまちま fwrite() fread() で「1 byte ずつ」やるしかない、とまで諦めています
環境がバッファリングしてくれますし
899はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-D8AZ)
2021/12/01(水) 02:53:05.18ID:Y6HO3vrm0 未規定であるしパディングの大きさに依存するようなコードは避けるのが行儀のよいコードであるのは間違いないけど、
対象にしている処理系での挙動がはっきりしていて移植の可能性もない (または移植のコストをかける覚悟がある)
のなら依存するコードを書くことはそれなりにあると思う。
マクロで切り分けて configure (とか cmake とかのメタビルドツール) で各アーキテクチャの都合に対処することは可能だし。
良くはない。 良くはないがそういう良くないことも出来るのが C ってもんなわけで。
対象にしている処理系での挙動がはっきりしていて移植の可能性もない (または移植のコストをかける覚悟がある)
のなら依存するコードを書くことはそれなりにあると思う。
マクロで切り分けて configure (とか cmake とかのメタビルドツール) で各アーキテクチャの都合に対処することは可能だし。
良くはない。 良くはないがそういう良くないことも出来るのが C ってもんなわけで。
900デフォルトの名無しさん (ワッチョイ d763-HfRa)
2021/12/01(水) 11:58:37.67ID:Jc7L6V7f0 昔、構造体の扱いで失敗した事がある
あるサイトで構造体を引数にして削除処理を行う関数を提供されたが、
実際に使おうとすると引数エラーを返されてしまい途方に暮れた
構造体メンバーには仕様書通りに必要な値をセットしている
しばらくして原因が分かった
関数側は引数が正しくセットされているかを、
処理対象の領域に格納されている同一の構造体と比較しチェックしていた
その比較に memcmp を使っていた
呼び出すこちら側は、構造体を自動変数として領域確保していた
あるサイトで構造体を引数にして削除処理を行う関数を提供されたが、
実際に使おうとすると引数エラーを返されてしまい途方に暮れた
構造体メンバーには仕様書通りに必要な値をセットしている
しばらくして原因が分かった
関数側は引数が正しくセットされているかを、
処理対象の領域に格納されている同一の構造体と比較しチェックしていた
その比較に memcmp を使っていた
呼び出すこちら側は、構造体を自動変数として領域確保していた
901デフォルトの名無しさん (ワッチョイ 97da-GC8a)
2021/12/01(水) 19:41:43.68ID:Dt37aX+70 構造体の比較をmemcmpでやるの本当にバッドプラクティスだと思うわ
横着せずに比較関数作れと
横着せずに比較関数作れと
902デフォルトの名無しさん (ブーイモ MMdb-sYxR)
2021/12/01(水) 20:37:38.80ID:sYF3bwwtM 横着したくなるというか識別子増やすの躊躇させる言語仕様が招く面倒ね
メンバメソッド系はオブ臭く棲み分けに反し今更入れる必要ないと思うけど
一層にぶち撒かず妥当なルールでツール類で拾いやすいサポートネームスペース括りみたいなのがあれば
void bossy(struct *a);
bool bossy.supporter(struct const*a);
メンバメソッド系はオブ臭く棲み分けに反し今更入れる必要ないと思うけど
一層にぶち撒かず妥当なルールでツール類で拾いやすいサポートネームスペース括りみたいなのがあれば
void bossy(struct *a);
bool bossy.supporter(struct const*a);
903デフォルトの名無しさん (ワッチョイ ff0e-eHdc)
2021/12/02(木) 03:58:26.91ID:boATToTk0 素直にC++使っとけ
904デフォルトの名無しさん (ワッチョイ 9710-CJRK)
2021/12/02(木) 15:46:31.22ID:nsbZ2n490 若者のc言語離れ
905デフォルトの名無しさん (スップ Sd3f-hol4)
2021/12/02(木) 15:56:03.63ID:NxRkNBX1d バブルの頃に努力?修練?ぎやはははだっせー
と言ってたのが結局、日本の致命傷になっちまったな
それを今まだ言ってる堀江みたいなぶっ飛んだキチガイもいるし
どーすんだこれ
と言ってたのが結局、日本の致命傷になっちまったな
それを今まだ言ってる堀江みたいなぶっ飛んだキチガイもいるし
どーすんだこれ
906デフォルトの名無しさん (ワッチョイ bfe9-Dsww)
2021/12/02(木) 16:51:51.31ID:BMPRSKoA0907デフォルトの名無しさん (ワッチョイ ff0e-eHdc)
2021/12/02(木) 18:59:50.96ID:boATToTk0 植民地支配がどんなに恐ろしいことか知らないようだな
朝鮮半島に先進国並みのインフラを作ったり
狭い島国に世界最大のメガロポリスができるのと
フィリピンのバナナ農家が受けている仕打ちの違いわかる?
朝鮮半島に先進国並みのインフラを作ったり
狭い島国に世界最大のメガロポリスができるのと
フィリピンのバナナ農家が受けている仕打ちの違いわかる?
908デフォルトの名無しさん (ワッチョイ d763-HfRa)
2021/12/02(木) 19:37:18.40ID:+Bf3UEhm0 君はここに来なくて良いから、その代わりに
半島に行って自慢して感謝されてこいよ
半島に行って自慢して感謝されてこいよ
909デフォルトの名無しさん (ワッチョイ ff0e-eHdc)
2021/12/02(木) 19:51:25.65ID:boATToTk0 わかるかなぁ、わかんねぇだろうなぁ
910デフォルトの名無しさん (ブーイモ MMfb-sYxR)
2021/12/02(木) 21:23:20.96ID:bRKtguKwM c++のネームスペースさんはadl とかテンプレート混じりでsfiane とか
使うつもりがなくても簡単に誤爆する罠のせいで妥当な実装ではないね
使うつもりがなくても簡単に誤爆する罠のせいで妥当な実装ではないね
911デフォルトの名無しさん (ワッチョイ bfe9-Dsww)
2021/12/02(木) 21:28:04.80ID:BMPRSKoA0912デフォルトの名無しさん (ワッチョイ ff0e-eHdc)
2021/12/02(木) 21:44:47.29ID:boATToTk0 >>910
うわー 整然と整列された弾薬を蹴飛ばして地雷原と言っちゃう手合いか
うわー 整然と整列された弾薬を蹴飛ばして地雷原と言っちゃう手合いか
914デフォルトの名無しさん (ワッチョイ 6e69-wVd4)
2021/12/03(金) 21:09:10.77ID:qejwogbL0915デフォルトの名無しさん (ワッチョイ d9b3-lq0O)
2021/12/03(金) 22:17:35.13ID:4DnkKvZO0 >>914
WIndowsAPIはC言語で使うのが正解でC++では使わないっというのを別スレで見たんですが、そうなの?
WIndowsAPIはC言語で使うのが正解でC++では使わないっというのを別スレで見たんですが、そうなの?
916デフォルトの名無しさん (ワッチョイ c063-cP/Y)
2021/12/03(金) 22:43:36.48ID:qIm8KpH10917デフォルトの名無しさん (ワッチョイ d9b3-lq0O)
2021/12/03(金) 23:01:33.51ID:4DnkKvZO0 サンクス
918デフォルトの名無しさん (ワッチョイ aee9-BBtJ)
2021/12/04(土) 00:32:09.23ID:d5QmhWSv0 >>915
補足すると自前でC++を使ってやる方法も win16 初期には見られたが、
https://www.aa;mazon.co.jp/dp/4774100544/
結局みんな MFC ばかり使うようになりました、もうひとつのメーカー製の OWL ですら滅びたようです
MFC の使い方の本は私は持っていない…
補足すると自前でC++を使ってやる方法も win16 初期には見られたが、
https://www.aa;mazon.co.jp/dp/4774100544/
結局みんな MFC ばかり使うようになりました、もうひとつのメーカー製の OWL ですら滅びたようです
MFC の使い方の本は私は持っていない…
919デフォルトの名無しさん (ワッチョイ aee9-BBtJ)
2021/12/04(土) 00:34:51.25ID:d5QmhWSv0920デフォルトの名無しさん (ワッチョイ c063-cP/Y)
2021/12/04(土) 00:37:46.81ID:eEY2XAtO0 使い方って言うほどの高度の内容ではないかも
ドキュメント的にはMSのサイトが本家だし詳しいかも
確かサンプルも載せてたはず
https://docs.microsoft.com/ja-jp/cpp/mfc/documents-views-and-the-framework?view=msvc-170
この辺から入っていくのかな?無事生還を祈る
ドキュメント的にはMSのサイトが本家だし詳しいかも
確かサンプルも載せてたはず
https://docs.microsoft.com/ja-jp/cpp/mfc/documents-views-and-the-framework?view=msvc-170
この辺から入っていくのかな?無事生還を祈る
921デフォルトの名無しさん (ワッチョイ c063-cP/Y)
2021/12/04(土) 00:39:25.21ID:eEY2XAtO0レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- ヨッシー、ヘイホー、テレサ ←こいつらwwwwwwwww
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- さかまた「過呼吸になった」かなた「耳聞こえない」ござる「声出ない」まつり「ご飯食べれない」
- くそしてかがやけ
- 一人暮らしだからケツ出してみてるけど
