X



C言語なら俺に聞け 148
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (アウアウカー Sacf-slpW)
垢版 |
2018/09/19(水) 17:56:50.83ID:XSTNMnDwa
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言語なら俺に聞け 147
http://mevius.5ch.net/test/read.cgi/tech/1534430162/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0653デフォルトの名無しさん (ワッチョイ e764-66c6)
垢版 |
2018/10/16(火) 23:06:58.82ID:HI3tJEA90
C99時代のhello worldプログラムを考えてみた。

#include <stdio.h>
#include <stdlib.h>

static inline void
print_hello(void)
{
puts("Hello, C!");
}

int
main(void)
{
print_hello();

exit(EXIT_SUCCESS);
}

exit()関数を使ったり、main()関数の中に直に処理を書かないとか色々。
0654デフォルトの名無しさん (ワッチョイ bf9f-pYQO)
垢版 |
2018/10/16(火) 23:31:05.44ID:ZKPc2SIw0
なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
0655デフォルトの名無しさん (ワッチョイ bf9f-pYQO)
垢版 |
2018/10/16(火) 23:35:18.29ID:ZKPc2SIw0
>>653
あれ?それ、コンパイルすると警告出ないか?main()が何も返してないって。
いや、exit()を理解してくれるコンパイラなら何も出ないかも知れないけどね。
0656デフォルトの名無しさん (ワッチョイ e764-66c6)
垢版 |
2018/10/16(火) 23:48:35.20ID:HI3tJEA90
>>655
c99 -O2 -Wall -Werror -Wextra hello.c -o hello
これで無警告だった。
c99はGNU/Linuxだとgcc -std=c99を実行してる。
icc -std=c99 -O2 -Wall -Werror -Wextra hello.c -o hello
でも成功。
GNUのコンパイラでもIntelのコンパイラでもちゃんと処理できるのでいいんじゃないかなぁ。
0657デフォルトの名無しさん (ワッチョイ bf9f-pYQO)
垢版 |
2018/10/17(水) 01:16:05.15ID:GVzdQn3+0
そうだったか。
0659デフォルトの名無しさん (ワッチョイ c7e3-Zu1O)
垢版 |
2018/10/17(水) 01:48:50.18ID:aAn3UH6A0
c99から(とc++も)main()は特別扱いで省略時はreturn 0;と扱われる
とググったらでてきた

なんでmain()だけ?どうせなら関数全てそうしちゃえばいいのに、と思わなくもない
0660デフォルトの名無しさん (ワッチョイ bf9f-pYQO)
垢版 |
2018/10/17(水) 02:29:49.55ID:GVzdQn3+0
なんと。そうだったのか。
0676デフォルトの名無しさん (アウアウカー Sa7b-GU/K)
垢版 |
2018/10/17(水) 12:57:28.62ID:8efdFbKLa
>>675
え?そこに書いてある通りでは?
0679デフォルトの名無しさん (ワッチョイ e764-66c6)
垢版 |
2018/10/17(水) 13:47:12.06ID:MkHFWGSb0
>>653
だれかこれに触れてほしい(自己主張)
C99というかモダンCプログラミングの初歩として
(手前味噌だが)かなりいい感じだと思うんだけどどうかな。

とりあえず今までのhello worldプログラムは
・return文、しかも0固定をmain()関数に書いてしまっている
・main()関数に直に処理を書いてしまっている。
などの理由であまり実際に即していないと思うのよね。
0681デフォルトの名無しさん (アウアウカー Sa7b-GU/K)
垢版 |
2018/10/17(水) 13:59:47.69ID:8efdFbKLa
別にmain()に処理書いてもいいと思うがな。パッと見てわかるぐらいの小ささなら。

