!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C17
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.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言語なら俺に聞け 162
https://mevius.5ch.net/test/read.cgi/tech/1698653580/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 163
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7bba-Lem2)
2024/07/16(火) 22:43:54.18ID:ZrsCjURC0211デフォルトの名無しさん (ワッチョイ d7cd-qbvN)
2024/09/17(火) 01:04:31.11ID:BokinMog0 >>210
元々ローカルでchar hage[10];と定義して10以上をアクセスしてもコンパイル時にはエラーにならないでしょ
引数に[10]と書くとしたら可読性のため(この関数では[0~9]までアクセスする可能性があると明示するため)
元々ローカルでchar hage[10];と定義して10以上をアクセスしてもコンパイル時にはエラーにならないでしょ
引数に[10]と書くとしたら可読性のため(この関数では[0~9]までアクセスする可能性があると明示するため)
212デフォルトの名無しさん (スプッッ Sd3f-2MD7)
2024/09/17(火) 10:15:58.36ID:9gub94Dsd __FILE__ とか __LINE__ は大文字なのになんで __func__ は小文字なん?
213デフォルトの名無しさん (アウアウエー Sadf-N1Zj)
2024/09/17(火) 10:17:16.72ID:TMGdiCOOa 範囲の問題じゃなくて
++hage または hage++ が出来るか出来ないかが問題なんです
++hage または hage++ が出来るか出来ないかが問題なんです
214デフォルトの名無しさん (ワッチョイ ff63-y7MN)
2024/09/17(火) 11:06:41.56ID:bX/ekV+z0 一見配列を受け渡ししているように見えるけれど、
実際はポインターとして受け渡ししているってことでしょ
実際はポインターとして受け渡ししているってことでしょ
215はちみつ餃子 ◆8X2XSCHEME (ワッチョイ d70f-6w0d)
2024/09/17(火) 11:56:03.91ID:FRc2ySeD0 >>212
__func__ はマクロではないからだと思う。
__func__ はマクロではないからだと思う。
216デフォルトの名無しさん (ワッチョイ ff63-y7MN)
2024/09/17(火) 12:47:41.54ID:bX/ekV+z0 #include <stdio.h>
char hage[10] = {0};
char *hoge(void)
{
// ++hage; // error '++' には左辺値が必要です。
// return hage;
return &hage[1];
}
int main(void) {
char *p = hoge();
printf("%p, %p\n", hage, p);
return 0;
}
char hage[10] = {0};
char *hoge(void)
{
// ++hage; // error '++' には左辺値が必要です。
// return hage;
return &hage[1];
}
int main(void) {
char *p = hoge();
printf("%p, %p\n", hage, p);
return 0;
}
217デフォルトの名無しさん (アウアウエー Sadf-N1Zj)
2024/09/17(火) 13:07:46.14ID:TMGdiCOOa >>214
そんなことは判ってるよ
(char hage[10]) で hage++ または ++hage 出来ちゃってる(ように観える)のが問題なんでしょ
関数の引数は (char hage[]) または (char *hage) のみにすれば良かった
(char hage[10]) はどうみても蛇足(結局境界テストされてないし)
そんなことは判ってるよ
(char hage[10]) で hage++ または ++hage 出来ちゃってる(ように観える)のが問題なんでしょ
関数の引数は (char hage[]) または (char *hage) のみにすれば良かった
(char hage[10]) はどうみても蛇足(結局境界テストされてないし)
218デフォルトの名無しさん (ワッチョイ ff63-y7MN)
2024/09/17(火) 13:11:47.81ID:bX/ekV+z0 問題だと思う人は、使わないようにしましょう
開発サイトでそういうルールを用意するのも手です
開発サイトでそういうルールを用意するのも手です
219デフォルトの名無しさん (スプッッ Sd3f-2MD7)
2024/09/17(火) 17:17:11.73ID:9gub94Dsd >>215
納得しました。
納得しました。
220デフォルトの名無しさん (ワッチョイ 9ffd-NiVF)
2024/09/17(火) 20:17:27.08ID:dLWvmxgr0 >>197
そもそもstr系mem系はアドレスを受け取るんであって配列を受け取る関数ではないっていう勘違いがあるんだけど
それはともかく大きさがどうのとかなんちゃらが都合がいいとか、本当にC言語でなんかプログラムを書いた事あるの?
そもそもstr系mem系はアドレスを受け取るんであって配列を受け取る関数ではないっていう勘違いがあるんだけど
それはともかく大きさがどうのとかなんちゃらが都合がいいとか、本当にC言語でなんかプログラムを書いた事あるの?
221デフォルトの名無しさん (スプッッ Sd3f-2MD7)
2024/09/17(火) 20:58:19.23ID:9gub94Dsd 俺は尻より胸派なんだよね。
222デフォルトの名無しさん (ワッチョイ d7cd-qbvN)
2024/09/18(水) 00:42:28.78ID:wcwImUMc0 >>217
この場合に限らずcでは範囲チェックなどされないでしょ
必要なら自分でチェックするのが原則
void aaa(char hage[10],int idx)
{
if((UINT)idx < sizeof(hage)/sizeof(hage[0]))
printf("%d=%d¥n",idx,hage[idx]);
else
printf("%dは範囲外だhage¥n",idx);
}
これなら[10]に意味が出る
この場合に限らずcでは範囲チェックなどされないでしょ
必要なら自分でチェックするのが原則
void aaa(char hage[10],int idx)
{
if((UINT)idx < sizeof(hage)/sizeof(hage[0]))
printf("%d=%d¥n",idx,hage[idx]);
else
printf("%dは範囲外だhage¥n",idx);
}
これなら[10]に意味が出る
223デフォルトの名無しさん (ワッチョイ bfee-GITO)
2024/09/18(水) 01:22:58.84ID:9DvoA/Ly0 ド素人w
224デフォルトの名無しさん (ワッチョイ d712-IGT5)
2024/09/18(水) 05:59:54.60ID:Y3+kk9yU0 >>222
c faq 6.21 (英文が詳しい)
https://c-faq.com/aryptr/aryparmsize.html
>>207 の'調整'は'adjust'だろう
N1256を'adjust'で検索するのじゃ
Look, a new day has begun.
c faq 6.21 (英文が詳しい)
https://c-faq.com/aryptr/aryparmsize.html
>>207 の'調整'は'adjust'だろう
N1256を'adjust'で検索するのじゃ
Look, a new day has begun.
225デフォルトの名無しさん (ワッチョイ d710-SKTh)
2024/09/18(水) 07:51:55.61ID:9Z5pFVfx0 8/16bit時代の1バイトでも、1ステップでも減らせってのを経験した人と
最近の可読性、移植性、安全性優先設計が当たり前世代とのギャップ。
最近の可読性、移植性、安全性優先設計が当たり前世代とのギャップ。
226デフォルトの名無しさん (ワッチョイ bf32-GITO)
2024/09/18(水) 08:59:57.51ID:9DvoA/Ly0 ギャップの問題じゃねーから
文脈すら理解できないじじいはすっこんでろ
文脈すら理解できないじじいはすっこんでろ
227デフォルトの名無しさん (ワッチョイ 5701-vU+L)
2024/09/18(水) 09:30:25.30ID:Qk7JHPx80 専門板によくいるアスペだな
228デフォルトの名無しさん (ワッチョイ ff63-y7MN)
2024/09/18(水) 10:34:45.37ID:UYQxUcxO0 225 は釣りでしょう
230デフォルトの名無しさん (ワッチョイ ff63-y7MN)
2024/09/18(水) 13:15:29.42ID:UYQxUcxO0 釣りだか天然だか、分からなくなってきた 笑
231はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f732-vU+L)
2024/09/18(水) 13:35:28.77ID:td/rS/wM0 今どきの統合開発環境を使ってるなら変数の型くらい見れると思うけれど
古典的な手法としてあえてエラーにしてメッセージを読むという型の確認方法がある。
void foo(char bar[10]) {}
int main(void) { int baz = foo; }
こんなコードをたとえば gcc でコンパイルを試みると
error: initialization of 'int' from 'void (*)(char *)' makes integer from pointer without a cast
というエラーになる。
foo の型が void (*)(char *) であることがわかる。
foo は関数型の式 (関数指示子) なので暗黙に関数ポインタに型変換されているのと
bar に相当する箇所の型が char* になってるのがわかる。
古典的な手法としてあえてエラーにしてメッセージを読むという型の確認方法がある。
void foo(char bar[10]) {}
int main(void) { int baz = foo; }
こんなコードをたとえば gcc でコンパイルを試みると
error: initialization of 'int' from 'void (*)(char *)' makes integer from pointer without a cast
というエラーになる。
foo の型が void (*)(char *) であることがわかる。
foo は関数型の式 (関数指示子) なので暗黙に関数ポインタに型変換されているのと
bar に相当する箇所の型が char* になってるのがわかる。
233デフォルトの名無しさん (スプッッ Sd3f-2MD7)
2024/09/18(水) 14:54:11.13ID:LEoKOQZWd >>222
>この場合に限らずcでは範囲チェックなどされないでしょ
>必要なら自分でチェックするのが原則
>
>void aaa(char hage[10],int idx)
>{
> if((UINT)idx < sizeof(hage)/sizeof(hage[0]))
> printf("%d=%d¥n",idx,hage[idx]);
> else
> printf("%dは範囲外だhage¥n",idx);
>}
>
>これなら[10]に意味が出る
printf("%uz\n", sizeof(hage)/sizeof(hage[0]));
の結果ってどんな値表示されるの?
>この場合に限らずcでは範囲チェックなどされないでしょ
>必要なら自分でチェックするのが原則
>
>void aaa(char hage[10],int idx)
>{
> if((UINT)idx < sizeof(hage)/sizeof(hage[0]))
> printf("%d=%d¥n",idx,hage[idx]);
> else
> printf("%dは範囲外だhage¥n",idx);
>}
>
>これなら[10]に意味が出る
printf("%uz\n", sizeof(hage)/sizeof(hage[0]));
の結果ってどんな値表示されるの?
234デフォルトの名無しさん (スプッッ Sd3f-2MD7)
2024/09/18(水) 14:56:10.00ID:LEoKOQZWd 書式のとのuzじゃなくてzuだっけ?zだけでよかったっけ?
ま、主旨はそこじゃないからいっか。
ま、主旨はそこじゃないからいっか。
235はちみつ餃子 ◆8X2XSCHEME (ワッチョイ d7e2-6w0d)
2024/09/18(水) 15:47:33.09ID:3rwci13t0 >>233
sizeof(char*)/sizeof(char) ということになる。
sizeof(char) は確実に 1 だから結果としては単に char* のバイト数ってことだね。
この場合は「『もし 10 に意味があるとしても』境界チェックはされないことに変わりないのでなんの役にも立ってない。 役に立てるとしたらここまで書かなきゃならない」というのが主旨なのであくまでもしもの話。
実際の値はどうでもよい文脈だと思う。
sizeof(char*)/sizeof(char) ということになる。
sizeof(char) は確実に 1 だから結果としては単に char* のバイト数ってことだね。
この場合は「『もし 10 に意味があるとしても』境界チェックはされないことに変わりないのでなんの役にも立ってない。 役に立てるとしたらここまで書かなきゃならない」というのが主旨なのであくまでもしもの話。
実際の値はどうでもよい文脈だと思う。
236デフォルトの名無しさん (ワッチョイ d7cd-qbvN)
2024/09/18(水) 16:33:08.44ID:wcwImUMc0237デフォルトの名無しさん (スプッッ Sd3f-2MD7)
2024/09/18(水) 16:43:30.74ID:LEoKOQZWd238デフォルトの名無しさん (ワッチョイ d7cd-qbvN)
2024/09/18(水) 18:00:34.97ID:wcwImUMc0 'ここの10は意味ありませんよ'
って警告を出してもいいじゃんってことでしょ
それなら例えば
typedef char HAGE_TBL[10];
void foo(HAGE_TBL hage) {}
(毎回10とか書くのは危険なのでこういう使い方が多いと思う)
などとした場合に毎回警告が出てうざいことになるんじゃないか
って警告を出してもいいじゃんってことでしょ
それなら例えば
typedef char HAGE_TBL[10];
void foo(HAGE_TBL hage) {}
(毎回10とか書くのは危険なのでこういう使い方が多いと思う)
などとした場合に毎回警告が出てうざいことになるんじゃないか
239デフォルトの名無しさん (ワッチョイ ff63-y7MN)
2024/09/18(水) 18:07:31.49ID:UYQxUcxO0 警告ならまだ笑っていられるが、
明らかに書いた奴の意図とは違って誤動作してるだろ
明らかに書いた奴の意図とは違って誤動作してるだろ
240デフォルトの名無しさん (スプッッ Sd3f-2MD7)
2024/09/18(水) 18:30:29.69ID:LEoKOQZWd >>222 のバグを晒すスレはここですか?
241デフォルトの名無しさん (スプッッ Sd3f-2MD7)
2024/09/18(水) 18:46:04.44ID:LEoKOQZWd C言語は難しいな
242デフォルトの名無しさん (ワッチョイ ff63-y7MN)
2024/09/18(水) 20:53:02.12ID:UYQxUcxO0 void aaa()の中で、
引数で渡された値が何かを確かめて見ると良い
それと、 sizeof(hage)やsizeof(hage[0])の値も
プログラム書いた人の意図としては、
sizeof(hage)/sizeof(hage[0])が10になるはずなんだが
さてさていくつだろうか?
引数で渡された値が何かを確かめて見ると良い
それと、 sizeof(hage)やsizeof(hage[0])の値も
プログラム書いた人の意図としては、
sizeof(hage)/sizeof(hage[0])が10になるはずなんだが
さてさていくつだろうか?
243デフォルトの名無しさん (ワッチョイ 9f7c-2MD7)
2024/09/19(木) 00:15:21.84ID:5H+5PGV10 もうやめて!>>222 のライフはゼロよ!
244デフォルトの名無しさん (ワッチョイ 9f1e-S785)
2024/09/19(木) 06:32:15.59ID:zdFAvN1E0 本人が新たなネタを出してくるんだもん。
>>238 でもわざわざ
typedef char HAGE_TBL[10];
ってやっておきながら、なんで
void foo(HAGE_TBL hage)
なの? 構造体と同じように
void foo(HAGE_TBL *hage)
ってしてみたら新たな何かが見えてこないかい?
>>238 でもわざわざ
typedef char HAGE_TBL[10];
ってやっておきながら、なんで
void foo(HAGE_TBL hage)
なの? 構造体と同じように
void foo(HAGE_TBL *hage)
ってしてみたら新たな何かが見えてこないかい?
245デフォルトの名無しさん (ブーイモ MMbf-GITO)
2024/09/19(木) 15:36:15.62ID:bQAYIDF0M cは洗練された型システム持ってないんだからそんなところ頑張っても無駄なんだよ
この悟りに至って始めて脱初級
原則語るならそれからにしてくれ
この悟りに至って始めて脱初級
原則語るならそれからにしてくれ
246デフォルトの名無しさん (ワッチョイ ff63-y7MN)
2024/09/19(木) 15:40:30.12ID:cPR7xA8Z0 Cは一部の洗練された型システム持つ言語よりも遙かに自由度が高い
そこが分かってようやく中級レベル
あとは本人の努力次第で空も飛べるし海も潜れる
そこが分かってようやく中級レベル
あとは本人の努力次第で空も飛べるし海も潜れる
247デフォルトの名無しさん (ワッチョイ bfda-GITO)
2024/09/19(木) 15:50:31.78ID:c2v//UgT0 おいおい
そのぶん危険なんだから持ち上げる部分でもないだろ
お前も初級
そのぶん危険なんだから持ち上げる部分でもないだろ
お前も初級
248デフォルトの名無しさん (ワッチョイ ff63-y7MN)
2024/09/19(木) 17:19:57.71ID:cPR7xA8Z0 ナイフは危険だが有用
不器用者は使わない方が良い
不器用者は使わない方が良い
249デフォルトの名無しさん (ワッチョイ b766-qbvN)
2024/09/19(木) 17:44:18.26ID:8NYyNXbk0250デフォルトの名無しさん (ワッチョイ bf29-GITO)
2024/09/19(木) 20:28:27.65ID:c2v//UgT0251デフォルトの名無しさん (ワッチョイ ff63-y7MN)
2024/09/19(木) 20:47:13.84ID:cPR7xA8Z0 そんなに怖がるなよ
食われるわけじゃないんだから
食われるわけじゃないんだから
252デフォルトの名無しさん (アウアウエー Sadf-3vlU)
2024/09/19(木) 21:11:19.13ID:/CBFTgYsa >>245
悟った人は全部void*
悟った人は全部void*
253デフォルトの名無しさん (ワッチョイ ff4c-KlCL)
2024/09/19(木) 21:52:43.48ID:j90utfqH0 文字も数字も全部intでいいやん
254デフォルトの名無しさん (アウアウエー Sadf-3vlU)
2024/09/19(木) 21:56:05.41ID:/CBFTgYsa getch() は int
255デフォルトの名無しさん (ワッチョイ 9f1e-S785)
2024/09/20(金) 07:15:20.20ID:dn4N5ANS0 >>249
それが不満なようだから「HAGE_TBL * にしたら何ができるか考えてみては?」ということでは?
それが不満なようだから「HAGE_TBL * にしたら何ができるか考えてみては?」ということでは?
256デフォルトの名無しさん (ササクッテロ Sp47-i443)
2024/09/24(火) 10:26:30.49ID:/2yiAcKTp 昔のコンピュータはメモリー少ないから、intで文字持つなんて贅沢だったんだよ
257デフォルトの名無しさん (ワッチョイ 1e2b-VArp)
2024/09/24(火) 11:12:54.47ID:CARZyoOh0 次のジジイの的外れな言いたいだけコメントを先取り
intは16bit以上だぞ
intは16bit以上だぞ
258デフォルトの名無しさん (ササクッテロ Sp47-i443)
2024/09/24(火) 11:31:50.53ID:QMMOdtbOp 違うよ、intは処理系依存だから8ビットの場合もある
259デフォルトの名無しさん (スプッッ Sd52-L8o3)
2024/09/24(火) 11:49:08.20ID:vvKB2ofDd 規格書読め
260デフォルトの名無しさん (ブーイモ MM32-VArp)
2024/09/24(火) 11:54:52.88ID:kMxfGMRcM 次のジジイ
getcharがなぜintを返すか
getcharがなぜintを返すか
261デフォルトの名無しさん (ワッチョイ d6f5-K4S3)
2024/09/24(火) 19:39:49.05ID:tv/lKhnI0 >>174
> char* foo = "hoge";
>
> のようなケースではポインタ foo は文字列リテラルを指してる
(単に端折っただけかもしれないけれど、)文字列リテラルに関してCには非常に込み入った事情(Rationale Rev. 5.10 6.4.5 冒頭-l.26, N1256 Annex J.5.5)があり、厳密に言えば foo は "hoge" によって初期化された無名の配列を指している(N1256 6.7.8-32)。
C99RationaleV5.10
https://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf
テンプレ入りキボンヌ
>>皆の衆
ともあれ、込み入った事情に該当しなければ
const char afoo[] = "hoge";
あるいは
const char * const ccfoo = "hoge";
場合によって
const char *cfoo = "hoge";
と書いて、うっかり書き換え防止に勇往邁進するのじゃ。
> char* foo = "hoge";
>
> のようなケースではポインタ foo は文字列リテラルを指してる
(単に端折っただけかもしれないけれど、)文字列リテラルに関してCには非常に込み入った事情(Rationale Rev. 5.10 6.4.5 冒頭-l.26, N1256 Annex J.5.5)があり、厳密に言えば foo は "hoge" によって初期化された無名の配列を指している(N1256 6.7.8-32)。
C99RationaleV5.10
https://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf
テンプレ入りキボンヌ
>>皆の衆
ともあれ、込み入った事情に該当しなければ
const char afoo[] = "hoge";
あるいは
const char * const ccfoo = "hoge";
場合によって
const char *cfoo = "hoge";
と書いて、うっかり書き換え防止に勇往邁進するのじゃ。
262261 (ワッチョイ d6f5-K4S3)
2024/09/24(火) 19:51:57.01ID:tv/lKhnI0 >>158
件の意味論は 6.7.8-32 を介して 6.7.8-14,15 に帰結するように思われる一方で、文字列リテラルが 6.4.5-5 で自ら初期化した(やはり)無名の配列の代名詞だとすると 6.7.8-11 が適用されるという解釈も成り立ちそう。
char *gfoo1 = "hoge"; // (1)
char *gfoo2 = "hoge"; // (2)
void f() {
char *foo1 = "hoge"; // (3)
char *foo2 = "hoge"; // (4)
}
>>261 で触れた文字列リテラル書き換え派の場合、(1)〜(4)は別物なので、各々初期化しなければならないため前者の解釈。この時、(3), (4)が automatic storage duration でも良いように 6.7.8-32 では storage duration を定めていないのだと思う。
他方、文字列リテラル不変派の場合、(1)〜(4)は同一で良いので、初期化を一回で済ませて後者の解釈。
結局、前後者両方の解釈が出来るようになっているように見える。
件の意味論は 6.7.8-32 を介して 6.7.8-14,15 に帰結するように思われる一方で、文字列リテラルが 6.4.5-5 で自ら初期化した(やはり)無名の配列の代名詞だとすると 6.7.8-11 が適用されるという解釈も成り立ちそう。
char *gfoo1 = "hoge"; // (1)
char *gfoo2 = "hoge"; // (2)
void f() {
char *foo1 = "hoge"; // (3)
char *foo2 = "hoge"; // (4)
}
>>261 で触れた文字列リテラル書き換え派の場合、(1)〜(4)は別物なので、各々初期化しなければならないため前者の解釈。この時、(3), (4)が automatic storage duration でも良いように 6.7.8-32 では storage duration を定めていないのだと思う。
他方、文字列リテラル不変派の場合、(1)〜(4)は同一で良いので、初期化を一回で済ませて後者の解釈。
結局、前後者両方の解釈が出来るようになっているように見える。
263デフォルトの名無しさん (ワッチョイ de79-sesJ)
2024/09/25(水) 19:34:19.49ID:8eNfi/Op0 まだやってるキモ…
いくら話題無いからってこれは誰も幸せにならない
いくら話題無いからってこれは誰も幸せにならない
264デフォルトの名無しさん (ワッチョイ 727d-rNKn)
2024/09/25(水) 23:05:12.18ID:YARyzAjz0 ええんちゃう別に
どうせ5chに答えを求めてやって来る人なんてもうおらんのやし
どうせ5chに答えを求めてやって来る人なんてもうおらんのやし
265デフォルトの名無しさん (ワッチョイ 1663-7cnK)
2024/09/25(水) 23:07:41.16ID:1jKu7Jqx0 青い鳥を探してます
ここに来れば教えてくれると聞いて来ました
ここに来れば教えてくれると聞いて来ました
266デフォルトの名無しさん (ワッチョイ 022d-w5sm)
2024/09/26(木) 09:49:09.10ID:oesVQEFi0 PythonとかC++のスレで規格持ち出して言い合いしてるのを見たことないが
何故かここではよく起こるな
何故かここではよく起こるな
267デフォルトの名無しさん (ワッチョイ ebbe-i443)
2024/09/26(木) 10:19:33.26ID:944iXMZC0 Cなんてのは対象CPUの違いとかでも標準とかけ離れた実装して来るのにね
268デフォルトの名無しさん (アウアウエー Saaa-rNKn)
2024/09/26(木) 10:58:03.72ID:R5lWYvWFa >>264
これ++
これ++
269はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e332-Pvcq)
2024/09/26(木) 12:24:13.03ID:B+Au+yIB0270デフォルトの名無しさん (ワントンキン MM42-LD7o)
2024/09/26(木) 14:46:28.31ID:oxN8/Up7M perlあたりで頼む
271デフォルトの名無しさん (ワッチョイ 022d-w5sm)
2024/09/26(木) 16:39:09.57ID:oesVQEFi0 >>269
君の問題点は規格読んでるの間違えてるとこだよ
君の問題点は規格読んでるの間違えてるとこだよ
272はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e332-Pvcq)
2024/09/26(木) 16:48:57.66ID:B+Au+yIB0273デフォルトの名無しさん (ワッチョイ 63e3-VZV9)
2024/09/26(木) 23:55:11.03ID:jCy2QsTx0 >>235
これの1行目は文字列長によらず固定値にならない?
char* と char[] を区別できてないように思う
// これは (ヌル文字を含む) 4バイトのデータがスタック上に作られる
// sizeof(a1) の結果は文字列数により変わる
char a1[] = "abc";
// こう書いた場合、文字列の実体は静的な領域 (テキスト領域) に確保され、
// a2にはそのアドレスが渡される。
// sizeof(a2) はポインタのサイズであり、値は文字列長によらず固定
char* a2 = "abc";
これの1行目は文字列長によらず固定値にならない?
char* と char[] を区別できてないように思う
// これは (ヌル文字を含む) 4バイトのデータがスタック上に作られる
// sizeof(a1) の結果は文字列数により変わる
char a1[] = "abc";
// こう書いた場合、文字列の実体は静的な領域 (テキスト領域) に確保され、
// a2にはそのアドレスが渡される。
// sizeof(a2) はポインタのサイズであり、値は文字列長によらず固定
char* a2 = "abc";
274デフォルトの名無しさん (ワッチョイ 63e3-VZV9)
2024/09/27(金) 00:02:43.63ID:ju4/Ooeg0 char* でも char[] でも、a[n] と書けばn文字目を参照するのは変わらない
これはポインタの [] 演算子は「ポインタをn個進めた位置の要素を参照する」ため、結果的には配列と変わらないから
だけど前述の a1 と a2 は違う型なので、そこは注意が必要
たぶん VS Code でC言語の拡張を入れてれば、上記のように書いた変数のところにカーソルを当たるとヒントが出るので、それで確認できると思う
それか実際に動かして sizeof の結果を見るか
これはポインタの [] 演算子は「ポインタをn個進めた位置の要素を参照する」ため、結果的には配列と変わらないから
だけど前述の a1 と a2 は違う型なので、そこは注意が必要
たぶん VS Code でC言語の拡張を入れてれば、上記のように書いた変数のところにカーソルを当たるとヒントが出るので、それで確認できると思う
それか実際に動かして sizeof の結果を見るか
275はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e332-Pvcq)
2024/09/27(金) 00:16:01.96ID:dEIfxD4z0276デフォルトの名無しさん (ワッチョイ d27c-tavX)
2024/09/27(金) 00:20:08.16ID:qUi2cfOF0 もう >>222 を晒すのはやめてあげて......
277デフォルトの名無しさん (ワッチョイ 1663-7cnK)
2024/09/27(金) 00:22:55.64ID:xb00usC10 222は釣りでしょう
278はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e332-Pvcq)
2024/09/27(金) 00:23:40.17ID:dEIfxD4z0279デフォルトの名無しさん (ワッチョイ 63e3-VZV9)
2024/09/27(金) 07:31:58.10ID:ju4/Ooeg0280デフォルトの名無しさん (ワッチョイ 2b65-ebyo)
2024/10/15(火) 13:20:49.22ID:+DYHSMWW0 初歩的な質問で申し訳ないんだけど
プログラムをユーザーの入力によって一時停止させるのってどうしたら良い?
pauseで入力待ちにするとかフラグを間に挿入するとかではなくユーザーからの入力があった場合のみ一時停止したい
プログラムをユーザーの入力によって一時停止させるのってどうしたら良い?
pauseで入力待ちにするとかフラグを間に挿入するとかではなくユーザーからの入力があった場合のみ一時停止したい
281デフォルトの名無しさん (ブーイモ MM7f-tEjz)
2024/10/15(火) 13:29:34.78ID:WZg8MP0BM まずメインの処理を一時停止可能な作りに変える
282デフォルトの名無しさん (ワッチョイ 3b80-C3fO)
2024/10/15(火) 13:32:02.14ID:nD7e5Gmv0283デフォルトの名無しさん (ブーイモ MM7f-tEjz)
2024/10/15(火) 13:32:39.39ID:WZg8MP0BM あとコンソールプログラムなのか?
環境を正確に書きな
環境を正確に書きな
284はちみつ餃子 ◆8X2XSCHEME (ワッチョイ fb32-aM+D)
2024/10/15(火) 13:37:01.44ID:C4BE9tl00285デフォルトの名無しさん (ワッチョイ 2b65-ebyo)
2024/10/15(火) 13:47:40.16ID:+DYHSMWW0286デフォルトの名無しさん (ササクッテロ Sp0f-0GI8)
2024/10/15(火) 13:51:52.41ID:9xoHIO4Lp 環境依存でデバイス依存だからなぁ
287デフォルトの名無しさん (ブーイモ MM7f-tEjz)
2024/10/15(火) 14:34:22.10ID:UH8LrgydM やりたいことがnon blockingでgetcharしたいってことだとするとwindowsだconsole apiを使う
例えばwindowsのreadline互換実装であるwineditlineを見るといい
例えばwindowsのreadline互換実装であるwineditlineを見るといい
288デフォルトの名無しさん (ブーイモ MM7f-tEjz)
2024/10/15(火) 14:36:11.97ID:UH8LrgydM ただめんどうなので今回のように止めたいだけならこういう簡易的なやりかたがある
ttps://stackoverflow.com/questions/21294713/non-blocking-i-o-in-c-windows
ttps://stackoverflow.com/questions/21294713/non-blocking-i-o-in-c-windows
289デフォルトの名無しさん (ワッチョイ 2b65-ebyo)
2024/10/15(火) 20:06:43.67ID:+DYHSMWW0290はちみつ餃子 ◆8X2XSCHEME (ワッチョイ fb32-UOzH)
2024/10/15(火) 21:39:15.79ID:C4BE9tl00291デフォルトの名無しさん (ワッチョイ 0b02-xPbt)
2024/10/30(水) 01:54:25.92ID:BzmMNap80 いにしえの議論掘り返してすまんが、>>182の例示による説明が最も本質を突いてるように思う、感謝のレス
文字列リテラルは配列初期化子の構文糖でありながら、また文字列をも表すという二義性を持つ、という云うのはあくまで言語設計の為の汚いハックでしかなかろ?
文字列リテラルは配列初期化子の構文糖でありながら、また文字列をも表すという二義性を持つ、という云うのはあくまで言語設計の為の汚いハックでしかなかろ?
292デフォルトの名無しさん (ササクッテロ Spc5-O2Yz)
2024/10/30(水) 10:28:23.97ID:BRGgIRAsp Cの変数の型指定なんて気休めだからなぁ
293デフォルトの名無しさん (ワッチョイ 0b02-xPbt)
2024/11/01(金) 06:24:42.85ID:+lXxXu7p0 気休めじゃなくて気疲れの間違いだろ
長さやsignednessでわけわからん変換しやがるバグの根源と言ってもいい
長さやsignednessでわけわからん変換しやがるバグの根源と言ってもいい
294デフォルトの名無しさん (ワッチョイ 8b63-IjZm)
2024/11/01(金) 11:11:58.05ID:YgeQjLzz0 訳が理解できるようになるまで、お前は使用禁止
295デフォルトの名無しさん (ワッチョイ 622d-CyeO)
2024/11/03(日) 13:27:09.33ID:N1lOck0q0 https://togetter.com/li/1471386
こんな事本当にあるのか?
こんな事本当にあるのか?
296デフォルトの名無しさん (ワッチョイ f6b7-UxC2)
2024/11/03(日) 13:36:34.35ID:e8fWHn4Q0 もともとバグってたのを対処療法で回避しただけじゃねーの?
そんな驚愕するほどのこととは思わんな
スペースは文字列に加えるってことだろ
そんな驚愕するほどのこととは思わんな
スペースは文字列に加えるってことだろ
297デフォルトの名無しさん (ワッチョイ 5e63-kEEx)
2024/11/03(日) 13:45:35.99ID:WzNRcFfL0 ちゃんとソースを公開すればみんなで治してくれるよ
298デフォルトの名無しさん (アウアウエー Sada-GGiU)
2024/11/03(日) 16:06:15.80ID:XxnHrPnRa バイバイおさるさん
299デフォルトの名無しさん (ワッチョイ 3679-NO1F)
2024/11/03(日) 17:27:36.06ID:4RaSizfZ0 char []s = "うんこ"
s[20] = 0; // どっか判り難いとこにこんなのが紛れてる
回答「(sに)もっとスペースを追加して!」
s[20] = 0; // どっか判り難いとこにこんなのが紛れてる
回答「(sに)もっとスペースを追加して!」
300デフォルトの名無しさん (ワッチョイ 5e63-kEEx)
2024/11/03(日) 17:39:48.03ID:WzNRcFfL0 どこか知らない国で "うんこ" が40バイトくらいある所があったりして
301はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-JeGG)
2024/11/03(日) 19:33:15.95ID:/vDzNoeA0 業務だとヨソの担当のモジュールに口出しするのがめんどいから対処療法で握りつぶすみたいなことはあるのかもしれん。
s("※んこ"の値)は読み取り専用になるんじゃないかな
処理系によるかもしれないけど
処理系によるかもしれないけど
303デフォルトの名無しさん (ワッチョイ 3679-NO1F)
2024/11/04(月) 01:39:12.77ID:rgFUj3k30 >「ここにスペースを入れてみて」「もっと沢山、もっともっと」
この辺りコピペ怪文書にしか思えないんだが
境界チェックしない言語ならありふれたバグだし、元文書はちんぽとかだったんじゃないだろうか
この辺りコピペ怪文書にしか思えないんだが
境界チェックしない言語ならありふれたバグだし、元文書はちんぽとかだったんじゃないだろうか
304デフォルトの名無しさん (ササクッテロラ Sp79-P7MY)
2024/11/04(月) 13:45:59.93ID:UGhFqLBmp どうせメモリーリークだろうな
データ位置を変えると現象が変わるなんて典型的だろ
データ位置を変えると現象が変わるなんて典型的だろ
>>302
誤りでした
誤りでした
306デフォルトの名無しさん (ワッチョイ 5e63-kEEx)
2024/11/04(月) 14:02:09.24ID:SHEOgeyw0 パンパース当てるのが正しい
307デフォルトの名無しさん (ワッチョイ 3679-NO1F)
2024/11/04(月) 20:44:45.70ID:rgFUj3k30 おむつってあんま進化してないよな
吸収率だとか漏れだとかそんなのは上がってるだろうが、基本的な機能は変わらない
介護業界でも排泄介助っていう高齢者の汚物処理って割と大変な部類だと思うんだが
そろそろおもつ革命を起こさないと業界崩壊するんじゃないの
プログラミングでなんとかできませんかね
吸収率だとか漏れだとかそんなのは上がってるだろうが、基本的な機能は変わらない
介護業界でも排泄介助っていう高齢者の汚物処理って割と大変な部類だと思うんだが
そろそろおもつ革命を起こさないと業界崩壊するんじゃないの
プログラミングでなんとかできませんかね
308デフォルトの名無しさん (ワッチョイ 3679-NO1F)
2024/11/04(月) 20:51:48.25ID:rgFUj3k30 高齢者に限らず若い子でもうんこ漏らす時は漏らすし、そういう緊急時にも安心できるぐらいのものがそろそろ欲しいな
紙ベースで吸収率だとかで脳が退化してるおむつメーカーではおむつ革命はとても期待できないだろう
紙ベースで吸収率だとかで脳が退化してるおむつメーカーではおむつ革命はとても期待できないだろう
309デフォルトの名無しさん (ワッチョイ 0920-pds3)
2024/11/04(月) 21:52:48.49ID:lap6rdZH0 介護対象に飲ませるうんこがあまり臭くなくなる薬みたいな技術は進化してるぞ
310デフォルトの名無しさん (ワッチョイ f532-Q1tn)
2024/11/04(月) 22:10:34.76ID:TtMQ1IOc0 薬で臭くなくしたうんこだからといって介護対象に飲ませるのはどうかと思うぞ。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 [蚤の市★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 【外交】日中関係悪化、長期化の様相 2012年には自動車輸出80%減も ロイター★3 [1ゲットロボ★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪 ★2
- 【実況】博衣こよりのえちえち朝こよ🧪
- カカロット、腰痛い
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 【!?】高市早苗「靖国神社電撃参拝プラン」浮上!これもう戦争だろ… [481941988]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
