Hello hackers !
Qiitaは、エンジニアリングに関する知識を記録・共有するためのサービスです。
コードを書いていて気づいたことや、自分がハマったあの仕様について、
他のエンジニアと知見を共有しましょう ;)
https://qiita.com/
Qiita(キータ)は、Incrementsが運営するプログラミング情報のナレッジコミュニティ。
2016年現在で日本最大のプログラマーコミュニティとされている[1]。
https://internet.watch.impress.co.jp/docs/news/1025972.html
前スレ Qiita
https://mevius.5ch.net/test/read.cgi/tech/1542357242/
Qiita 2 - キータぞ、来たぞ、キータだぞー
■ このスレッドは過去ログ倉庫に格納されています
2022/07/26(火) 00:20:10.32ID:XQj8UtG3
2022/09/18(日) 08:51:44.21ID:pwhJHgYT
8076
2022/09/18(日) 09:24:32.31ID:T5lJzXoE 俺は「間違ってる」とは言ってないよ
68によれば
learn.microsoft.com/ja-jp/cpp/c-language/initializing-strings?view=msvc-170
も間違いということになるよなって話だ
68によれば
learn.microsoft.com/ja-jp/cpp/c-language/initializing-strings?view=msvc-170
も間違いということになるよなって話だ
2022/09/18(日) 13:11:36.43ID:Yf5HDNqR
『【C】初めてのC言語(17. 文字列リテラル)』の表題で
> 文字列リテラルの機能
> ・ダブルクォーテーションで囲まれた文字列(文字列リテラル)は、
> 自動的に末尾に「\0」を付ける処理が入っています。
> ・ダブルクォーテーションを使わず、char型の配列として文字列を
> 作る場合は終端文字として「\0」を入れます。
と書いてるのは文字列リテラルとcharの配列とcharの配列に文字列リテラル
で初期化するのの区別がついていないんだろう。
> 文字列宣言でよくある誤り
> 以下のように、「n文字を格納するために用意する配列の要素数がn(=nバイト)」
> だと、最後に「\0」を入れる要素が足りなくなってしまいます。
> #include <stdio.h>
>
> // よくある誤り
> int main(void){
> const char str[5] = "Hello"; // 配列の要素数が「文字列の長さと等しい」と、終端文字を入れられない!
> printf("%s\n", str);
> return 0;
> }
char の配列の最後に'\0'を入れなきゃいけないルールもないのでこれも誤り。
> 文字列リテラルの機能
> ・ダブルクォーテーションで囲まれた文字列(文字列リテラル)は、
> 自動的に末尾に「\0」を付ける処理が入っています。
> ・ダブルクォーテーションを使わず、char型の配列として文字列を
> 作る場合は終端文字として「\0」を入れます。
と書いてるのは文字列リテラルとcharの配列とcharの配列に文字列リテラル
で初期化するのの区別がついていないんだろう。
> 文字列宣言でよくある誤り
> 以下のように、「n文字を格納するために用意する配列の要素数がn(=nバイト)」
> だと、最後に「\0」を入れる要素が足りなくなってしまいます。
> #include <stdio.h>
>
> // よくある誤り
> int main(void){
> const char str[5] = "Hello"; // 配列の要素数が「文字列の長さと等しい」と、終端文字を入れられない!
> printf("%s\n", str);
> return 0;
> }
char の配列の最後に'\0'を入れなきゃいけないルールもないのでこれも誤り。
2022/09/18(日) 13:15:00.45ID:Yf5HDNqR
> ・そのため以下の例では、memcpyによるコピー先(※ここではstr1)で
> 確保されているメモリ領域を確認しておく必要があります。
>
>#include <stdio.h>
>
> int main(void){
> char str1[] = "Hello";
> char str2[] = "Hello,world!";
> memcpy(str1, str2, 13); // 長い文字列で上書きはNG
> return 0;
> }
↑を見るとcharの配列の説明をしたいのかな? と思えてしまうな。
> 確保されているメモリ領域を確認しておく必要があります。
>
>#include <stdio.h>
>
> int main(void){
> char str1[] = "Hello";
> char str2[] = "Hello,world!";
> memcpy(str1, str2, 13); // 長い文字列で上書きはNG
> return 0;
> }
↑を見るとcharの配列の説明をしたいのかな? と思えてしまうな。
2022/09/18(日) 13:22:53.14ID:Yf5HDNqR
同じ人の別の記事
『【C】初めてのC言語(19. 文字列とバッファオーバーフロー)』
https://qiita.com/nkojima/items/4d9cec9e686aee41eec2
> 終端文字とバッファオーバーフロー(オーバーラン)
> 以下のように終端文字「\0」を上書きしてしまうと、printf関数は「\0」が
> 現れるまで探し続けることになります。
> そのため、配列として確保していない領域(※100バイト目以降)にもアクセス
> しようとして、バッファオーバーフローを引き起こしてしまう可能性があります。
> paiza.ioの環境ではバッファオーバーフローは発生しませんでしたが...
>
> #include <stdio.h>
> int main(void){
> char str[100] = "Hello";
> str[5] = '!'; // 終端文字「\0」が失われてしまう!
>
> printf("%s\n", str);
> return 0;
> }
初期化子で明示的に初期化される要素以外の要素には 0 が格納されることを
理解していない。
『【C】初めてのC言語(19. 文字列とバッファオーバーフロー)』
https://qiita.com/nkojima/items/4d9cec9e686aee41eec2
> 終端文字とバッファオーバーフロー(オーバーラン)
> 以下のように終端文字「\0」を上書きしてしまうと、printf関数は「\0」が
> 現れるまで探し続けることになります。
> そのため、配列として確保していない領域(※100バイト目以降)にもアクセス
> しようとして、バッファオーバーフローを引き起こしてしまう可能性があります。
> paiza.ioの環境ではバッファオーバーフローは発生しませんでしたが...
>
> #include <stdio.h>
> int main(void){
> char str[100] = "Hello";
> str[5] = '!'; // 終端文字「\0」が失われてしまう!
>
> printf("%s\n", str);
> return 0;
> }
初期化子で明示的に初期化される要素以外の要素には 0 が格納されることを
理解していない。
2022/09/18(日) 13:31:36.22ID:3QbyQeuQ
ID:Yf5HDNqRくんは説明が下手
85デフォルトの名無しさん
2022/09/18(日) 13:41:49.32ID:KpBP36NG 口が不自由
顔が不自由
頭が不自由
顔が不自由
頭が不自由
2022/09/18(日) 13:44:08.06ID:Yf5HDNqR
『【C】初めてのC言語(16. 文字列の基本)』
https://qiita.com/nkojima/items/d87ce0cb15dd1a26f21a
> 文字列にまつわる業界ルール
> ・「C言語の文字列に関する業界ルール」として、以下の2つのルールが
> 挙げられていました。
> ・先頭要素から順に1文字ずつ文字コードを格納して文字列を表す。
> ・最後の文字の直後には「文字コード0の文字」を必ず格納し、それ以降の
> メモリ空間は利用しない。
>
> #include <stdio.h>
>
> int main(void){
> const char str1[10] = "Hello";
> const char str2[10] = "He\0llo";
>
> printf("%s\n", str1);
> printf("%s\n", str2); // 「\0」が終端文字(ヌル文字)として扱われている。
>
> return 0;
> }
文字列中に'\0'を含まない文字列リテラルなら
> ・最後の文字の直後には「文字コード0の文字」を必ず格納し、それ以降の
> メモリ空間は利用しない。
は正しいが、
> const char str1[10] = "Hello";
要素数 10 ある char の配列は普通に str1[9] までアクセスは可能。
やはり文字列リテラルと char の配列で区別がついてない気がする。
https://qiita.com/nkojima/items/d87ce0cb15dd1a26f21a
> 文字列にまつわる業界ルール
> ・「C言語の文字列に関する業界ルール」として、以下の2つのルールが
> 挙げられていました。
> ・先頭要素から順に1文字ずつ文字コードを格納して文字列を表す。
> ・最後の文字の直後には「文字コード0の文字」を必ず格納し、それ以降の
> メモリ空間は利用しない。
>
> #include <stdio.h>
>
> int main(void){
> const char str1[10] = "Hello";
> const char str2[10] = "He\0llo";
>
> printf("%s\n", str1);
> printf("%s\n", str2); // 「\0」が終端文字(ヌル文字)として扱われている。
>
> return 0;
> }
文字列中に'\0'を含まない文字列リテラルなら
> ・最後の文字の直後には「文字コード0の文字」を必ず格納し、それ以降の
> メモリ空間は利用しない。
は正しいが、
> const char str1[10] = "Hello";
要素数 10 ある char の配列は普通に str1[9] までアクセスは可能。
やはり文字列リテラルと char の配列で区別がついてない気がする。
2022/09/18(日) 14:48:01.26ID:1D1ti7Vt
2022/09/18(日) 15:20:57.93ID:PvmyxT+K
>>87
Linuxのgccでは元のままだと
Hello
とだけ表示されたけど
> #include <stdio.h>
>
> // 誤りを修正したコード
> int main(void){
> const char str2[]=" world";
> const char str[5] = "Hello"; // 配列の要素数は「文字列の長さ(バイト数)+1」
> printf("%s\n", str);
> return 0;
>}
のようにすると
Hello world
と表示された
Linuxのgccでは元のままだと
Hello
とだけ表示されたけど
> #include <stdio.h>
>
> // 誤りを修正したコード
> int main(void){
> const char str2[]=" world";
> const char str[5] = "Hello"; // 配列の要素数は「文字列の長さ(バイト数)+1」
> printf("%s\n", str);
> return 0;
>}
のようにすると
Hello world
と表示された
8988
2022/09/18(日) 15:28:10.78ID:PvmyxT+K 行頭に>を置いとけば字下げの空白を削除しないでくれるんじゃないかと思ったけど
やっぱり削除されるのか
やっぱり削除されるのか
2022/09/18(日) 15:58:42.44ID:aznVlwJJ
91デフォルトの名無しさん
2022/09/18(日) 18:29:18.38ID:Yf5HDNqR >>87
> '\0'がないとprintf("%s\n", str) では文字列の終わりを見つけらない
>>90
> 0を入れなきゃいけないルールはあるぞw
> 文字列リテラルを使えば必ず入る
>
> 間違ってるのは記事主じゃなくお前だよw
本気で言ってるのか敢えて頭おかしいフリしてるのかどっちかな??
> #include <stdio.h>
>
> int main(void){
> const char str[5] = "Hello";
> printf("%.5s\n", str);
> return 0;
> }
https://wandbox.org/permlink/ItLeFxoqffh2nIfb
> '\0'がないとprintf("%s\n", str) では文字列の終わりを見つけらない
>>90
> 0を入れなきゃいけないルールはあるぞw
> 文字列リテラルを使えば必ず入る
>
> 間違ってるのは記事主じゃなくお前だよw
本気で言ってるのか敢えて頭おかしいフリしてるのかどっちかな??
> #include <stdio.h>
>
> int main(void){
> const char str[5] = "Hello";
> printf("%.5s\n", str);
> return 0;
> }
https://wandbox.org/permlink/ItLeFxoqffh2nIfb
2022/09/18(日) 19:40:32.32ID:PvmyxT+K
>>91
> '\0'がないとprintf("%s\n", str) では文字列の終わりを見つけらない
と書かれてるのに
printf("%s\n", str); → printf("%.5s\n", str);
と勝手に変えてるし説明もない
> '\0'がないとprintf("%s\n", str) では文字列の終わりを見つけらない
と書かれてるのに
printf("%s\n", str); → printf("%.5s\n", str);
と勝手に変えてるし説明もない
2022/09/18(日) 20:05:23.60ID:Yf5HDNqR
> > '\0'がないとprintf("%s\n", str) では文字列の終わりを見つけらない
>
> と書かれてるのに
> printf("%s\n", str); → printf("%.5s\n", str);
> と勝手に変えてるし説明もない
'\0'で文字列の終端明示する必要はないし説明要る人は想定してないけど
説明要るの??
>
> と書かれてるのに
> printf("%s\n", str); → printf("%.5s\n", str);
> と勝手に変えてるし説明もない
'\0'で文字列の終端明示する必要はないし説明要る人は想定してないけど
説明要るの??
2022/09/18(日) 20:40:26.30ID:PvmyxT+K
>>93
>>81で引用されてるところは、
const char str[5] = "Hello"; とすると、最後に'\0'が入らないから
入ってると思ってprintf("%s\n", str);を使うとうまくいかない
という話だからprintf("%.5s\n", str);に変えてはどうしようもないんだが
ID:Yf5HDNqRには理解できないんだな
>>94
printf("%s\n", str);で文字列の終わりを見つけられてるように見えることもあるけど
それは実装依存うまくいっているだけだから、printf("%s\n", str);で文字列の終わりを
見つけられるということにはならないという例を挙げているわけだが ID:Yf5HDNqRには
理解できないんだな
>>81で引用されてるところは、
const char str[5] = "Hello"; とすると、最後に'\0'が入らないから
入ってると思ってprintf("%s\n", str);を使うとうまくいかない
という話だからprintf("%.5s\n", str);に変えてはどうしようもないんだが
ID:Yf5HDNqRには理解できないんだな
>>94
printf("%s\n", str);で文字列の終わりを見つけられてるように見えることもあるけど
それは実装依存うまくいっているだけだから、printf("%s\n", str);で文字列の終わりを
見つけられるということにはならないという例を挙げているわけだが ID:Yf5HDNqRには
理解できないんだな
2022/09/18(日) 20:57:14.85ID:Yf5HDNqR
> >>81で引用されてるところは、
>
> const char str[5] = "Hello"; とすると、最後に'\0'が入らないから
> 入ってると思ってprintf("%s\n", str);を使うとうまくいかない
>
> という話だからprintf("%.5s\n", str);に変えてはどうしようもないんだが
> ID:Yf5HDNqRには理解できないんだな
「char の配列の最後に'\0'を入れなきゃいけないルールもないのでこれも誤り。」
が読めないか理解できない人か。頭が悪いのは本人の責任じゃないし仕方ないな。
> printf("%s\n", str);で文字列の終わりを見つけられてるように見えることもあるけど
> それは実装依存うまくいっているだけだから、printf("%s\n", str);で文字列の終わりを
> 見つけられるということにはならないという例を挙げているわけだが ID:Yf5HDNqRには
> 理解できないんだな
「と勝手に変えてるし説明もない」という話から、「変更には説明が必要」という
考えの人かな? と思って聞いたのだけど自分は例外なんですねw
>
> const char str[5] = "Hello"; とすると、最後に'\0'が入らないから
> 入ってると思ってprintf("%s\n", str);を使うとうまくいかない
>
> という話だからprintf("%.5s\n", str);に変えてはどうしようもないんだが
> ID:Yf5HDNqRには理解できないんだな
「char の配列の最後に'\0'を入れなきゃいけないルールもないのでこれも誤り。」
が読めないか理解できない人か。頭が悪いのは本人の責任じゃないし仕方ないな。
> printf("%s\n", str);で文字列の終わりを見つけられてるように見えることもあるけど
> それは実装依存うまくいっているだけだから、printf("%s\n", str);で文字列の終わりを
> 見つけられるということにはならないという例を挙げているわけだが ID:Yf5HDNqRには
> 理解できないんだな
「と勝手に変えてるし説明もない」という話から、「変更には説明が必要」という
考えの人かな? と思って聞いたのだけど自分は例外なんですねw
2022/09/18(日) 21:04:50.53ID:Yf5HDNqR
> const char str[5] = "Hello";
が正しいか正しくないかというとC言語的には正しい。
このオブジェクトについて文字列終端に'\0'があることを期待するのが間違いなだけ。
文字列リテラルの話ではないのでそう題するのも間違い。
が正しいか正しくないかというとC言語的には正しい。
このオブジェクトについて文字列終端に'\0'があることを期待するのが間違いなだけ。
文字列リテラルの話ではないのでそう題するのも間違い。
2022/09/18(日) 22:25:24.72ID:JTgtpdd/
>const char str[5] = "Hello"
これは、ヌル終端文字列じゃないので文字列処理できない
これは、ヌル終端文字列じゃないので文字列処理できない
2022/09/18(日) 22:32:33.05ID:JTgtpdd/
Ruby の女神・池澤あやかが言ってるけど、
大学の授業で、C をやるのは無意味。
挫折確率99%・時間の無駄で、何も作れない。
ただプログラミングを嫌いになるだけ。
数年やっても、正常に動くものを作れない
彼女は慶応大学時代に、山陰地方の合宿でRuby on Rails を学んだ
大学の授業で、C をやるのは無意味。
挫折確率99%・時間の無駄で、何も作れない。
ただプログラミングを嫌いになるだけ。
数年やっても、正常に動くものを作れない
彼女は慶応大学時代に、山陰地方の合宿でRuby on Rails を学んだ
100デフォルトの名無しさん
2022/09/18(日) 22:45:20.80ID:JTgtpdd/ これはヌル終端文字列じゃないので文字列処理できない。
最後にヌルが入っていない
char str[3] = "abc";
ヌル終端文字列は以下
char str[3+1] = "abc";
char str[] = "abc";
char *str = "abc";
最後にヌルが入っていない
char str[3] = "abc";
ヌル終端文字列は以下
char str[3+1] = "abc";
char str[] = "abc";
char *str = "abc";
101デフォルトの名無しさん
2022/09/19(月) 04:59:17.86ID:HpZUMwaY102デフォルトの名無しさん
2022/09/20(火) 00:10:31.58ID:qO247GN/ 単位取れる程度に理解はするだろうけど
その後使う確率は0.01%しかないという意味でやるだけ無駄
その後使う確率は0.01%しかないという意味でやるだけ無駄
103デフォルトの名無しさん
2022/09/20(火) 00:23:16.16ID:Xl8EXKtF > 大学の授業で、C をやるのは無意味。
> 挫折確率99%・時間の無駄で、何も作れない。
> ただプログラミングを嫌いになるだけ。
> 数年やっても、正常に動くものを作れない
どっかの誰かが自分のお客さんにそういう話をしてたとして
真に受ける奴が鴨ってだけの話だ罠。
> 挫折確率99%・時間の無駄で、何も作れない。
> ただプログラミングを嫌いになるだけ。
> 数年やっても、正常に動くものを作れない
どっかの誰かが自分のお客さんにそういう話をしてたとして
真に受ける奴が鴨ってだけの話だ罠。
104デフォルトの名無しさん
2022/09/20(火) 00:56:13.57ID:OoIkmPQF ヌル文字要らないと言ってるやつは普段どんなプログラム書いてんだよw
要るだろ
そんなもんコミット許可下りないぞ
要るだろ
そんなもんコミット許可下りないぞ
105デフォルトの名無しさん
2022/09/20(火) 01:02:55.41ID:Xl8EXKtF charの配列は最後の要素に'\0'が入ってないといけないと言ってる人は
charを文字専用の型とか思ってるのかな
charを文字専用の型とか思ってるのかな
106デフォルトの名無しさん
2022/09/20(火) 07:03:47.81ID:OoIkmPQF 文字列リテラルの話をしてるのにアホなごまかし方だなw
107デフォルトの名無しさん
2022/09/20(火) 07:56:08.24ID:OoIkmPQF108デフォルトの名無しさん
2022/09/20(火) 08:51:17.28ID:2fXkGtCj 池澤あやかは馬鹿まで読んだ
109デフォルトの名無しさん
2022/09/20(火) 08:51:48.70ID:a5Fm2nSF 別に例ならああいった変数名避けないけどな。
とくにstrなんかはローカル変数なら使うよ。
その関数やメソッド抜けたら普通にstr使えるから
なにも問題はない。
むしろグローバル関数に被る変数名関数内でも必ず回避してる奴なんかいるんかw
とくにstrなんかはローカル変数なら使うよ。
その関数やメソッド抜けたら普通にstr使えるから
なにも問題はない。
むしろグローバル関数に被る変数名関数内でも必ず回避してる奴なんかいるんかw
110デフォルトの名無しさん
2022/09/20(火) 09:08:28.55ID:2fXkGtCj ID:JTgtpdd/
は説明が下手だから負けてるな
は説明が下手だから負けてるな
111デフォルトの名無しさん
2022/09/20(火) 09:09:42.32ID:2fXkGtCj >>104
Win32API 使ったこと無いのか?
Win32API 使ったこと無いのか?
112デフォルトの名無しさん
2022/09/20(火) 12:23:37.12ID:u0JQyBQ0 Pythonなかなかやべー言語だな変数名が関数をシャドーイングするとかマジかよ
中世のプログラム言語だな
中世のプログラム言語だな
113デフォルトの名無しさん
2022/09/20(火) 12:32:44.50ID:PbMF5IYh シャドーイングしない言語ってあるの?w
114デフォルトの名無しさん
2022/09/20(火) 12:42:34.93ID:u0JQyBQ0115デフォルトの名無しさん
2022/09/20(火) 12:43:31.03ID:u0JQyBQ0 変数と関数は違うものだからなあ別で管理してくれよって思うよなあ
116デフォルトの名無しさん
2022/09/20(火) 12:49:35.43ID:DvwW4DO+117デフォルトの名無しさん
2022/09/20(火) 12:49:59.27ID:PbMF5IYh 細かいことはどうでもいい
シャドーイングが問題になるようなプログラミングはしない主義
シャドーイングが問題になるようなプログラミングはしない主義
118デフォルトの名無しさん
2022/09/20(火) 12:51:48.72ID:u0JQyBQ0 変数を書くときに名前が被らないように全部の関数を覚えておかないといけないんだろ
関数作るときは既存の変数を全部調べて被ってないことを確認しないといけないんだろ
これ無理ゲーじゃね、Pythonのプログラムがバグだらけなのってこれが原因じゃね
関数作るときは既存の変数を全部調べて被ってないことを確認しないといけないんだろ
これ無理ゲーじゃね、Pythonのプログラムがバグだらけなのってこれが原因じゃね
119デフォルトの名無しさん
2022/09/20(火) 12:53:59.59ID:PbMF5IYh 林太ーを使う
120デフォルトの名無しさん
2022/09/20(火) 12:55:16.01ID:u0JQyBQ0 林太はそういうの一番わからないだろ、あいつは元気だけが取り柄のやつ
121デフォルトの名無しさん
2022/09/20(火) 12:57:04.33ID:u0JQyBQ0 せめて.NETのように変数と関数でケーススタイルを変えるとかすればいいのに
122デフォルトの名無しさん
2022/09/20(火) 13:09:41.52ID:vCpD9zCE123デフォルトの名無しさん
2022/09/20(火) 13:21:03.10ID:HlTpV5j1 python は祈りを書き留めるものだから
124デフォルトの名無しさん
2022/09/20(火) 13:40:24.68ID:3+JQhY/d >>118
その程度も覚えられないならプログラマ向いてないよ
その程度も覚えられないならプログラマ向いてないよ
125デフォルトの名無しさん
2022/09/20(火) 13:47:59.73ID:u0JQyBQ0 >>124
しくみで解決しようとしない方がプログラマに向いてないと思う
しくみで解決しようとしない方がプログラマに向いてないと思う
126デフォルトの名無しさん
2022/09/20(火) 13:49:02.39ID:u0JQyBQ0 Pythonの開発者はプログラマに向いてない
GoogleではPythonがたくさん使われているからGoogleはたくさんプログラマに向いてない
GoogleではPythonがたくさん使われているからGoogleはたくさんプログラマに向いてない
127デフォルトの名無しさん
2022/09/20(火) 13:49:55.57ID:u0JQyBQ0 Googleは結局電通だからな
128デフォルトの名無しさん
2022/09/20(火) 17:48:41.14ID:9uDlQujI 関数でも変数でも自由に上書き
__private でも _protected でも自由に上書き
うby よりずっと黒魔術に便利な言語
__private でも _protected でも自由に上書き
うby よりずっと黒魔術に便利な言語
129デフォルトの名無しさん
2022/09/20(火) 19:18:35.00ID:t6sg4YsO 間違ってる記事があったとして、なんでそこまでどうにかしたいんだ?って思う
正義感?
最悪初心者が真に受けたとしても別になんも困らんだろ
発信力ないプロが嫉妬してるとしか思えないな
発信力のないプロの記事ってくそつまんねえんだからしょうがないよ
正義感?
最悪初心者が真に受けたとしても別になんも困らんだろ
発信力ないプロが嫉妬してるとしか思えないな
発信力のないプロの記事ってくそつまんねえんだからしょうがないよ
130デフォルトの名無しさん
2022/09/20(火) 19:27:14.16ID:YGiBFn1k 間違ってないからここまで言い合いが続いてるわけでな
131デフォルトの名無しさん
2022/09/20(火) 21:51:42.04ID:PsJADa91 むしろ問題は無いよ
「ド素人ほど知ったかする」
「にわかなやつほど語りたがる」
ってのはすでに知れ渡ってるから心配ない
ド素人がまたしょうもない嘘記事書いたってだけ
「ド素人ほど知ったかする」
「にわかなやつほど語りたがる」
ってのはすでに知れ渡ってるから心配ない
ド素人がまたしょうもない嘘記事書いたってだけ
132デフォルトの名無しさん
2022/09/20(火) 22:36:26.93ID:/Bvo4oH4 Ruby の仕様で嫌いなのは、
無引数の関数f( ) を、f だけで呼び出せること
この仕様のせいで、
f = 1
と代入すると、ローカル変数になってしまう。shadowing
これがややこしい
無引数の関数f( ) を、f だけで呼び出せること
この仕様のせいで、
f = 1
と代入すると、ローカル変数になってしまう。shadowing
これがややこしい
133デフォルトの名無しさん
2022/09/20(火) 22:46:32.99ID:3+JQhY/d >>125
自分が覚えられないのを人が与えた仕組みのせいにしてる時点で向いてないと言ってるんだよ
自分が覚えられないのを人が与えた仕組みのせいにしてる時点で向いてないと言ってるんだよ
134デフォルトの名無しさん
2022/09/20(火) 22:56:39.16ID:u0JQyBQ0 >>133
Pythonの関数がいくつあるか言ってみろ、はい言えないなじゃあお前も覚えられないじゃないか
Pythonの関数がいくつあるか言ってみろ、はい言えないなじゃあお前も覚えられないじゃないか
135デフォルトの名無しさん
2022/09/20(火) 22:56:50.01ID:u0JQyBQ0 そういうとこやぞ
136デフォルトの名無しさん
2022/09/20(火) 23:04:21.80ID:9uDlQujI builtins を上書きですね判ります
137デフォルトの名無しさん
2022/09/21(水) 08:23:01.72ID:tmH48Op1138デフォルトの名無しさん
2022/09/21(水) 08:28:10.32ID:KMcq8I6w139デフォルトの名無しさん
2022/09/21(水) 18:07:52.08ID:J3mLsQcd140デフォルトの名無しさん
2022/09/21(水) 18:12:44.70ID:E8IgYMeH '\0'終端を前提とした標準および非標準ライブラリのいくつかの関数が機能しなくなるだけで
'\0'終端を前提としていない文字列処理を行う関数は普通に使える
'\0'終端は必須ではない
'\0'終端を前提としていない文字列処理を行う関数は普通に使える
'\0'終端は必須ではない
141デフォルトの名無しさん
2022/09/21(水) 18:45:00.10ID:VZ2CqY7n142デフォルトの名無しさん
2022/09/21(水) 19:30:54.68ID:L/aRoDaz https://qiita.com/nkojima/items/d87ce0cb15dd1a26f21a
> 文字列にまつわる業界ルール
> ・「C言語の文字列に関する業界ルール」として、以下の2つのルールが挙げられていました。
> ・先頭要素から順に1文字ずつ文字コードを格納して文字列を表す。
> ・最後の文字の直後には「文字コード0の文字」を必ず格納し、それ以降のメモリ空間は利用しない。
おかしなルールのある業界がどこのことかはわからんが>>141はそこの人らしい
> 文字列にまつわる業界ルール
> ・「C言語の文字列に関する業界ルール」として、以下の2つのルールが挙げられていました。
> ・先頭要素から順に1文字ずつ文字コードを格納して文字列を表す。
> ・最後の文字の直後には「文字コード0の文字」を必ず格納し、それ以降のメモリ空間は利用しない。
おかしなルールのある業界がどこのことかはわからんが>>141はそこの人らしい
143デフォルトの名無しさん
2022/09/21(水) 19:45:31.81ID:JbDYfiYQ \0使わない縛りでやってる変人もいるんだなとしか
144デフォルトの名無しさん
2022/09/21(水) 19:46:19.70ID:XBvNXDFA qiitaのクソ記事は害悪だよな
ツイッターで偽科学とか偽医療みたいなん吹いて回ってるやつと同じ
ツイッターで偽科学とか偽医療みたいなん吹いて回ってるやつと同じ
145デフォルトの名無しさん
2022/09/21(水) 19:49:43.84ID:XBvNXDFA \0はchar配列をヌル文字終端文字列として使うときだけ使うだけ
char配列自体はそもそも単なる配列
文字列リテラルで初期化できると言ってもそれもまた用途の一つ
char配列自体はそもそも単なる配列
文字列リテラルで初期化できると言ってもそれもまた用途の一つ
146デフォルトの名無しさん
2022/09/21(水) 19:51:40.77ID:XBvNXDFA char label[] = "0123456789abcdef";
putchar(label[n % 16]);
こんなんするとき\0いらんでしょ
putchar(label[n % 16]);
こんなんするとき\0いらんでしょ
147デフォルトの名無しさん
2022/09/21(水) 19:55:00.26ID:Wtb51HDf 文字列を格納する配列なら、
char s[] = "漢字";
でsのサイズが2+\0 = 3になって欲しいわ。
char s[] = "漢字";
でsのサイズが2+\0 = 3になって欲しいわ。
148デフォルトの名無しさん
2022/09/21(水) 20:05:51.97ID:JbDYfiYQ >>146
どこでそんなクソコード使うのか想像持つかんな
どこでそんなクソコード使うのか想像持つかんな
149デフォルトの名無しさん
2022/09/21(水) 21:21:22.03ID:3FNiQLn5 > どこでそんなクソコード使うのか想像持つかんな
自分の狭い知識だけがすべての人ならではの感想
自分の狭い知識だけがすべての人ならではの感想
150デフォルトの名無しさん
2022/09/21(水) 21:36:57.47ID:XBvNXDFA 例が悪かったかなw
コード例無しで言うと
文字通りchar配列で使うときはアスキーコードの最初の方使ったりするでしょ
シリアル通信に使うバッファとして配列を使うとき
別にそんとき\0なんて必要でもなんでもない
コード例無しで言うと
文字通りchar配列で使うときはアスキーコードの最初の方使ったりするでしょ
シリアル通信に使うバッファとして配列を使うとき
別にそんとき\0なんて必要でもなんでもない
151デフォルトの名無しさん
2022/09/21(水) 21:38:25.49ID:y9XFckwg なってほしいもなにも
wchar_t a[]=L"漢字"
でaの_countofは3でしょ。
文字がnull終端ではないC#みたいなのは2系の値になるだろけど。
wchar_t a[]=L"漢字"
でaの_countofは3でしょ。
文字がnull終端ではないC#みたいなのは2系の値になるだろけど。
152デフォルトの名無しさん
2022/09/21(水) 21:54:56.27ID:8neOlhRN >>147
3だぞ
3だぞ
153デフォルトの名無しさん
2022/09/21(水) 21:56:06.76ID:8neOlhRN154デフォルトの名無しさん
2022/09/22(木) 01:54:25.67ID:b3cAfEVs char hoge(unsigned char x)
{
x %= 16;
return (x < 10) ? '0' + x : 'a' + x - 10;
}
char piyo(unsigned char x)
{
static const char hex[16] = "0123456789abcdef";
x %= 16;
return hex[x];
}
↑を1億回づつ実行するベンチマークを戯れにやってみた
https://godbolt.org/z/bnxqeoMs9
{
x %= 16;
return (x < 10) ? '0' + x : 'a' + x - 10;
}
char piyo(unsigned char x)
{
static const char hex[16] = "0123456789abcdef";
x %= 16;
return hex[x];
}
↑を1億回づつ実行するベンチマークを戯れにやってみた
https://godbolt.org/z/bnxqeoMs9
155デフォルトの名無しさん
2022/09/22(木) 11:15:43.05ID:u9/ouAZs >>147
3+3+\0=7 になってくれ
3+3+\0=7 になってくれ
156デフォルトの名無しさん
2022/09/22(木) 11:17:20.26ID:u9/ouAZs >>150
逆に文字列中に \0 を含んでさらに文字が続くことも普通にあるんだが
逆に文字列中に \0 を含んでさらに文字が続くことも普通にあるんだが
157デフォルトの名無しさん
2022/09/22(木) 12:51:30.90ID:NPe2h5TE158デフォルトの名無しさん
2022/09/22(木) 14:23:10.03ID:0ndVcmp/159デフォルトの名無しさん
2022/09/22(木) 16:34:50.62ID:87G6fv6g 「必要に応じて」が理解できないのか場数踏んでないのかどっちかな
160デフォルトの名無しさん
2022/09/22(木) 18:13:55.34ID:q+NntLXQ 不要なものを必要と思ってるあたり圧倒的な経験不足だな
161デフォルトの名無しさん
2022/09/22(木) 19:02:49.54ID:AONuxSGu > 使わねーよそんな計算で出るもの
ライブラリでできることを「計算で出る」って車輪の再発明推奨かwニワカww
char hoge(unsigned x)
{
char s[2];
sprintf(s, "%x", x % 16);
return s[0];
}
ライブラリでできることを「計算で出る」って車輪の再発明推奨かwニワカww
char hoge(unsigned x)
{
char s[2];
sprintf(s, "%x", x % 16);
return s[0];
}
162154
2022/09/22(木) 19:49:05.98ID:b3cAfEVs 昨夜は寝ぼけてた。
C言語の規格では'0'〜'9'の文字コードは連続する決まりなので
0〜9 の値を '0'〜'9' へ変換するのに '0' + x は正しいが、
'a'〜'f'は連続する決まりがないので 10〜15 の値を 'a'〜'f' へ
変換するのに 'a' + x - 10 は正しくない。
char hoge(unsigned char x)
{
x %= 16;
switch (x) {
default: return '0' + x;
case 10: return 'a';
case 11: return 'b';
case 12: return 'c';
case 13: return 'd';
case 14: return 'e';
case 15: return 'f';
}
}
に訂正する。
https://godbolt.org/z/3zKrqj46e
C言語の規格では'0'〜'9'の文字コードは連続する決まりなので
0〜9 の値を '0'〜'9' へ変換するのに '0' + x は正しいが、
'a'〜'f'は連続する決まりがないので 10〜15 の値を 'a'〜'f' へ
変換するのに 'a' + x - 10 は正しくない。
char hoge(unsigned char x)
{
x %= 16;
switch (x) {
default: return '0' + x;
case 10: return 'a';
case 11: return 'b';
case 12: return 'c';
case 13: return 'd';
case 14: return 'e';
case 15: return 'f';
}
}
に訂正する。
https://godbolt.org/z/3zKrqj46e
163デフォルトの名無しさん
2022/09/22(木) 20:02:19.87ID:zQ5LgsLA C言語めんどくさいなJavaは良いぞ
164デフォルトの名無しさん
2022/09/22(木) 20:12:59.40ID:OqPLRehN165デフォルトの名無しさん
2022/09/23(金) 01:11:23.46ID:gD4It3Ab char exts[] = ".txt\0.py\0.c\0.cpp\0\0";
みたいな文字列観ると発狂する人か
みたいな文字列観ると発狂する人か
166デフォルトの名無しさん
2022/09/23(金) 01:46:58.40ID:RwiIrTPM167デフォルトの名無しさん
2022/09/23(金) 07:05:20.97ID:pFWb2JI+ >>166
マジかw
マジかw
168デフォルトの名無しさん
2022/09/23(金) 09:26:51.51ID:esyqbAqH169デフォルトの名無しさん
2022/09/23(金) 09:29:29.12ID:esyqbAqH170デフォルトの名無しさん
2022/09/23(金) 10:08:00.77ID:4W75W0wl >>169
文字列定数のまま使う場合とchar[]に入れる場合じゃ違うだろ。
文字列定数のまま使う場合とchar[]に入れる場合じゃ違うだろ。
171デフォルトの名無しさん
2022/09/23(金) 10:16:26.22ID:Fz6l9635 元記事のnkojimaって人は
【Java】char型はint型にキャストできる
https://qiita.com/nkojima/items/d358f99efa71655911ea
> char ch = '1';
> ですが、char型の「1」をint型にキャストすると、なぜか「49」になってしまいます。
こんなこと書いてる人だからお察しなw
ド素人なのになぜ「【C】初めてのC言語」みたいな記事を書くのか
なんのためにこれを書いてなんのためにネットにあげるのか不可解
【Java】char型はint型にキャストできる
https://qiita.com/nkojima/items/d358f99efa71655911ea
> char ch = '1';
> ですが、char型の「1」をint型にキャストすると、なぜか「49」になってしまいます。
こんなこと書いてる人だからお察しなw
ド素人なのになぜ「【C】初めてのC言語」みたいな記事を書くのか
なんのためにこれを書いてなんのためにネットにあげるのか不可解
172デフォルトの名無しさん
2022/09/23(金) 10:19:46.34ID:di/Vtu7L >>171
初心者が勉強したことを書いてネットにあげることは不可解でない
インプットしたものをアウトプットしたくなるよね
アウトプットしたら学習効率がいいからやってみたらいいよ
記録に残って後日見返せる
初心者が勉強したことを書いてネットにあげることは不可解でない
インプットしたものをアウトプットしたくなるよね
アウトプットしたら学習効率がいいからやってみたらいいよ
記録に残って後日見返せる
173デフォルトの名無しさん
2022/09/23(金) 10:22:29.01ID:Fz6l9635 教わるほうの立場が
教えようとしたらイカンやろって思うけどねw
教えようとしたらイカンやろって思うけどねw
174デフォルトの名無しさん
2022/09/23(金) 10:27:17.39ID:di/Vtu7L Qiitaのいいところは初心者の記事を熱心に読み込んで間違いを指摘してくれるおまえのような良い人がいることだね
学習効率がとてもいい
学習効率がとてもいい
175デフォルトの名無しさん
2022/09/23(金) 10:32:12.71ID:7gKq4Utr それは素晴らしい。
176デフォルトの名無しさん
2022/09/23(金) 10:33:26.45ID:pFWb2JI+177デフォルトの名無しさん
2022/09/23(金) 10:35:29.48ID:7gKq4Utr Qiitaなんてその程度のものだと思いました。
178デフォルトの名無しさん
2022/09/23(金) 10:36:12.39ID:Fz6l9635 ド素人記事はド素人に悪影響だと思うけどねw
それでいいならみんなで幸せになってください
それでいいならみんなで幸せになってください
179デフォルトの名無しさん
2022/09/23(金) 10:36:17.10ID:7gKq4Utr むしろQiitaはそのために作られた気配を感じる。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★3 [ぐれ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 現役猟師・東出昌大、クマ被害続出も過熱する報道に「クマはそんな危ないもんじゃない」理由語る [muffin★]
- ハゲがレジやってるコンビニって
- 4時だから窓から4回ちんこ出した
- クマどもが冬眠拒否
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 姉が爆乳パジャマ姿でうっかりドキドキしてしまった……デカすぎてヤバい
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