まあしかしこれは各個人の信仰の問題であって言語そのものの制限ではない。
そこまでなんとかしたいならそういう言語を作るしかない。
布教活動すれば信者は増えるだろうが相変わらず教義に反する異端者はこの世に存在し続ける。
0682デフォルトの名無しさん (オイコラミネオ MMfb-KnhR)
垢版 |
2018/10/17(水) 14:08:29.78ID:yNGPPWpxM
>>679
hello world に求められることは、できるだけ少ない手数でイメージ通りの結果が得られることだと思うんだ。宗教の前に。
>>653 に込められた思想が分かるようになるのはずっと後。
まあ、ある程度分かるようになってからのお題としてここで議論するのは面白いかもね。
0683デフォルトの名無しさん (アークセー Sx9b-wEhW)
垢版 |
2018/10/17(水) 14:25:03.69ID:JU3vAU4Ix
mainの中にputsの代わりに別関数呼ぶと言うのはビジネスロジックをmainから極力排除するという意図があると推測するけど、最初の一歩としては複雑すぎる。
いきなり最初から関数、inline、static、exitの仕様を理解する必要があるので。
0685デフォルトの名無しさん (アウアウカー Sa7b-GU/K)
垢版 |
2018/10/17(水) 15:16:21.42ID:mC+TJhpha
voidといいsizeofといい、今年は豊作だなw
0686デフォルトの名無しさん (ワッチョイ 4708-I59m)
垢版 |
2018/10/17(水) 15:38:23.06ID:6YtQ5uRO0
b=の書換質問は釣りだったんだな
0687デフォルトの名無しさん (ワッチョイ df9f-5hEM)
垢版 |
2018/10/17(水) 16:16:17.24ID:O9lRBr4Z0
voidくん見てる〜?
sizeof(32)くんて友達出来てよかったねw
0690デフォルトの名無しさん (ワッチョイ 674f-gma9)
垢版 |
2018/10/17(水) 18:18:55.24ID:jwV5Qww90
>>653
>>679
ゴミだね

お前ら初心者はもう少しわきまえた方がいい。
初心者が思いつきで出来る領域はCにはもう残されていない。そういうのがやりたいのならGoやRustに行け。
C99からもう20年近く経つ。
その間、誰もそういうことをやらなかった(或いは、やっても流行らなかった)のは、その必要がないからだ。
今のお前のように、無視されて終わったからだ。

それが何故ゴミなのか理解出来ないうちは、もっとコードを書くことだ。
0691デフォルトの名無しさん (アウアウカー Sa7b-GU/K)
垢版 |
2018/10/17(水) 18:31:08.37ID:bYFTmDwea
半角にするの忘れてるぞ
0692デフォルトの名無しさん (ワッチョイ 674f-gma9)
垢版 |
2018/10/17(水) 18:50:31.41ID:jwV5Qww90
>>691
俺は半角君ではないし、あおり抜きでゴミだって事だよ。
マジでそういうことを世界中の誰も20年間しなかった理由を考えてみろ。

この期に及んでお前らみたいな糞初心者がCに溢れている意味が分からんが、
お前らはどうやらどの言語でも良くて、単に流れているスレに溜まっているだけだろ。
だから無理にでも流れないと不安になるから無駄釣りしているわけでさ。
そういうのも迷惑だから止めろ。
0693デフォルトの名無しさん (ワッチョイ dfeb-AFTh)
垢版 |
2018/10/17(水) 19:22:06.89ID:EXKxlQhR0
マジックNGワード「お前ら」 ※2(5)chの全板共通

釣りレス or 気が触れた方のレス or 玄人ぶった素人のレスなど。
ウザいレスを回避する際に使用します。

参考:
【レス抽出】
対象スレ:C言語なら俺に聞け 148
キーワード:お前ら

抽出レス数:18
0694デフォルトの名無しさん (ワッチョイ 674f-gma9)
垢版 |
2018/10/17(水) 19:59:27.76ID:jwV5Qww90
>>693
お前らが駄目なところはそういう所なんだけどな。
最近パヨクが急速に腐ったのも同じ理由だ。

最近は693みたいに、「俺の希望する意見じゃなきゃイヤ」な奴が多すぎる。
ネットってのはリアル以上にいろんな人がいて、様々な意見を聞ける。
その中で、どんな偏った意見も、探せば出てくる。
フィルタ(ブロック)しまくれば都合がいい意見しか見えない状況が簡単に作れる。
これは昔で言う、イエスマンで周囲を固めた状態だ。一番やってはいけないと言われていたことだ。
そしてそれをやりまくったのがパヨクで、今は世間とずれまくってるだろ。

