C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
前
C言語なら俺に聞け 144
https://mevius.5ch.net/test/read.cgi/tech/1514025223/
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
C言語なら俺に聞け 145
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9381-qput)
2018/02/19(月) 22:13:58.98ID:9/te2eSJ0240デフォルトの名無しさん (ワッチョイ e79f-m1UI)
2018/03/03(土) 20:54:25.83ID:usZqppoC0 >>236
削除依頼出して誘導の書き込みしておいた。
削除依頼出して誘導の書き込みしておいた。
241デフォルトの名無しさん (アウアウウー Sa2b-OZjy)
2018/03/04(日) 09:51:40.56ID:/AI+3Uf1a おまいらってすごいね
C検定の1級とか余裕なんだろね
C検定の1級とか余裕なんだろね
242デフォルトの名無しさん (ワッチョイ 7f5f-m1UI)
2018/03/04(日) 17:53:13.34ID:9DD6RFWE0 いやいや、これでもISO/IEC 9899:2011のつまみ食いをしてるだけですよ
昔のCと違い、今のCは付き合ってらんないところが結構あるんで
昔のCと違い、今のCは付き合ってらんないところが結構あるんで
243デフォルトの名無しさん (アークセー Sxdb-TGtH)
2018/03/04(日) 23:51:40.13ID:8NE8Y0sUx 10,000行程度のプログラムで何ができるのか想像が出来ん。
244デフォルトの名無しさん
2018/03/05(月) 00:51:13.54 10000行程度を書いた経験だろ
全体だと30万行とかだろ
全体だと30万行とかだろ
245デフォルトの名無しさん (ワッチョイ 6704-PLqx)
2018/03/05(月) 01:04:58.69ID:FpxBMBRn0 一プロジェクトで1万行はないな。趣味だから。
トータルならそれ以上書いてるけど。
トータルならそれ以上書いてるけど。
246デフォルトの名無しさん (ワッチョイ e79f-m1UI)
2018/03/05(月) 01:26:13.77ID:LCMEVuoA0 >>241
それってここに書いてある一級?
https://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%83%BD%E5%8A%9B%E8%AA%8D%E5%AE%9A%E8%A9%A6%E9%A8%93
だったら特に検定受かってなくてもそういう人だらけじゃないかな。
それってここに書いてある一級?
https://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%83%BD%E5%8A%9B%E8%AA%8D%E5%AE%9A%E8%A9%A6%E9%A8%93
だったら特に検定受かってなくてもそういう人だらけじゃないかな。
247デフォルトの名無しさん (ワッチョイ e79f-m1UI)
2018/03/05(月) 01:35:06.01ID:LCMEVuoA0 一万行ねえ。しかしあまりに行数が多くなるとするとC言語を使うこと自体が適切ではなかった可能性も出てくるよな。
あるいは何か設計がまずいか、書き方がまずいか。
何れにしてもプログラムが多くなればなるほど人間がバグを作り込んでしまう率が高くなり更に全体の把握が困難になってくる。
あるいは何か設計がまずいか、書き方がまずいか。
何れにしてもプログラムが多くなればなるほど人間がバグを作り込んでしまう率が高くなり更に全体の把握が困難になってくる。
248デフォルトの名無しさん (ワッチョイ 6704-PLqx)
2018/03/05(月) 02:35:53.76ID:FpxBMBRn0 最高効率で1万行ってやりたくないなぁ。
ぜったゲシュタルト崩壊起こす。
ぜったゲシュタルト崩壊起こす。
249デフォルトの名無しさん (ワッチョイ 4781-atej)
2018/03/05(月) 02:49:21.31ID:udBqLrh50 普段から1万行程度書いてる上級プログラマが
今から模範演技を見せてくれそうな予感
今から模範演技を見せてくれそうな予感
250デフォルトの名無しさん (ワッチョイ 7f9f-Xchi)
2018/03/05(月) 06:35:47.20ID:wW3xLIx70 int
MyFunc
(
int param
)
{
return param * param;
}
MyFunc
(
int param
)
{
return param * param;
}
251デフォルトの名無しさん (ワッチョイ bfe7-PLqx)
2018/03/05(月) 07:59:23.92ID:DUciPmz40 一万行パクった事がある。
252デフォルトの名無しさん (ワッチョイ 0723-wl/W)
2018/03/05(月) 09:53:37.62ID:9If1UATd0 行数で評価とかいまだにあるのかcobolの習慣持ち込むな
253デフォルトの名無しさん (ワッチョイ ff23-m1UI)
2018/03/05(月) 10:35:59.73ID:6dt0Sqct0 生涯ではたぶん 書いた行数より消した行数の方が多い
254デフォルトの名無しさん (アウアウカー Sabb-pjv1)
2018/03/05(月) 10:56:09.00ID:vC0ni0wma >>249
一万行の上級者様は上級者様専用スレに行ったみたいだから、実演はしてくれないだろう
一万行の上級者様は上級者様専用スレに行ったみたいだから、実演はしてくれないだろう
255デフォルトの名無しさん (ワッチョイ 2761-wl/W)
2018/03/05(月) 16:04:50.85ID:/FWFrph00 voidポインターの足し算は未定義なんだってね。
charのポインターみたいに1バイトずつ増えるからつかえると思ってた。
charのポインターみたいに1バイトずつ増えるからつかえると思ってた。
256デフォルトの名無しさん (アウウィフ FF2b-wl/W)
2018/03/05(月) 16:10:41.91ID:QTTd7ohZF どうせキャストして使うんだし
257デフォルトの名無しさん (ワッチョイ a7b3-5Piu)
2018/03/05(月) 17:54:44.07ID:V+sS+FxI0 C言語初心者向けのスレって結局ここでいいんだろうか?
258デフォルトの名無しさん (ワッチョイ 4781-atej)
2018/03/05(月) 17:59:13.03ID:udBqLrh50 いいとも
259デフォルトの名無しさん (スップ Sd7f-C52f)
2018/03/05(月) 18:07:26.38ID:VG/uZnqZd フォルダ内の複数のエクセルシートの決まったシートをtext形式1つにまとめるのって出来ます?
260デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/05(月) 18:10:45.91ID:qBuz+lExa261デフォルトの名無しさん (スププ Sdff-mvGf)
2018/03/05(月) 19:32:31.91ID:cQ8T6f3ad プリプロセッサで
#define foo(n) foo_##__typeof__(n)(n)
double a;
foo(a);
って展開したら
foo_double(a)
になって欲しかったのに
foo___typeof__(n)(n)
になりました
良い方法はないでしょうか?
#define foo(n) foo_##__typeof__(n)(n)
double a;
foo(a);
って展開したら
foo_double(a)
になって欲しかったのに
foo___typeof__(n)(n)
になりました
良い方法はないでしょうか?
262片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-dixK)
2018/03/05(月) 20:05:03.11ID:N7KbDTrZd >>261
型名の解釈は、プリプロセッサのレイヤーでは無理です。
型名の解釈は、プリプロセッサのレイヤーでは無理です。
263デフォルトの名無しさん (ワッチョイ 67b3-poP5)
2018/03/05(月) 20:09:24.78ID:SJt3Y40r0 __typeof__ って 演算子っぽいけど
(プリプロセッサ処理の段階では解釈されない:sizeof と同じで
リテラルの整数に展開されているわけではない)
(プリプロセッサ処理の段階では解釈されない:sizeof と同じで
リテラルの整数に展開されているわけではない)
264デフォルトの名無しさん (スププ Sdff-mvGf)
2018/03/05(月) 20:10:41.84ID:cQ8T6f3ad がーん
_Genericも二箇所に分けて書こうとするとredefineって言われて先に定義したほうが消えるし、ジェネリックは結構厳しいんですね……
ありがとうございます
_Genericも二箇所に分けて書こうとするとredefineって言われて先に定義したほうが消えるし、ジェネリックは結構厳しいんですね……
ありがとうございます
265デフォルトの名無しさん (ササクッテロレ Spdb-ON3X)
2018/03/05(月) 22:18:31.83ID:gAM47Ihup 1万行なんて、きちんと設計してないんじゃね?
266デフォルトの名無しさん (ワッチョイ 6704-PLqx)
2018/03/05(月) 22:28:13.08ID:FpxBMBRn0 sizeof(void)って未定義?
未定義ならそのポインタの加算幅も未定義だな。
void* p = (((void*)(&i))++);
未定義ならそのポインタの加算幅も未定義だな。
void* p = (((void*)(&i))++);
267デフォルトの名無しさん (ワッチョイ 47dc-m1UI)
2018/03/05(月) 23:16:20.23ID:THwFwnSk0 キミは正しい
268デフォルトの名無しさん (ワッチョイ e79f-8pbW)
2018/03/06(火) 03:28:05.03ID:ln7SJGum0 本当は void * に対しては足すことも引くこともできない。
269デフォルトの名無しさん (ワッチョイ 6793-fJrP)
2018/03/06(火) 06:45:37.01ID:r6wtBatS0 今ならuintptr_tにキャストして足し算引き算した後でvoid*に戻すのかな。
uintptr_t以前はchar*へのキャストだったかも知れんけど。
しかし実際のところvoid*に対してポインタを進めたり戻したりしたいって、
どういう場面で必要になるんじゃろうか?
uintptr_t以前はchar*へのキャストだったかも知れんけど。
しかし実際のところvoid*に対してポインタを進めたり戻したりしたいって、
どういう場面で必要になるんじゃろうか?
270デフォルトの名無しさん (ワッチョイ dfe3-k3ZN)
2018/03/06(火) 09:29:43.76ID:vOSWGXrq0 char *でいいじゃん
構造がわからないものはバイト列って認識でしょ?
構造がわからないものはバイト列って認識でしょ?
271デフォルトの名無しさん (ワッチョイ 4781-atej)
2018/03/06(火) 10:18:02.26ID:5/zKekdl0 分からない物を適当に扱うって、すごいな
272デフォルトの名無しさん (アウアウカー Sabb-JHL/)
2018/03/06(火) 12:31:29.65ID:aP2GFEvqa しかも符号まであると決めつけてるな
273デフォルトの名無しさん (ガックシ 068f-mvGf)
2018/03/06(火) 12:40:00.86ID:KV/wZ8PJ6 GCCとかchar*と同じ挙動じゃなかったっけ?
274デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/06(火) 12:50:23.18ID:Hdg+O/12a gccはね。
275デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/06(火) 12:54:06.75ID:Hdg+O/12a そういやポインタ演算と言うと8086用のCコンパイラはfarとか拡張キーワード作ったりして面倒だったな。TurboCだったか。
ああいうなんとも言えないCPUコンパイラだと特殊な決まりがあったりするから要注意だ。
まあ、二度とあんなの市場に出ないような気はするけどな。
ああいうなんとも言えないCPUコンパイラだと特殊な決まりがあったりするから要注意だ。
まあ、二度とあんなの市場に出ないような気はするけどな。
276デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/06(火) 12:54:48.33ID:Hdg+O/12a 用のが抜けた。CPU用の、な。
277デフォルトの名無しさん (ワッチョイ 078a-Jyeh)
2018/03/06(火) 12:56:39.10ID:3EYe6qQ70 ハーバードアーキテクチャだとdmとかpm修飾なんてのも
278デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/06(火) 13:31:13.79ID:PuW1uuBL0 farはTurbo Cに限ったことじゃない
8086用である限り必要になる
8086用である限り必要になる
279デフォルトの名無しさん (アウウィフ FF2b-wl/W)
2018/03/06(火) 14:52:33.73ID:03FKlPoEF tinyモデルでも使えるfar最強
>>279
でもコード64KBの制限はどうしようもない
でもコード64KBの制限はどうしようもない
281デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/06(火) 16:57:53.89ID:PuW1uuBL0 64KBしかいらないときに使うのがtiny
tiny使いながら64KBじゃきついとか発想が逆
だったら端っからlarge使えつーの
tiny使いながら64KBじゃきついとか発想が逆
だったら端っからlarge使えつーの
282デフォルトの名無しさん (アウウィフ FF2b-wl/W)
2018/03/06(火) 17:18:40.34ID:03FKlPoEF283デフォルトの名無しさん (ドコグロ MMff-qUXR)
2018/03/06(火) 21:11:42.80ID:0OC43do0M284デフォルトの名無しさん (ワッチョイ 67b3-poP5)
2018/03/06(火) 21:46:56.01ID:7Z5LV7MX0 整数の差分じゃなくてポインタの差分じゃろ?
285デフォルトの名無しさん (ワッチョイ df80-zeCZ)
2018/03/06(火) 21:52:27.71ID:GCrMS1Np0 char は、符号付き・符号なしの、どちらか分からないから使うな!
エラーに、-1 を使っていたら、0〜255 しか表現できない事もある
エラーに、-1 を使っていたら、0〜255 しか表現できない事もある
286デフォルトの名無しさん (ワッチョイ 078a-Jyeh)
2018/03/06(火) 21:58:50.50ID:3EYe6qQ70 >>285
9bitなの?(T_T)
9bitなの?(T_T)
287デフォルトの名無しさん (ササクッテロレ Spdb-ON3X)
2018/03/06(火) 22:17:46.38ID:3SdWrwMmp 例外を範囲外の値で判定する様なインターフェースが悪い。
はっきり戻り値は動作結果、値は出力用の引数に入れる。
みたいな設計にすべき。
ちな、C#みたいに戻り値を構造体にするって手もあるぞ。
はっきり戻り値は動作結果、値は出力用の引数に入れる。
みたいな設計にすべき。
ちな、C#みたいに戻り値を構造体にするって手もあるぞ。
288デフォルトの名無しさん (ワッチョイ df80-zeCZ)
2018/03/06(火) 23:01:01.51ID:GCrMS1Np0 素人が、char型の-1 を、エラー値に使っていると、
OS・コンパイラが変わって、その環境では、char型が0〜255 になってる
char型は、符号付き・符号なしの、どちらか分からない
OS・コンパイラが変わって、その環境では、char型が0〜255 になってる
char型は、符号付き・符号なしの、どちらか分からない
>>288
言語内の話と環境(シェルやOS)の話を混同してはならない
言語内の話と環境(シェルやOS)の話を混同してはならない
290デフォルトの名無しさん (ワッチョイ 4781-atej)
2018/03/06(火) 23:46:04.03ID:5/zKekdl0 signed char って書けば?
291デフォルトの名無しさん (ワッチョイ dff9-5eZn)
2018/03/07(水) 02:24:03.38ID:Tq6bvCAq0 >>288
charの使い方が間違っていることが問題なのであって、charを使うこと自体が悪いのではない。
charの使い方が間違っていることが問題なのであって、charを使うこと自体が悪いのではない。
292デフォルトの名無しさん (ワッチョイ 6704-jpR6)
2018/03/07(水) 02:45:29.86ID:kGjiUMXW0 はいー。
1バイト整数を使いたかったら、stdintを使いましょう。
int8_tは内部がcharかもしれないけど便宜上charではありません。
ハイ、復唱。int8_tはcharではありません。
ちなみにC++でバイト表現専用のstd::byteが入りました。すごく使いにくいけど。
1バイト整数を使いたかったら、stdintを使いましょう。
int8_tは内部がcharかもしれないけど便宜上charではありません。
ハイ、復唱。int8_tはcharではありません。
ちなみにC++でバイト表現専用のstd::byteが入りました。すごく使いにくいけど。
293デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 10:31:28.26ID:ylRgY7un0 >>282
どこか間違っているか?
どこか間違っているか?
294デフォルトの名無しさん (ワッチョイ 2761-wl/W)
2018/03/07(水) 12:28:33.48ID:maM/8pnG0 gets_sのsは何の略か教えてください。
295デフォルトの名無しさん (ワッチョイ 078a-Jyeh)
2018/03/07(水) 12:31:25.66ID:/Jrz1mw60 secure
296デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/07(水) 12:53:17.89ID:vftXHA5La297デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/07(水) 12:53:35.53ID:vftXHA5La >>295
あ、それか。
あ、それか。
298デフォルトの名無しさん (アウアウエー Sa9f-wl/W)
2018/03/07(水) 12:59:49.73ID:L+d1J7Rsa stopper
299デフォルトの名無しさん (ワッチョイ 0761-k3ZN)
2018/03/07(水) 13:42:40.79ID:r9zWShH00 昔はpc-98DOS用に作ったソフトがハード依存コードが無ければ
DOS/V機やTOWNSでも動くって聞いて驚いた。
DOS/V機やTOWNSでも動くって聞いて驚いた。
300デフォルトの名無しさん (スップ Sd7f-b+My)
2018/03/07(水) 13:49:17.29ID:9HCtzU4sd safe
301デフォルトの名無しさん (ワッチョイ df5d-W8CT)
2018/03/07(水) 16:58:54.65ID:+xlstTJJ0 N5200 で LSI C-86 試食版を使ってた……ような気がする。昔のことだから記憶が曖昧だ。
302デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 17:13:49.35ID:ylRgY7un0 vz?
303デフォルトの名無しさん (ワッチョイ 4781-atej)
2018/03/07(水) 17:14:24.12ID:GwlIl+h20 MS-DOSが動作していれば使えるはず
304デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 17:17:05.15ID:ylRgY7un0 dispelしなきゃ無理じゃね?w
305デフォルトの名無しさん (ササクッテロレ Spdb-ON3X)
2018/03/07(水) 17:21:00.28ID:XsGIcGwmp secureじゃねーだろ。
暗号化だってされてねーんだからw
safetyくらいな感じじゃね?
暗号化だってされてねーんだからw
safetyくらいな感じじゃね?
306デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
2018/03/07(水) 17:25:48.32ID:Rf3JBuAda DOSのシステムコール(なんて言うんだっけ?DOSコール?忘れた)だけを呼び出しているプログラムならハードウェアが違っても動く。
しかしMS-DOSはCUIしかサボートしてないのでグラフィックスは使えない。
当時のプログラムはみんな勝手にOS無視してグラフィックスのVRAMに直接アクセスして絵を出していた。
すると当然他の機種に持っていくと意図した通りに動かない。
しかしMS-DOSはCUIしかサボートしてないのでグラフィックスは使えない。
当時のプログラムはみんな勝手にOS無視してグラフィックスのVRAMに直接アクセスして絵を出していた。
すると当然他の機種に持っていくと意図した通りに動かない。
307デフォルトの名無しさん (アウアウエー Sa9f-wl/W)
2018/03/07(水) 17:26:24.22ID:L+d1J7Rsa int21
308デフォルトの名無しさん (ワッチョイ 7fea-poP5)
2018/03/07(水) 17:27:45.62ID:rG21M89G0 INT 21H なら ファンクションコールだったかの
309デフォルトの名無しさん (ワッチョイ 4781-atej)
2018/03/07(水) 17:28:50.29ID:GwlIl+h20 伝統のCALL 5
310デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 17:29:37.78ID:ylRgY7un0 DOSCALLS.DLLてのもあったなあw
311デフォルトの名無しさん (アウアウエー Sa9f-wl/W)
2018/03/07(水) 17:55:21.18ID:L+d1J7Rsa CP/M か
0066 とかもあったっけ
0066 とかもあったっけ
312デフォルトの名無しさん (ドコグロ MM6b-qUXR)
2018/03/07(水) 19:19:15.79ID:Zw7oeE4wM313デフォルトの名無しさん (アウアウウー Sa2b-m1UI)
2018/03/07(水) 21:48:34.17ID:mAtFjoDLa super man
314デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/08(木) 05:46:05.86ID:Eav/q7cG0 #define a(b) c##b##d
というマクロでcdを出力したいのですが
a()を呼び出すとエラーになります
解決策ありますでしょうか?
というマクロでcdを出力したいのですが
a()を呼び出すとエラーになります
解決策ありますでしょうか?
315デフォルトの名無しさん (ワッチョイ fb93-ao9L)
2018/03/08(木) 07:45:03.75ID:/HWAGXcB0 >>314 俺のところはエラー出ないみたい。環境によるのかな。
コンパイラのバージョンを示せば詳しい人が現れるかも。
コンパイラのバージョンを示せば詳しい人が現れるかも。
316デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/08(木) 07:52:57.57ID:Eav/q7cG0 ありがとうございます。
解決しました。
解決しました。
317デフォルトの名無しさん (ブーイモ MM8a-7yGo)
2018/03/08(木) 08:09:34.78ID:Ed7uI0ohM どう解決したか書くのが礼儀ってもんだ。
318デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/08(木) 08:29:41.94ID:Eav/q7cG0 コンパイラーのエラーが出ないという意見をきいて
試してみたら別のところ―がエラーになっていたということでした。
そして自分が悪質なコンパイラーに騙されていたことに気づきました。
試してみたら別のところ―がエラーになっていたということでした。
そして自分が悪質なコンパイラーに騙されていたことに気づきました。
319デフォルトの名無しさん (ササクッテロレ Sp33-Y2nf)
2018/03/08(木) 09:10:26.22ID:lHBKoGy1p エラーの文章くらい読めよ。
320デフォルトの名無しさん (アウウィフ FF1f-0aB1)
2018/03/08(木) 10:10:36.36ID:ue18PqKiF Cのエラーはエラーの発生個所を教えてくれるけど原因個所は教えてくれない
321デフォルトの名無しさん (ワッチョイ cb5b-uQtz)
2018/03/08(木) 10:25:51.65ID:0lNTHbnP0 おそらく警告とエラーを混同していると思われ
> warning C4003: マクロ 'a' に指定された実引数の数が少なすぎます。
> warning C4003: マクロ 'a' に指定された実引数の数が少なすぎます。
322デフォルトの名無しさん (ワッチョイ fb93-ao9L)
2018/03/08(木) 17:10:32.81ID:/HWAGXcB0 関数型マクロの使用時、カッコの内側が空の場合に、
「引数が指定されていない」と解釈して警告を出すか、
「1個の引数(内容はヌルストリング)が指定されている」と解釈するか、
そういう問題みたいね。
「引数が指定されていない」と解釈して警告を出すか、
「1個の引数(内容はヌルストリング)が指定されている」と解釈するか、
そういう問題みたいね。
323デフォルトの名無しさん (ワッチョイ bbf2-uQtz)
2018/03/08(木) 23:40:10.76ID:nwTnwFPU0324デフォルトの名無しさん (ワッチョイ 4a5d-uQtz)
2018/03/09(金) 00:58:31.73ID:U4YZHGfl0 そういう一般仕様から外れるコンパイラの使用を強制させられたことあるの?
325デフォルトの名無しさん (ワッチョイ cb5b-uQtz)
2018/03/09(金) 06:39:09.84ID:K2/JY7Cc0 cout << typeid(__int8).name(); //char
326デフォルトの名無しさん (ササクッテロレ Sp33-Y2nf)
2018/03/09(金) 10:59:36.49ID:rlkWp7/Ip 誰だよCの話題に別言語持ち出してんの。
327デフォルトの名無しさん (ワンミングク MMda-GEnZ)
2018/03/09(金) 12:10:45.59ID:WqdE+VIZM いやらCね
328デフォルトの名無しさん (アウアウカー Sa7b-vvOV)
2018/03/09(金) 12:13:57.64ID:LlK9d7kba 頭おかC
329デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/09(金) 16:36:39.04ID:AbBnYUJz0 符号なし64ビット整数を64ビット右シフトすると
0にならないでそのままの時や変な別の値になるときがあるんですけど
コンパイラーのバグですか?
0にならないでそのままの時や変な別の値になるときがあるんですけど
コンパイラーのバグですか?
330デフォルトの名無しさん (アウアウウー Sa1f-whik)
2018/03/09(金) 17:10:28.27ID:aCtfd81Na331デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/09(金) 17:10:41.68ID:AbBnYUJz0 http://fast-uploader.com/file/7076138459666/
2つのファイルが無いと再現できなかったのでソースファイルを
アップロードしました
コンパイルしてなぜ0にならないのか教えてください。
2つのファイルが無いと再現できなかったのでソースファイルを
アップロードしました
コンパイルしてなぜ0にならないのか教えてください。
332デフォルトの名無しさん (ワッチョイ fb93-ao9L)
2018/03/09(金) 17:11:34.80ID:er4JdT2d0333デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/09(金) 17:12:19.58ID:AbBnYUJz0 コンパイラーは
gcc version 7.3.0 (Rev1, Built by MSYS2 project)
で試しました。
悪質なコンパイラーに騙されているのかもしれませんね。
gcc version 7.3.0 (Rev1, Built by MSYS2 project)
で試しました。
悪質なコンパイラーに騙されているのかもしれませんね。
334デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/09(金) 17:25:01.13ID:AbBnYUJz0 ファイル1
#include<stdio.h>
#include<stdint.h>
uint64_t f(uint8_t a,uint64_t b){
printf("%llx\n", b>>(64-a));
return b>>64-a;}
void e(uint8_t a){ f(0,0x8318318318318318);}
void g(uint8_t a){ f(a,0x8318318318318318);}
ファイル2
#include<stdint.h>
uint64_t f(uint8_t a,uint64_t b);
void g(uint8_t a);
void e(uint8_t a);
int main(void) {
g(0);
e(0);
return 0;
}
この二つのファイルをコンパイルして実行してみてください。
よろしくお願いします。
#include<stdio.h>
#include<stdint.h>
uint64_t f(uint8_t a,uint64_t b){
printf("%llx\n", b>>(64-a));
return b>>64-a;}
void e(uint8_t a){ f(0,0x8318318318318318);}
void g(uint8_t a){ f(a,0x8318318318318318);}
ファイル2
#include<stdint.h>
uint64_t f(uint8_t a,uint64_t b);
void g(uint8_t a);
void e(uint8_t a);
int main(void) {
g(0);
e(0);
return 0;
}
この二つのファイルをコンパイルして実行してみてください。
よろしくお願いします。
335デフォルトの名無しさん (ワッチョイ cb5b-uQtz)
2018/03/09(金) 17:27:15.48ID:K2/JY7Cc0 その昔、CPUのバグで16bitレジスタを32bitシフトすると0にならないとかいうのなかったっけ
336デフォルトの名無しさん (ワッチョイ 7361-0aB1)
2018/03/09(金) 17:45:47.23ID:AbBnYUJz0 これからは64ビットのシフト使ってるコードは全てバグの温床になるな。
337デフォルトの名無しさん (ブーイモ MMd6-7yGo)
2018/03/09(金) 18:10:27.57ID:Z9n7UPH0M C11の6.5.7の3より。
If the value of the right operand is negative or is greater than or equal to the width of the promoted left operand, the behavior is undefined.
If the value of the right operand is negative or is greater than or equal to the width of the promoted left operand, the behavior is undefined.
338332 (ワッチョイ fb93-ao9L)
2018/03/09(金) 20:12:23.00ID:er4JdT2d0 >>337 フォローありがとう。この部分ですわ。
6.5.7 Bitwise shift operators ビットシフト演算子 の項。
もしも右オペランドの値が負、または汎整数拡張後の左オペランドの(ビット)幅より
大きいか等しい場合、振る舞いは未定義である。
と言った感じかな。
promoted left operand の部分が「汎整数拡張後の左オペランド」で
合ってるのか自信ないけど。
6.5.7 Bitwise shift operators ビットシフト演算子 の項。
もしも右オペランドの値が負、または汎整数拡張後の左オペランドの(ビット)幅より
大きいか等しい場合、振る舞いは未定義である。
と言った感じかな。
promoted left operand の部分が「汎整数拡張後の左オペランド」で
合ってるのか自信ないけど。
339デフォルトの名無しさん (ワッチョイ 6a80-csLy)
2018/03/09(金) 21:17:55.13ID:ysNVe5/v0 64bit 符号なしを、64bit シフトするって、そもそも無意味だろ
元のビットが残っていない。
全部のビットが変わっている!
意味があるのは、63bit まで
元のビットが残っていない。
全部のビットが変わっている!
意味があるのは、63bit まで
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★7 [七波羅探題★]
- 【埼玉】「無免許で高速道路で事故」トラックの追突事故で10代男性死亡 無免許過失運転致死の疑いでトルコ国籍の男(22)逮捕 戸田市 [ぐれ★]
