C言語なら俺に聞け 154
■ このスレッドは過去ログ倉庫に格納されています
プロセスを都度起動でなく、常駐させる理由を書けば良いと思う >>578
時間指定じゃなくて時刻指定だから
用途に合ってると思ったわけだが 皆さんありがとうございます
>>576 案は実装ムズそう(KONAMI)
>>577 案をまず試してたい、と思っています >>584
うん、すごい
性能も悪いしバカみたいなことを得意げに語るところがw 例外処理っぽいことをやること自体が目的になってる感はあるな。
ある程度のところへ longjmp したら後は return でいいんじゃねーの?みたいな。
goto 使ってもいいしな。 >>585
longjmpが性能悪いわけねえだろ
悪いのはおまえの頭だ >>587
うんlongjmpの性能はたいして悪くないよ
多少悪くてもガンガン呼び出すわけじゃないだろうしね
悪いのはsetjmpとlongjmpの区別もついてない君の頭だと思うw なんでsetjmpとlongjmpの区別って話になるの? おまえ精神分裂病なのか? >>589
longjmpの性能とか言ってるのはお前だけ
妄想性障害かよw >>590
ああ、性能悪いってのはおまえが書くコードのことか
なるほど551でヘボぶりを露呈したやつだからな >>591
これまた意味不明なことを言い出したな
> longjmpが性能悪いわけねえだろ
はどうしたんだよw
あと前の話に噛み付くなら
>> C++の動きもわかってねえな
> 具体的に指摘しなよ
にもちゃんとレスしろよな >>592
人に教えを請う態度ではないな
乞食野郎 お前に教えを請う?w
> まあ出来ないから悪態しかつけないんだろうけど
って書いてあることも理解してないのかよ かすりもしない想像を開陳されても痛くも痒くもねえぜ プログラミングだけでなくプロファイリングもど下手くそだな
頭悪いやつは何やっても同じってことだな > longjmpが性能悪いわけねえだろ
って書いちゃって顔真っ赤になってはぐらかしに必死w 正しいことを言ったのに真っ赤になるわけねえだろアホ
もうテキトーこくしかなくなってやんのw longjmpが性能悪い?
どう悪いのか説明してみ
まあどうせまともな説明できないからまたごまかすんだろうけどw longjumpを使ってループとかしちゃうんじゃないの? 低きに流れて共に暴れる程度の度量もないのか。ケツの穴のセグメントの小さい奴らめ。 GNUのlsのソースで状態遷移を使ったパーサーがあった
なんか自分の知ってる技術が使われてると嬉しくなるな longjumpではなくlongjmpな
gccとclで結構違う
http://codepad.org/cm3uAblb インラインアセンブラで1バイト相対ジャンプ命令使ったとき、
128バイト以上離れても警告されなくて何度もバグったわ。
当時はデバッガー使ってなかったし。 流石にアセンブラソース部分のチェックはしてないと思うが アセンブラで条件分岐するにはジャンプは必ず使う
大抵の条件ジャンプ命令は相対ジャンプ ショートブランチの射程距離ぎりぎりを使うときはうっかりミスなどあり得ない
通常はそんなことになるまでにロングブランチに切り替えるが
それをあえてショートで責める理由があるときは細心の注意を払う インラインアセンブラを使うのはせいぜい数行
それより多かったり分岐を含むのは
インラインじゃない普通のアセンブラ
intrinsicで済むのはintrinsicで
ていう考え インラインアセンブラって何のために使うの?
パフォーマンス的にはコンパイラの最適化に任せておいた方がマシな場合が多そうだけど どうしても SIMD でその部分だけ実装したかった
あとから別のしくみがあることを知った >>614
コンパイラが吐かない命令使いたい時とかデータの特性がわかっててその特性に合わせた最適化したい時とか >>614
今時のCPUは最適化のためのルールが複雑で人の手に負えないからコンパイラ任せの方が大抵いいけど、昔はそうでもなかった。
まあそこまでキリキリにチューニングしたいならインラインアセンブラなんかじゃなくアセンブラで書く方がいいと思うけどね。
最適化以外だと、地味にローテートを多用するアルゴリズムだとアセンブラでやりたくなるよね。
他には、alloca とか longjmp とか効率のいい排他処理みたいな類いのアセンブラじゃないと書けない処理もあるし。 ウイルス作るのに必要
データを実行したり、投機実行を狙って特権の必要な命令を配置したり このスレのみなさんは逆汗したら判るんですか
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* cの関数の場合関数内でintを生成してそれに数値を代入してreturnして
戻った先で戻り値を使うことができる。そのままでdeleteする必要はない。
同じようにストラクチャでもできるの?
typedef strudt{ char x,y;] XY;
XY func(){
XY a;
a.x =1; a.y = 2;
return a;
}
void main(){
XY xy = func();
} int bitcount(int32 val){
ct = 0;
for(int i = 0; i < 32; ++ i){
if( val>>1)++ct;
}
return ct;
} int bitcount(int32 val){
ct = 0;
for(int i = 0; i < 32; ++ i){
if( val & 1) ++ct;
val >>=1;
}
return ct;
} >>622
先頭の pop ax で何が入ってくるのか分からなくて挫折したw
でもテキストな実行ファイルなら前にこんなの作ったよ。
https://dotup.org/uploda/dotup.org2114206.zip パスワード C
MSDOS用で 64bit windows上じゃ動かせないけど、DOSBOX とかで試せる。
C と関係無いしダウンロードしてまで見るのは面倒だと思うけど、見てもらえればちょっとは面白いかも。 >>624
a[i] = ( a[i] << 1) | ( a[i] >> 31);
って書いて普通にコンパイルしてみたが…
roll というのはローテート命令かい?
gcc で特に最適化は指定しなかったが。 >>626
できるよ。
正確には関数が持ってた構造体(funcのa)を戻り先の構造体(mainのxy)へ代入している感じ。
構造体はコンパイル時にサイズが決まるのでintとかの値と同じようにコピーができる。
https://wandbox.org/permlink/AIZ0DCmCSZJpFhE1 >>631
ほんとだ、シフト数を変数にしてもちゃんとローテートになるね。
すごいね。 >>633
ポインタで返さないなら、つまり関数内でメモリ確保したストラクチャでも値そのものを返すのであれば、受け取った側でdeleteしなくてもいいの?
typedef strudt{ char x[10000], y[10000];] XY;
XY func(){
XY a;
a.x =1; a.y = 2;
return a;
}
void main(){
XY xy = func();
} >>636
その a のためのメモリはスタックフレーム上に確保されてて、関数から return すると黙ってても消えて無くなる領域だから、
new とか malloc なんかでヒープ上に確保するメモリと違って delete とか free とかはいらない。
関数 func を呼び出してる間、xy の領域と a の領域は同時に存在し、return するときに a の内容を xy にコピーして、a は func のスタックフレームと共に消滅する。 int main(){
int a = 1;
return a;
}
これと一緒 うつりにけりなわが値
やがてすべてが過ぎ去るあとも
あなただけを想う >>638
なるほど!!よくわかりました。
関数はreturn値を呼び出し側にコピーして実行完了となりstackを開放する。
local 変数はstack上に作るので実行完了まではlocal変数の内容は保持される
が実行完了で自動的に消滅する。
ということですね。 常識過ぎてデフォルトコピーコンストラクタみたいな盲腸がC++に埋め込まれてしまったんだよ
あくまでC言語の中でコーダーが工夫し不便を乗り越えてた常識なのにね >人間の虫垂は、親知らずや体毛と同じように、かつては必要とされていたが今は
>なくても問題なくやっていける器官と考えられいた。
>しかし、虫垂がかつて何をしていたのか、また実際にいま用無しなのかについては、
>これまで明確になっていなかった。そんななか、米ミッドウェスタン大学の研究者が
>主体となった研究が発表され、この問題にひとつの答えが提示された。虫垂は、
>免疫細胞の反応を促し、有益な腸内細菌(善玉菌)が減少するとこれを増やすという
>二次的な免疫機能を担っているという。この役割は限定的な形ながら、いまも人間
>の体内で継続して機能している。
https://www.kagaku-kentei.jp/news_detail/data/355
むだなものなんて一つもない >>644
進化退化の結果、無駄になっちゃったものなら結構あるよね
ケツ毛とか、人差し指から小指までの腱間結合とか 虫垂炎で虫垂取っちゃった人はコロチャンに弱いってことかな >>645
環境が変化した場合に再度必要になるかも知れないのでなんとも言えない。
地球の自然環境は変化し続けるしね。 >>646
この世界全体が無駄と言えば無駄だな。
まあしかし人間は自分の欲望を満たすものに対して無駄がないと感じるだけのことなので、
欲望がなくなればそれもなり全てはあってもなくても良いどうでも良いものになる。 4(C)言語、5(GO)言語とおすすめwebフレームワークが増えるの?
6言語は何? >>646
こういう悟り厨ほど自分が死ぬときにはめちゃくちゃ言い訳しまくるもんよ。 英小文字の出現回数を出現した文字だけ数えたいのですがうまくいきません
ご指導お願いします
#include <stdio.h>
int main(void) {
char ch;
int cc[26] = {0};
int i;
for(;(ch=getchar())!=EOF;){
if((ch>='a')&&(ch<='z')){
cc[ch-'a']++;
}
}
for (i='a'; i<'z'; i++) printf("%c:%d\n", i, cc[i+'a']);
return 0;
} 出力の箇所
× printf("%c:%d\n", i, cc[i+'a']);
○ printf("%c:%d\n", i, cc[i-'a']); それともう一つ
char ch ; は
int ch; にした方が良い https://paiza.io/projects/z-ohjvsIhSR6X_lC8q7MKA
コンパイルが通りません。
どこが悪いか教えてもらえないでしょうか。
-Iと-Lの使い方や、regexのコンパイル?(.a)の指定方法等を調べてみたのですがわかりません。
C:\clang>gcc -I "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\include" -L "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\lib" filename.c
C:\Users\maru\AppData\Local\Temp\ccgTVd7X.o:filename.c:(.text+0x75): undefined reference to `regcomp'
C:\Users\maru\AppData\Local\Temp\ccgTVd7X.o:filename.c:(.text+0xf0): undefined reference to `regexec'
C:\Users\maru\AppData\Local\Temp\ccgTVd7X.o:filename.c:(.text+0x19a): undefined reference to `regfree'
collect2.exe: error: ld returned 1 exit status
libregex.aとregex.hは上記pathに存在します。
環境:
windows10 64bit
gcc version 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)
mingw-w64-install.exeで64bit版をインストールしました。 >>666
ありがとうございます!
あと、入力されてない文字を出力したくないんですが
もう一つご教授願います! 「入力されてない文字を出力したくない」のだから
出力するところにその条件を書けばよい
自分でデバッグしないと身につかないよ >>668
「ライブラリとして libregex.a も使うのでリンクしてくれ」と教えるために
-lregex と書かなきゃいけないんじゃないかな。
> gcc -I "..." -L "..." filename.c -lregex
ってな感じ。 >>671
C:\clang>gcc -I "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\include" -L "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\lib" filename.c -lregex
コンパイルと実行ができました。
c言語の勉強を始めて間がないので、かなり困っていました。
先へ進めることができます、ありがとう。 どの言語かなんて聞いとらん。
お前のpushでゾンビプロセスになったんだ。速く直せ OSのプロセス管理による
C言語固有の問題ではない ■ このスレッドは過去ログ倉庫に格納されています