今の状況で俺をブロックするのなら、お前らはパヨク以下に落ちる。
勿論、俺が言っていることが間違いだらけで、読む価値無しと判断するなら、フィルタするのは自由だ。
しかし実際の所、>>679を肯定的に評価している奴なんて誰もいないだろ。俺が一番はっきり言っただけであってさ。
この状況で俺をフィルタするってのは、お前はパヨク予備軍だって事だよ。

世界中を探して>>679を褒めてくれる奴を見つけだし、そこに移住すれば、君らは幸せになれるだろう。
俺も君らが居なくなって清々するし、有り難いから、そうしてくれれば助かるのだが。
そもそも、この程度でNGが必要な奴はここ(2ch)に来るべきではないし。


まあ、>>693には俺が見えてないはずだから、この話はここで終わりだが。
0695デフォルトの名無しさん (ワッチョイ df9f-5hEM)
垢版 |
2018/10/17(水) 20:06:48.77ID:O9lRBr4Z0
などと意味不明の供述をしており
0699デフォルトの名無しさん (ワッチョイ e764-66c6)
垢版 |
2018/10/17(水) 20:50:17.71ID:MkHFWGSb0
弁明しておくと、俺の >>653 は釣りじゃなくて、まったくの興味というか
こういうプログラムのほうがいいんじゃないかという提案だった。
結果的に荒れ気味になってしまったのはすまん。
(個人的には旧hello worldよりも洗練されていると思うんだけどなぁ……)
0701デフォルトの名無しさん (ワッチョイ 674f-gma9)
垢版 |
2018/10/17(水) 20:58:45.43ID:jwV5Qww90
>>697
お前も何故か必死なんだな。

同一人物でないのなら、単に>>679>>653を褒めてやればいいだけだろ。
そこで「気に入らない意見」(に反論)ではなく、
気に入らない意見を言った「俺」にフォーカスしてくる辺りがパヨク予備軍なんだよ。

実際の所、ネット上には間違ったことを言う奴も多い。それが俺だというのならさておき、
誰も>>679を褒めてないし、20年間世界中でそんな馬鹿なことをした奴が居ないのも事実なんだから、
そのことをふまえて普通に考えれば、>>679がゴミなのは事実だし、自明だろ。

ゆとりはスクラムを組んで連呼し、黒を白だと主張する事がよくあるが、それは明白な間違いだよ。
てゆうか、一体お前らは何がしたいん?
ゴミをゴミだと言われない匿名掲示板なんて、逆に存在価値がないだろ。
腐されたくないだけなら、FaceBookでやるべきだ。
後ろ指さされることはあっても、堂々とゴミだと言われることはあまり無いはず。
それがお前らの望みなんだろ?
(今回の>>675もそう。ここでボロカスに言われることはあっても、直接言われることがないからあのままなのであって)
0702デフォルトの名無しさん (アウアウカー Sa7b-GU/K)
垢版 |
2018/10/17(水) 20:59:31.12ID:OPzCf6X6a
>>699
洗練されているとは思うが学び始めたばかりの初心者に最初に見せるサンプルプログラムとしてはやはり複雑なのではないかと思う。
0703デフォルトの名無しさん (アウアウカー Sa7b-GU/K)
垢版 |
2018/10/17(水) 21:07:03.53ID:OPzCf6X6a
>>701
お前はゴミだ。
0704デフォルトの名無しさん (ワッチョイ 674f-gma9)
垢版 |
2018/10/17(水) 21:44:14.14ID:jwV5Qww90
>>702
褒める気があるのならもっとはっきりと褒めろよ。

>>703
そういうところがお前らの駄目なところだ、と言っているわけだが。
まあ所詮それがゆとりの限界だよな、とは思う。
否定されたことがないから否定されることに過敏なのか?最近この手の輩はよく見かけるが。

しかし、俺をゴミ呼ばわりするお前ですら>>702程度しか言えないのなら、
逆に俺の意見「>>679>>653はゴミ」を補強しているではないか。
俺をゴミ呼ばわりするのなら、もっとベタ褒めしないと筋が通らないだろ。
そのことにすら気づけないのか?
0705デフォルトの名無しさん (ワッチョイ 674f-gma9)
垢版 |
2018/10/17(水) 22:03:17.39ID:jwV5Qww90
>>699
一応マジレスしておく。
ただし技術的な答えは書かない。
これは最近、この手で煽って答えを書かせる輩が増えていると感じるから。
そういう奴らにはエサを与えず、餓死させるのが習いだ。
君のせいではないから、この点は安心していい。

> こういうプログラムのほうがいいんじゃないかという提案だった。
これはいい。
というか、こういうのを自由にやれるところがいいところであって、
逆に、遠慮して何も言えないようなら匿名掲示板の存在価値はない。
だから、思ったことはどんどん言えばいいし、
それについて文句を言いたければ言えばいいし、結果的に荒れても問題ない。
ここは、そういう場所だから。
逆に、FaceBookや実名空間で出来ることをここでやるべきではない。
実名空間で口頭でやった方が手間もかからず早いからだ。

問題は、ゴミをゴミだとはっきり言いきった俺に対して、
言い方が良くない系の言いがかりを付けてくる馬鹿が多いことだ。
匿名掲示板で全員が意見をオブラートに包んで言うようになったら存在価値なんて無くなる。
そもそも、それを求める奴がここに来るのも間違っている。
そんな奴は、少なくともコテハン制の所に行くべきなのさ。
0706デフォルトの名無しさん (ワッチョイ e780-gma9)
垢版 |
2018/10/17(水) 22:07:22.33ID:Ny9Q/0jK0
相変わらず低学歴知恵遅れたちは
超どうでもいいことで
超どうでもいいレスをひたすら書きこんでるわ
0707デフォルトの名無しさん (アウアウカー Sa7b-v5lg)
垢版 |
2018/10/17(水) 22:07:25.85ID:MwWLHD/ka
>>700
言えてる。

CASL2の勉強で1から140までの合計を求めて、その数を文字列に変換するプログラム書いたんだけど、どうよ?
ほら。Cって組込にも使われるじゃん。
printfが無い環境のために良い練習じゃん。
(実際、組込Cでprintf無いけど、キャラクタディスプレイ付ければ文字コードを送ると表示される環境と言うのがある)

なぜ140かと言うと各桁が同じ数字じゃ無いので保存場所の間違いに気付きやすいから。
4桁は合計で出た数の桁数。

キャラクタディスプレイの代わりにputs縛りって事でさ。
0711デフォルトの名無しさん (ワッチョイ 7e5b-PTxd)
垢版 |
2018/10/18(木) 00:56:03.83ID:kg6wANGU0
>>705
でもvoid君はC言語詳しくないじゃん
0714デフォルトの名無しさん (ワッチョイ c34f-tM5n)
垢版 |
2018/10/18(木) 02:29:02.90ID:+6TFZypL0
>>711-712
お前らがC言語に詳しいつもりなら、それなりの見解を添えて>>679>>653に対しての意見を言えばいいだけ。
誰一人として褒めてない(≒俺の意見も正しい)この状況で、
そういうゆとりスクラムでゴネて駄目なものをさも素晴らしいことにしようとするからゆとりは嫌われる。
お前らは自覚出来ていないようだけども。

いずれにしても、ゆとりスクラムなんて誰も得しないから止めとけ。
お前ら自身も学ぶ機会を失っているだけだし。

表面的な言い争いでスレが潰れることはない。
>>679だって、本当にそう思って主張したのだから、それでいい。それで荒れるのなら、それも仕方ない。
ただ、スクラム組んでるゆとりみたいに、自由な意見を排除しようってのは、スレを毀損し、潰す。
だからそれは止めろと言っている。
お前らが望む「どんな糞コードでも褒めてもらえるスレ」は、ここ(2ch)では存在し得ない。
お前らみたいに、自分の意見を全く言わず、ただ他人を馬鹿にしたいだけの奴が居るのも、また事実だから。

ただここら辺、何度言ってもゆとりには通じないところをみると、やはりギャップがある。
俺には、ゆとりが望む「どんな糞コードでも褒めてもらえるスレ」は存在価値が無いと思える。
読んだとしても、全く上達に繋がらず、むしろ道を誤ることになるからだ。
ここら辺がマジで通じないのは何故か、分かる人がいたら、解説願いたい。

ゆとりは今の居心地の良さ、つまり、書いてある内容の正誤より、言い争いのないだけのスレを好む傾向がある。
そして、それが長期的にはスレを殺すことも認識出来ない。実際、それでスレがゴミ化するのを何度も見てきた。
これがゆとりの特性、ってことなのかね?

まあとにかく、誤解無いように何度も言っておくが、
俺自身は653や679のような主張はやりたいのならやればいいと思っている。
そして中身はゴミだという見解だ。
結果的に荒れたようになっているのは679のせいではないから、萎縮する必要はない。
が、誰も褒めないコードを素晴らしいと思えちゃうのは、679に技術的な問題があるんだよ。それは自覚した方がいい。
0715デフォルトの名無しさん (ワッチョイ f364-qPjg)
垢版 |
2018/10/18(木) 03:00:15.26ID:SqeIqpTY0
>>714
指摘あざす。荒れ気味になっちゃったのは残念だけど、俺のコードに関して(賛否関係なく)F/Bを貰えたのは嬉しい。

差し支えなければどの辺りがゴミなのか教えてもらえないかな。今後に生かしたい。
というよりも、既存のhello worldプログラム——つまり
#include <stdio.h>

int
main(void)
{
printf("Hello, C!\n");

return 0;
}
で、(C言語の関数としてはあまりに多機能で異質な)printfを使っていたり
組込み機器向けのプログラムでもないのにmain()関数をreturnで終了していたり
main()関数のなかに直に処理を書いてしまっている点は、問題ないと考えているってことだよね。
これらはこのプログラムを書く初心者にとっては不要な心配だということかな。
0718デフォルトの名無しさん (ワッチョイ 269f-nBLa)
垢版 |
2018/10/18(木) 03:42:00.06ID:CSkK3ONp0
>>714
>>679>>653への意見以外の事を長文で沢山書いてるのは君だ。
もっと自分のやっていることを自分で見た方が良い。
0719デフォルトの名無しさん (ワッチョイ 6ab3-hO2L)
垢版 |
2018/10/18(木) 04:54:24.19ID:iSVWVd6E0
>>713
勝手な妄想?

> c99はGNU/Linuxだとgcc -std=c99を実行してる。
> icc -std=c99 -O2 -Wall -Werror -Wextra hello.c -o hello
> でも成功。

に対して

> -std=c99いらねって
> デフォだぞ今のgccは

って書いたアホがいたって話なんだが w
0722デフォルトの名無しさん (バッミングク MMab-PhZZ)
垢版 |
2018/10/18(木) 06:45:51.12ID:LRx1sLItM
>>715
どちらがより初学者向けかの比較の問題だと思う。
既存のhello worldが今の時代に則して最適とは思わないけど、それにも増して貴方のhello worldがいきなり覚える要素が多すぎて適切じゃない。
ちなみに組み込みを何か勘違いしてるっぽいけど、普通はmainからreturnさえしない。
0723デフォルトの名無しさん (ドコグロ MM3b-hO2L)
垢版 |
2018/10/18(木) 06:47:39.20ID:zbm0s+GWM
>>720
-std=c99
って書いてあるのは

1. > c99はGNU/Linuxだとgcc -std=c99を実行してる。
2. > icc -std=c99 -O2 -Wall -Werror -Wextra hello.c -o hello

の2つ

1. のことを言ってるならc99コマンドの作者に言え
2. のことを言ってるなら精神科か眼科に行け

って話な w
0725デフォルトの名無しさん (ワッチョイ 8b8a-Aaj1)
垢版 |
2018/10/18(木) 07:46:50.50ID:OVQJgcG30
OSが存在しない組込み系ではあり得ないこともない
通常は電源投入後スタートアップルーチンからmain関数を呼び出して電源遮断するまで永久ループ
万一、電磁パルスや放射線等でマイコンが動作しプログラムカウンタの値が狂ってループ外に脱出した場合は強制リセットで再起動

void main(void) {
while(1) {
... // メインループ: 永久ループで脱出不可
}
_asm("JP VECT_RESET"); // 異常発生により強制リセット: スタートアップルーチンへ強制ジャンプ
}
0728デフォルトの名無しさん (ワッチョイ f364-qPjg)
垢版 |
2018/10/18(木) 08:00:46.41ID:SqeIqpTY0
>>726
そうかもしれないが
gnu99とc99はちょっと動作違うじゃん?
と言ってもトリグラフの警告の有無とかその程度だけど。
c99コマンドは-std=c99だけどiccコマンドは-std=c99を明示すべきと判断した。
0729デフォルトの名無しさん (ワッチョイ 269f-eYdq)
垢版 |
2018/10/18(木) 08:38:10.70ID:CSkK3ONp0
>>724
その辺はどう作るかによるだろう。
0732デフォルトの名無しさん (アウアウカー Safb-nHS7)
垢版 |
2018/10/18(木) 09:11:29.09ID:xtVP5nmJa
本当に今年は豊作だ
0733デフォルトの名無しさん (アウアウカー Safb-nHS7)
垢版 |
2018/10/18(木) 09:13:27.72ID:xtVP5nmJa
>>731
そんなもんmain呼ぶcrtの方で無限ループするように作っとけばできるじゃん。
0734デフォルトの名無しさん (アウアウカー Safb-dUTK)
垢版 |
2018/10/18(木) 09:19:15.80ID:qf9NxgCDa
>>707 に誰も挑戦しねーし。。。

千の位は1000で割れば数が出るし、余りが千の位を引いた数だから、今度は百の位、十の位ってする。
各位の数字に16進数の30(文字コードで数字の0)を足すと文字列の完成。
(Cだと末尾に¥0も必要。“0000”とか文字配列作れば自動で挿入される)

大まかなロジック教えれば書けるだろ。
分かってみれば大した事してないんだよ。
0739デフォルトの名無しさん (ワッチョイ 2e23-nBLa)
垢版 |
2018/10/18(木) 11:44:54.60ID:9LQIedmj0
一周まわって、何かあったらどんどんexitするようにしたよ

メモリリークしてるかも? ⇒ 一応プロセス再起動
処理が滞ってきたかも? ⇒ 一応プロセス再起動

便利なOSを使うようになってからどんどん怠ける一方よ
0744デフォルトの名無しさん (アウアウカー Safb-nHS7)
垢版 |
2018/10/18(木) 14:51:32.83ID:G4vijIF0a
C言語は言語レベルではオブジェクト指向はサポートされていない
0745デフォルトの名無しさん (アウアウカー Safb-nHS7)
垢版 |
2018/10/18(木) 14:54:22.85ID:G4vijIF0a
>>743
しかし身に付いても中々メモリリークのバグはなくならないよな。
やはりその辺が心配なら他の言語使った方が良いと思う。
0746デフォルトの名無しさん (アウアウエー Sae2-Tmzw)
垢版 |
2018/10/18(木) 14:58:25.72ID:daUW8tpUa
クソコードに揉まれてクソコード書きになった人も多いから、クソを体験しろとも言えんな…
長い時間かけてデバッグして身についたもんは確かにあるけど、人生は貴重だからな。
0749デフォルトの名無しさん (アウアウカー Safb-nHS7)
垢版 |
2018/10/18(木) 16:28:17.06ID:hfM3a7YWa
誰もがそう思うのだよ。

しかしこの世は思い通りにはならんのだ。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況