C言語なら、オレに聞け! <4>
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001ジョブス3.1世
NGNGC言語しか知らないがC言語なら誰にも負けない...
なんでも俺に聞くが良い。
だが、FAQに載ってる質問すると煽るぞ、ゴラア!!
それに勘違いするな、俺は貴様の宿題を解いてやるほど暇じゃない。
・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html
・C FAQ 日本語訳
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/C-faq/C-faq-00.html
前スレ、関連スレは >>2 へ
0002ジョブス3.1世
NGNG関連スレ
・( ゚Д゚)ノ ギコ猫のプログラム相談室part5
http://piza.2ch.net/test/read.cgi?bbs=tech&key=980521175
・お兄ちゃんの宿題、私が答えるよ
http://piza.2ch.net/test/read.cgi?bbs=tech&key=982853418
・VisualC++相談室 2
http://piza.2ch.net/test/read.cgi?bbs=tech&key=981630730
・C++Builder相談室
http://piza.2ch.net/test/read.cgi?bbs=tech&key=969458279
・C++相談室
http://piza.2ch.net/test/read.cgi?bbs=tech&key=980175292
・C#相談室
http://piza.2ch.net/test/read.cgi?bbs=tech&key=977112364
・ネットワークプログラミング相談室
http://piza.2ch.net/test/read.cgi?bbs=tech&key=970344582
過去スレ
・C言語なら、オレに聞け!
http://piza.2ch.net/tech/kako/967/967985026.html
・C言語なら、オレに聞け! <2>
http://piza.2ch.net/test/read.cgi?bbs=tech&key=979529893
・C言語なら、オレに聞け! <3>
http://piza.2ch.net/test/read.cgi?bbs=tech&key=989929288
0003ジョブス3.1世
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG信号処理でも0近傍は0に丸め込んだほうが量子化ノイズが抑え
られるので正しいような気がするが…
0007デフォルトの名無しさん
NGNG正しい正しくないは無い。
自分の作成するプログラムにとって必要と思えば採用すればいい。
組み込み系で、細かいデータの集積が必要とかいうなら入れればいいし、
一回一回のデータは単発で累積してどうこうってわけでもないなら入れなくてもいいし、
統計的に誤差を無くす手法なわけだから、そこらへんは設計者として判断しろ。
0008たっくん
NGNGDIBのデータ構造はウインドウズでもリナック巣でもマックでも
同じ構造をしているのでしょうか?
0009デフォルトの名無しさん
NGNG意味が分からない。
何のデータ構造?ファイル?
0010中途半端くん
NGNGhttp://www.sm.rim.or.jp/~shishido/dib1.html
0011デフォルトの名無しさん
NGNGところで日本語FAQに載っている曜日を計算するサンプルの
アルゴリズムが理解できない。誰か解説キボンヌ。
dayofweek(y, m, d) /* 0 = Sunday */
int y, m, d; /* 1 <= m <= 12, y > 1752 or so */
{
static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
y -= m < 3;
return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}
0012デフォルトの名無しさん
NGNGいや、3.11 か 95 だと思われる。
0013中途半端くん
NGNGツェラーの公式を少し手抜きしたものでしょう
こういうの(y,m,d,wはint型で)
if(m<2){y--;m+=12;}
w = ( y+y/4-y/100+y/400+(13*m+8)/5+d ) % 7;
0014中途半端くん
NGNGまちがえた!!m<2 じゃなくて m<3ね
if(m<3){y--;m+=12;}
w = ( y+y/4-y/100+y/400+(13*m+8)/5+d ) % 7;
0015デフォルトの名無しさん
NGNGこの問題を解くプログラム誰か作ってください。
0016デフォルトの名無しさん
NGNGfp = fopen( hogehoge, "rb");
fseek( fp, 0, SEEK_END);
ftell( fp);
簡単に思いつくのはこれなんですが
unix 以外では正しくないんだとか
古いのはみんな切り捨ててもいいんですけども
stat か GetFileInformationByHandle ... めんどうくさいです
0017デフォルトの名無しさん
NGNGDOSでもWinでもその方法やってきた。
正しくないことはないだろ、原始的だけど
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGそれと、C言語の仕事ってどんなものがあるのでしょうか?
0020初めての・・・
NGNG「C/C++できる人」というのは、
CとC++、両方できる人のことですか?
確かCとC++は別物だったハズ・・・
将来のためにC始めようと思うのですが。
良かったら教えてください。
0022デフォルトの名無しさん
NGNGstat(2)のstat構造体にファイルサイズがそのままあるだろ
0023ネタにマジレス
NGNGstat(2)はCの標準関数にはない
ちなみにC FAQ 19.12:では
http://www.catnet.ne.jp/kouno/c_faq/c19.html
> もしも"ファイルの大きさ"が、C言語を使ってファイルから読むこと
> のできる文字の数ということであれば、一般にはこの数を前もって知
> ることは不可能である。
とある。
0024ネタにマジレス
NGNG> ftell()はバイナリーファイルを除いては正しくバイト数を返すとは限らない。
>>16 の例は
バイナリモードで開いているので正しいバイト数を返してくれる
すなわちファイルサイズを返してくれる。
と期待して良いと思う。
0025デフォルトの名無しさん
NGNG需要:かなり有る
仕事:いろいろある
0026デフォルトの名無しさん
NGNGPOSIX.1にはあるんで、現状WinNTやフツーのUnixなら問題無いんでは?
0027とし
NGNG0028デフォルトの名無しさん
NGNGアルゴリズムを練り上げるべし
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNGmemmove
memcpy
strcpy
strcmp
これを関数使わずにCで書ける人、やってみてください。
0031デフォルトの名無しさん
NGNG自分でやれ
宿題か?
0032デフォルトの名無しさん
NGNG#pragma intrinsic( memset, memcpy, strcpy, strcmp)
ほら、4/5はできたぞ。あとはmemmoveだけだな(ワラ
0033デフォルトの名無しさん
NGNGCとC++の間にJavaを入れとくといいと思う
0034デフォルトの名無しさん
NGNGfor&ifかswitchかmemcmpのどれがいいと思いますか?
>1 前回から一ヶ月も経っていないのに4かぁ〜。
がんばれ
0035デフォルトの名無しさん
NGNGsscanf
0036デフォルトの名無しさん
NGNGflex
0037デフォルトの名無しさん
NGNG{
int a = 10;
int b = 12;
cout << a << b << endl;
return 0;
}
エラーがでるのですがどうしてでしょう?
本に書いてあるとうりに打ち込んだのですが。
0038デフォルトの名無しさん
NGNGプログラムの読みやすさや、計算にかかる手間などは
どう違うんでしょうか?
0039デフォルトの名無しさん
NGNG/***** c[n][n] は予め0で初期化 *****/
for (i = 0; i < n; ++i)
for (j = 0; j < n; ++j)
c[i][j] += a[i][j] * b[i][j];
こんなんでいいの??
無い頭をどう捻ってもこれで行列の積が求まるとは
思えないんだけど…
0040デフォルトの名無しさん
NGNGていうかお前位相の定義わかってるか?
わかってないならその単位はあきらめろ。
位相がわかってないやつに数学科を卒業させてやるわけにはいかない。
わかってるならそれをちゃんと説明して、
プログラムでどう実装すればいいか聞いてみろ。
#純粋数学やってないひとに単に位相って言うと、波の位相だと
#思われるのがオチ。
004115
NGNGおまえに卒業させてもらうわけじゃないぞ
こたえる気ないのならだーってろ!!
0043デフォルトの名無しさん
NGNGb[i][j]をb[j][i]と間違ってるか
bがあらかじめ転置行列にしてあるのかどっちかじゃない?
004437
NGNGそれは入れてます。でもエラーがでるんですが...
0045デフォルトの名無しさん
NGNGとりあえず、どんなエラーが出たか、書けや。
0046デフォルトの名無しさん
NGNGその一言はきっと数学知識のある貴重なプログラマの反感を買ったのだな。
0047デフォルトの名無しさん
NGNGアッヒャッヒャッヒャhyaハ
0048デフォルトの名無しさん
NGNGfj.comp.lang.c で訊けば、坂本氏本人が教えてくれるかもね。
0049デフォルトの名無しさん
NGNGどうやってポインタが指す内容を操作してるの?
voidのままではポインタ操作できないのでキャストしなければ
いけないと思うけど、キャストする型が判別できないし・・・
0050へたれ
NGNG>>44
本の通りに打ち込んだということから言語に触れて間もないと思う。
インクルードファイルのフォルダ指定が間違ってるとか・・・。
使ってるソフトとかは何かな?VC++とか使ってるならそれは無いと思うけど。
で、endl って何?C++はほとんど知らんし・・・。
一応うつしてやってみたけど問題なく終了。実は;が:になってるとか・・・。
何はともあれエラーがわからなければ、何がおかしいかわかんないよ。
>>38
連結リスト(であってると思う)を使う時は
再帰使ったほうが解放させるときの処理が簡単に書けるから再帰使ってる。
俺の意見は参考にならんと思うけど一応。
0051sage
NGNG三番目の引数と四番目の引数が
なにを意味するか考えてみるべし < qsort
0052デフォルトの名無しさん
NGNGCには、そんな命令(関数)はありません。
もし、あなたの環境がCなら出来なくて当然ですし、
C++なら、スレ違いなので、そっちに行って聞いて下さい。
0053デフォルトの名無しさん
NGNG+= なの? ただの = でいいんじゃない。
005416
NGNGレスありがとうございます。statつかえばいいのですけど system-depend な
定義に少し食傷気味といいますか、、なんとか C 標準で書けないものかと
お知恵拝借いたしました次第です。
C の規格自体がもう古いので何かしようとするとキツイ制限にはまって
しまいますが、かといって広い環境でサポートされて高速に動くのは C
くらいしかないかなとジレンマに陥ります。
>>24
バイナリストリームなら期待したように動作するのでしょうか?
それなら解決です。でも何やら気になる一文があるのですが...
これってバイナリやステート依存なストリームには SEEK_END は undefined
behavior なのでしょうか...? (英文は苦手です・涙)
>>26
やはり POSIX を標準として書くべきでしょうか..
スレッドもマップトファイルも C 標準ではもはや無理ですし..
規格書の気になる一文(ISO-C99N896 302p)
>211Setting the file position indicator to end-of-file, as
> with fseek(file, 0, SEEK_END), has undefined behavior for
> a binary stream (because of possible trailing null
> characters) or for any stream with state-dependent
> encoding that does not assuredly end in the initial shift
> state.
0055デフォルトの名無しさん
NGNG一般のストリームと言うことになるとSEEK_ENDは未定義かもしれんが、
まぁファイルなら大丈夫だろう、と言ってみるけどよく知らん。
0056デフォルトの名無しさん
NGNGどうすればいいのでしょう?
ファイルは
12,45,30,11,0,.....
2,6,4,100,55...
3,41,67....
こんな形で、カンマがあってうまくいきません。
たすけて。
0057デフォルトの名無しさん
NGNG> ファイルに書かれた数字を行ごとに2次元配列に読み込むには
> どうすればいいのでしょう?
次元数が決まっているなら
fscanf(fp, "%d,%d,%d\n", ary[n][0], ary[n][1], ary[n][2]);
決まっていないなら
fgets, strtok, atoiなどを駆使して自分で書け
0058デフォルトの名無しさん
NGNGどんな風に格納するかわからんが
fscanf(fp,"%d,%d,・・・",&a[0][0],&a[0][1]・・・);
が一番簡単
0059デフォルトの名無しさん
NGNG解決しそうです
ありがとうございます
0061デフォルトの名無しさん
NGNGCを5年やってて気付かなかったYO・・・
死なないとダメかな?
でも今死ぬと3億のプロジェクトが・・・・うみゅー
0062荒らし
NGNG0063荒らし
NGNG0064荒らし
NGNG0065荒らし
NGNG0066荒らし
NGNG0067荒らし
NGNG0068荒らし
NGNG0069荒らし
NGNG0070デフォルトの名無しさん
NGNGしねや
0071デフォルトの名無しさん
NGNGしねや
0072デフォルトの名無しさん
NGNGしねや
0073デフォルトの名無しさん
NGNGしねや
0074デフォルトの名無しさん
NGNGしねや
0075デフォルトの名無しさん
NGNG007615
NGNGわりーかよー
やめてほしかったら問題とけよー
0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNG荒らしてるヒマがあったら勉強しろ。
0079デフォルトの名無しさん
NGNGhttp://piza.2ch.net/test/read.cgi?bbs=tech&key=991726421&nofirst=true&st=16&to=16
008015
NGNGうっせーなー
おめーなんかにきーてねーよ
0081デフォルトの名無しさん
NGNGうっせーなー
おめーなんかにようはねーよー
もーくんなよー
たんいおとしてくびになっちまえよー
0082デフォルトの名無しさん
NGNG邪魔だから消えろ
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNGスレ違い
0085デフォルトの名無しさん
NGNGわかりました
逝ってきます
008615
NGNG怒ってごまかすからむかつく。
自分もできないって素直に言えないのかなー
0087デフォルトの名無しさん
NGNGごめんなさい
できないです
だから ここにこなくてもいいです
サヨウナラ
0088デフォルトの名無しさん
NGNG答えが返ってこない=わからない
としか考えられない想像力の欠如した人間はこの板には不要です。
さっさと回線切って首吊ってください。
0089デフォルトの名無しさん
NGNG1.簡単すぎて答えるまでもない
2.答えを書いてしまうとネタとして面白くない
3.課題を他人にやってもらうような奴に単位をやる必要はない
0090デフォルトの名無しさん
NGNGまず自分が率先してやりましょうね
0091デフォルトの名無しさん
NGNGいや、ASCIIコードとかでなくて、7→'7'/"7"みたいな。
厨房な質問ですんまそん
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNGint i = 7;
char c = '0' + i; /* あまり行儀はよくない */
char s[2];
sprintf(s, "%d", i);
0094>>92
NGNG0096デフォルトの名無しさん
NGNG>char c = '0' + i; /* あまり行儀はよくない */
なぜこれが行儀良くないの?普通では?
0097デフォルトの名無しさん
NGNG文字コード体系に依存するから。
'0'の次が'1'であることは言語仕様としては保証できっこない。
0098デフォルトの名無しさん
NGNGchar c = numbers[i];
009996
NGNG------------- X3010 5.2.1 文字集合 (一部抜粋)---------
10個の10進数字, 0 1 2 3 4 5 6 7 8 9 について
0の右側に並んでいる各文字の値は,一つ左側にある文字の値に
比べ1だけ大きくなければならない。
------------------------------------------------------
ってなことが規格で決まってるよ。つまり数字の値は連続している
と決め付けていい。
ただし、アルファベットは連続しているとは限らない。
たとえばEBCDICではアルファベットは切れている。でも
数字はやはり連続している。
K&Rの28pにも「幸いこれはどの文字セットにも当てはまる」
と書いてある。
0100デフォルトの名無しさん
NGNGざっと見た所では、98が1番良いように見える。
これなら、10進数以外にも適用出来るし…。
ただ、一度でも、printf系を使用しているプログラムで、
それ程、高速性を求めないのなら、sprintfでも良いかと…。
010196
NGNGでいいんじゃないの?
98のは10進数なら
const char numbers[10] = "0123456789";
だな。
0102デフォルトの名無しさん
NGNG相手が特別な環境を指定してない限り
そこまでこだわらなくてもいいと思うんだが?
個人が趣味や勉強、仕事でちょこっとやる程度のもので
環境依存をごちゃごちゃ言うのはみっともないと思うのは俺だけか?
・・間違ってはいないとは思うが、そこまで言う必要はないと思うということでね
0103デフォルトの名無しさん
NGNG> 個人が趣味や勉強、仕事でちょこっとやる程度のもので
> 環境依存をごちゃごちゃ言うのはみっともないと思うのは俺だけか?
趣味や勉強が高じてプログラマとなった場合、
環境依存を考慮しないプログラマ、動けば良いと考えるプログラマは困る。
また、ある質問から議論が派生するのは有意義だとは思わないかい?
# 議論はスレッドを分離すべきだとかいう意見はともかく
0104デフォルトの名無しさん
NGNG有意義だとは思うし、将来のためではあると思うけど、
なんか全体に「考えないやつはダメ人間」みたいな口調が
多い気がして・・・考えすぎか?
意見交換になっている部分は勉強になるし、俺知らなかった!と
いうのもあるから嬉しいんだけど
0105デフォルトの名無しさん
NGNGLinuxで標準入力バッファをクリア(破棄)する方法をご存知の方が
いればアドバイスをお願いします。
0106デフォルトの名無しさん
NGNGscanf("%*c", &c);
0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNG0109デフォルトの名無しさん
NGNG>環境依存をごちゃごちゃ言うのはみっともないと思うのは俺だけか?
普段の生活でズボラなコードを書いているからこそ、こういう
オープンな場で話したりするときくらいはしっかり高尚にやるべき、
って気がする。個人の趣味(MFCの好き嫌い)とかはともかく、規格に
書かれてることとかはさ。
011020
NGNGレスどうもです。
C→Java→C++の順が理想みたいですね、ありがとうございます。
ところで、賛否両論ありそうですが、ソフトは何を使った方がいいんでしょうか?
VC++買えばCとC++両方できるって聞いたんですが・・・
教えていただけるとありがたいです。
・・・Javaをやるなら、それも買わなきゃいけないんですねぇ・・・金が・・・
0111デフォルトの名無しさん
NGNGの主張もわかる。
オレが仕事で関わっている環境も、至れり尽くせりなので
ここで論じられている慎重で繊細なコードも参考程度に過ぎ
ない。でも、未知の世界を知る上で重宝しているし勉強になる。
また、2chでの投げやりでツッケンドンな発言は、方言のような
感覚で慣れてしまった。メールアドレスを原則的に公開する掲
示板ならもっと紳士的なところもある。
0112デフォルトの名無しさん
NGNGBCCかGCCならタダだよ。
CもC++もできる。
Javaもタダでできますよ。
011320
NGNGGCCってなんですか?
聞いたことがないのですが
0114デフォルトの名無しさん
NGNGこーゆー書き方こそ理想だって感じの
0115デフォルトの名無しさん
NGNG少なくともプログラマとしては。
0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNGGNU CC を知らんのか。ゴルア
ttp://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.8.1/gcc_toc.html
0118デフォルトの名無しさん
NGNGgccをキーワードにして検索エンジンで検索をしてみよう
検索しないと「教えて君」のレッテルを貼られるぞ。
http://www.sra.co.jp/wingnut/gcc/
>>114
> C言語のお手本のようなソースってどこかにありませんか?
K&Rにのってるソース
C言語を作った人が書いたソースなので一番信頼できると思う。
0119デフォルトの名無しさん
NGNG自然に (経験的に) 良いコードと悪いコードを見分けられる
ようになるのが理想だったりしますか?
0120デフォルトの名無しさん
NGNGワカルなら教えて!!
0121デフォルトの名無しさん
NGNG本当に参考にしたい情報に選択肢が無いこともある。
MSのSDKのサンプルも、ものによって設計思想やら書き方やらが違うので、
調べたい件についてのサンプルが自分とは根本的に違うスタイルだったりして、
泣きそうになりつつもそれを解析する羽目になったり。
0122デフォルトの名無しさん
NGNGGlobalComunicationClub
>114
#include<stdio.h>
int main()
{
printf("aho\n");
return 0;
}
0123デフォルトの名無しさん
NGNGstdin ストリームからの 1 バイトの取得 とのことなんですが、
以下のプログラムではa,bの値を入力からとって、その和をcに入れ、
リターンを入力してからcを表示させ、リターンを入力させて終了させたいのですが、
getchar()がそのように動いてくれないのは何故ですか?
それからこれを回避するにはどうすればよいでしょうか?
main(){
int a,b,c;
printf("Input a b ");
scanf("%d %d",&a,&b);
c = a + b;
getchar();
printf("%d + %d = %d\n",a,b,c);
getchar();
printf("end\n");
}
0124デフォルトの名無しさん
NGNGc=a+b
の下に
fflush(stdin);
を入れましょう。
0125デフォルトの名無しさん
NGNG厨房な質問ですいません
0126デフォルトの名無しさん
NGNGスタンダードインプット?
スタンダードアウトプット?
みたいな?
て感じ?
0127デフォルトの名無しさん
NGNGstdoutが標準出力です
何も指定していなければ、
stdinはキーボード、stdoutは画面をさす事が多いです。
組み込み系は……とかいう話はおいといて。
0128デフォルトの名無しさん
NGNGfflush()は出力ストリームに対して使うものであり,
入力ストリームには使えません. 規格では, 入力ストリームに
対するfflush()の動作は未定義になっています.
(完全征覇79ページ)
…ってことらしい。
0129デフォルトの名無しさん
NGNG入力ストリームに対しては,その効果は不定である。
プログラミング言語C 第2版 より
0131sage
NGNGscanf("%d %d",&a,&b);
じゃなく
scanf("%d %d ",&a,&b);
にしとこうね
0132名無し
NGNG1回目のgetcharはこれで代替できるでしょ?
scanf("%d %d\n",&a,&b);
2回目のは・・・
0133デフォルトの名無しさん
NGNG2回getcharしておいたら?
ちなみに、VC++だとfflushはstdin
でもOKのはず。ヘルプ見たけどちゃんと
定義されてた。
BCCでも試したけどこれもOKだった。
0134デフォルトの名無しさん
NGNG入門書を読み終わった後に読むのに適した
ソースコードってどっかにありませんかね?
入門書にのってるやつはちょっと短すぎる気が・・・
0135sage
NGNG良い心行きだね。
libcあたりのコードでも読んでみるといいかも。
精読は無理だし無駄だから、
自分の理解できそうなコードを探して読もう。
それぞれの関数の仕様は、infoなりmanなりMSDNなりに
載っているから、あとは、コードを読むだけだよ。
0136>39
NGNGfor (i = 0; i < n; ++i)
for (j = 0; j < n; ++j)
for (k =0; k < n; ++k)
c[i][j] += a[i][k] * b[k][j];
じゃなかったっけ?
0137デフォルトの名無しさん
NGNGゲーム ソース C とか
ゲーム ソース トランプ とか
適当に検索するとソース付きのが結構あるよ。
カードゲームとか簡単なのを見つけて、
ちょっとずついじってみるのが楽しいと思う。
実際に動かせるってのは何より楽しいから。
0138134
NGNG素早い解答ありがとうございます。
しかし、libcあたりのコードといわれてもよくわからんのですが・・・
googleで検索かけてみたんですけどイマイチです。
厨房ですみません。
>>137
どうも。確かにけっこうありますね。
こんなの見てるとテトリスでも作ってみたくなりました。
でも何を勉強すればいいんだろうか。
0139123
NGNGfflush(stdin)がscanfの入力にかかわらずきちんと動いてくれるのですが…
0140デフォルトの名無しさん
NGNGを使わずに、入力して、5を入れるのは、どうすればよいのでしょう?
int N;っているのかな?
0141sage
NGNGhttp://nephtys.lip6.fr/ftp/pub/linux/mips/libc/src/
たとえばだけど、ここにあるのが GNU版libc(glibc) のソース。
でかいからといって躊躇せず、
落として、読んでみよう。
memcpyとかstrcpyとかprintfとか
普段君が使っていそうな関数のソースが入っているぞ。
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNGカーネルのソースを読んでみよう。
そんなに難しい、ものでもない
ソースの入手も簡単だし。
0144デフォルトの名無しさん
NGNG0145sage
NGNGカーネルのソースを読んだくらいで↓↓みたいな恥ずかしいやつになっちゃうよ
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=992037045
>>144
OSの中心にある機能だよ。
0146デフォルトの名無しさん
NGNGコンパイル時に
-dN=5
0147デフォルトの名無しさん
NGNG-DN=5
じゃなくて?
0148デフォルトの名無しさん
NGNGああ、そうかも
0149デフォルトの名無しさん
NGNGマジレス。
kernel のソースを読むためには、計算機アーキテクチャに関する
知識と OS 一般の知識が必要。MMU ってなんですか、って人間に
は仮想記憶サブシステムは読めないし、例外発生時の CPU の動
作を知らないとプロセス管理サブシステムは読めない。
それに kernel は処理の流れが一様ではなくて、非同期にいろいろ
なイベントが発生するのが前提だから、慣れないと読むのは大変だ
と思う。
あと、最近の *BSD や Linux kernel のように規模が大きいプログラ
ムだと「実装」から「設計」を把握するのは辛いも。コードを読む前に、
適当な書籍やら論文やらで「設計」を知らないと、見通し悪くて挫折
するよ。
個人的には kernel 読むのが初めてって人間には *BSD, Linux の
kernel は勧めない。まずは計算機アーキテクチャを勉強して、次に
小規模な kernel (UNIX V6, MINIX, L4) を読むのがお勧め。
0150デフォルトの名無しさん
NGNGコード読んだことあるの?
0151デフォルトの名無しさん
NGNGあるよ。ちょっとだけど。
0152sage=144
NGNGLinux, FreeBSD, WinCEのカーネルなら実際に読んだよ
得るものは余りなし。
0153143
NGNGあと、init起動するところとか。
0154sage!=134 && sage==145
NGNGカーネルコードを実際に読むより、
カーネルに関する解説書を読むほうがためになるよ
0155デフォルトの名無しさん
NGNG>C言語しか知らないがC言語なら誰にも負けない...
ってどんなシステムのどんなプログラム作ってきたわけ?
デバイスドライバとかか?
0156デフォルトの名無しさん
NGNG4年間 って短いな・・・
長くやってりゃいいって訳でもないけど、期間だけで言ったら
オレは30歳で20年間プログラムを書き続けてるんだけど・・・
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNG過去スレのC言語なら俺に聞けをみればわかる
ジョブスが何者なのかも
なぜ3.1世なのかも
0160デフォルトの名無しさん
NGNG>μITRONをフルスクラッチ
すなおにすごいと思う。尊敬できるかもしれない。
0161sage
NGNGかないません
0162デフォルトの名無しさん
NGNG参考までに、μITRONの勉強をしたいんだけど
いいサイトがあったら教えてくれないか?
今度作らされそうなんだが、とっかかりが全然つかめない。
一を聞いて十知るつもりなんで一だけ教えてほしい。
0163ジョブス3.1世
NGNGなぜ作る?俺の時とは違い、今時μITRONが実装されていない
CPUを探す方が難しかろう。そんなに徹夜したいのか?
今あるか知らんが、パソコン用のNORTiがソースコードつきで
配布されているんでキーワードを頼りに検索しろ。
じゃ無ければ買え。
0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG画面に向かう。
三角を書く。
0167デフォルトの名無しさん
NGNG書店に行って「プログラミング Windows 第五版」買ってきて読め。
0169デフォルトの名無しさん
NGNGお好み焼きかなにかで使うヘラで削りましょう。
それでもだめなときは
シンナーに浸した布で拭くと落ちるそうです。
0170デフォルトの名無しさん
NGNGどうも。
0171デフォルトの名無しさん
NGNG画面のスイッチを切るほうが早いと思われ
0172デフォルトの名無しさん
NGNG油性ペンで書いたものは、スイッチを切っても消えません(藁
0173デフォルトの名無しさん
NGNG0174デフォルトの
NGNGWin95/NT/2000では正常終了するのですが、98だけが異常終了します。
OSにもどる情報を書き換えてしまっているようなんですが。
なぜ98だけで起こるのでしょうか。
開発環境は、VS6(S3)です。
0175デフォルトの名無しさん
NGNG> DLLからメモリアーロック、フリーするソフト(C++、malloc)
ネタか?俺の知ってるmallocは
「DLL」からメモリを「アーロック」しないし、
「ソフト」でもないぞ。
mallocの機能をまともに言えん奴はmallocなぞ使うな。
0176>174
NGNGhttp://www.microsoft.com/japan/support/kb/articles/J046/3/30.htm
0177デフォルトの名無しさん
NGNG偉そうなことは何かアドバイスしてから言っとけ
このバカ
0178デフォルトの名無しさん
NGNG> 偉そうなことは何かアドバイスしてから言っとけ
オマエモナー
# 目糞、鼻糞を煽る
0179デフォルトの名無しさん
NGNG自分の能力の高さを自慢したいだけの人に
聞くのって、聞いた方がバカをみるよね。
0180デフォルトの名無しさん
NGNG典型的なヴァカ
0181デフォルトの名無しさん
NGNG情報源なんてなんでもいいさ。
使えるものは犬でも使うさ。
0182デフォルトの名無しさん
NGNGC言語なら俺に聞けの初代スレをみればギャグだってわかるのに。
0183デフォルトの名無しさん
NGNGたぶんこのスレの<1>〜<4>の1は全て別人。
>>159も別人。
0184デフォルトの名無しさん
NGNG配列などを初期化するとき
for(i = 0;i < 255;i++ )
counts[i] = 0;
}
ってやるのと
memset(counts,0,sizeof(counts));
ってやるのとどちらがいいのですか?
0185デフォルトの名無しさん
NGNGどっちも何もmemsetしかないじゃん
forを固定回数でまわすなよ。わら
0186デフォルトの名無しさん
NGNGってきいたことがあるよ。個人的には、
double counts[128] = {0};
とかかな。
0187
NGNGindividual
#pragma
#if!defined
#use
unsigned
using std::FILE;
template <class charT,class traits>
#undef
Struct
using NAMA std;
class NAMA1 :public locale::facet
class NAMA2 :public NAME1{
Static size_t rand_ =0;
Static struct tm* tmb=0;
#define NAME1 (NAME2)
#define NAME (NAME | PARAMETER)
int _RTLENTRY _EXPFUNC printf(const char * __format,...);
typedef
wchar_t
#define FOPEN_MAX (_NFILE_)
extern "C"{
各々わかんない、.libファイルと.hファイルの関係と作り方トLCCLIB.EXEのありか
0188デフォルトの名無しさん
NGNG>double counts[128] = {0};
これだと、counts[0]以外は未定義状態だなあ
0189デフォルトの名無しさん
NGNG普通はmemsetの方が速い。
>>186
全ビット0が0.0にならない処理系の場合。
IEEE形式なら問題なし。
最初の要素は0.0が代入されると思われるが、
それ以降はmemset相当のコードになるはず。
0190デフォルトの名無しさん
NGNG普通は memset の方が早いが、たいていは初期化部分のコードよ
りも実際に配列を操作する部分のコードの方が実行時間に効いてく
る。初期化部分がボトルネックになっていることが明確でない限り、
わざわざ移植性を落としてまで初期化部分で時間稼がなくて良し。
ただし移植性がそもそもない場合、たとえば Win32 only の構造体
を初期化するような場合は、どっちでも良い。構造体の要素を個別
に初期化してると、定義が変わったときに初期化漏れが出る可能性
もあるしね。
0191デフォルトの名無しさん
NGNG>に初期化してると、定義が変わったときに初期化漏れが出る可能性
>もあるしね。
わしこれでチョンボやった経験あり。
0192デフォルトの名無しさん
NGNGfgets(filename,256,stdin);
fp = fopen(filename,"rb");
if(fp == NULL) {
printf("can't open file : %s",filename);
exit(-1);
}
ちゃんと存在しているファイルなのに開いてくれません。
なぜでしょうか? }
0193デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNG> fgets(filename,256,stdin);
こんなふうにした場合、おしまいにリターンが付いてきそうな気がする。
0195デフォルトの名無しさん
NGNG>>128-129参照
ってなんでfflush()?
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNGerror LNK2001: unresolved external symbol "void __stdcall・・・"
このエラーの意味って何?
0198デフォルトの名無しさん
NGNGここを
> printf("can't open file : %s",filename);
printf("can't open file : [%s]",filename);
こう修正後に実行してみて、
can't open file : [filename
]
と表示されるようなら>>194が理由。
0199デフォルトの名無しさん
NGNG宿題は手伝わないって言ったでしょ
0200197
NGNGお願いビーム!
0201197
NGNG宿題じゃなく仕事なんだ。
先に進めなくて・・・納期が・・・。
0202197
NGNGVC++でのエラーだった。
0203デフォルトの名無しさん
NGNG0204197
NGNG0205192
NGNGご指摘のとうりリターンがついてました。
0206デフォルトの名無しさん
NGNG> fgets(filename,256,stdin);
こんな入力方法とる奴はクビにするね。
0207デフォルトの名無しさん
NGNG>>192と>>197は違う人じゃない?
0209デフォルトの名無しさん
NGNG> こんな入力方法とる奴はクビにするね。
理由書けや。
どーせ256みたいな定数でなくsizeof(filename)とか
エラーチェックしろとか細かいツッコミだろ?
0211197
NGNGこれでもおれ、チーフだったから、開発メンバー
みんなめちゃくちゃ混乱してた。ワハハノハ。
0212デフォルトの名無しさん
NGNGマジ?
ネタ?
0213192
NGNG>> fgets(filename,256,stdin);
>こんな入力方法とる奴はクビにするね。
たびたびすいません。なにがいけないのでしょうか?
勉強中なのでおしえてもらえませんか
0214デフォルトの名無しさん
NGNGプログラム中に「定数」をばらまいてはいけない。
Cならマクロ、C++ならばconstを使うべし。
0215デフォルトの名無しさん
NGNGそうか?
時と場合によるんじゃないのか?一回しかでないもので
絶対変更のないものならいいんじゃないの?
この場合はどうかしれんが
0216デフォルトの名無しさん
NGNGネタにしても寒いな。
マジだったら、そんな奴をチーフにしてる会社はさっさとつぶれてくれた方が社会のためだ。
0217デフォルトの名無しさん
NGNG1本100円のボールペン
10本以上買うと、
A店 10%OFF
B店 8本ごとに1本おまけ
購入数を入力して
単価の安いほうを出力
例
9 同じ
15 A店
30 B店
--2--
価格を入力してポイントを出力する
100円以上の商品に対して
10円ごとに1ポイント
例
80 0
100 1
110 2
200 11
--3--
駐車場の使用時間を入力して料金を出力
基本料金 500円
(1時間)
1時間超えると、10分につき100円課金
53 500
62 600
70 600
71 700
コーディングしてください。
0218デフォルトの名無しさん
NGNGあまりの大胆さにちょっとワロタ
0219デフォルトの名無しさん
NGNG> それに勘違いするな、俺は貴様の宿題を解いてやるほど暇じゃない。
0220217
NGNGvoid main(void)
{
int ne,kazu,a,b,g;
printf("購入数=");
scanf("%d",&kazu);
ne=100;
a=0;
b=0;
g=kazu*ne;
if (kazu>=10) {
a=g*0.1/kazu;
b=g/(kazu+kazu/8);
}
if (a<b) {
printf("A");
}
else if (a>b) {
printf("B");
}
else {
printf("同じ");
}
}
0221デフォルトの名無しさん
NGNG0222217
NGNG0223デフォルトの名無しさん
NGNGバグリスト
・kazuが0の場合、多分プログラムが落ちる
・kasuが1〜9の場合、「同じ」と表示される。
・どんなkazuを入力しても「A」と表示される。
下記の計算部分がバグっている。
> g=kazu*ne;
> if (kazu>=10) {
> a=g*0.1/kazu;
> b=g/(kazu+kazu/8);
> }
0224整数定数
NGNG整数定数なら enum を使えと,カーニハン先生はおっしゃってました.
enum { BUFSIZ=4096 };
0225217
NGNG0226デフォルトの名無しさん
NGNGintって何ですか?
0227デフォルトの名無しさん
NGNG激しくスレ違い。麻衣ちゃんに頭下げて教えて貰え。
0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNGこんなの見ちゃっていいのかしら・・・
わあ! これなんて intのCですよ、先輩
0232デフォルトの名無しさん
NGNGやるなとは言ってない。
0233麻衣
NGNG0234デフォルトの名無しさん
NGNGおお 懐かしい
随分マニアなシーン持ってくるね(笑)
0235224
NGNG0236デフォルトの名無しさん
NGNGをい。
今すぐgoogleへ逝ってこい。
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNGvoid ** が出てきて困るんです。
void **storage = calloc (capacity, sizeof (void *));
で、こうしようと思うんですが、
void *p, *q;
/* p にどこかで値を入れる */
char **storage= calloc (capacity, sizeof (char *));
storage[n] = (char *) p;
q = (void *) storage[n];
これは合法なんでしょうか?
0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNGchar**はよくてvoid**が困る理由が分からんが、
void*へ/からの代入はキャストも不要だろ。
0244デフォルトの名無しさん
NGNGC FAQ 日本語訳を読んでいると、4.9 で void ** はダメっぽいふうに
書いてあるので困りました。いろんな型へのポインタの並びを
管理しようとして、const void * で引数をもらっています。
それならと、void ** 以外で処理することにしたんですが、
他の環境に持っていった時に、異なる型へのポインタでは
サイズが変わるかも、と考えて書き込みました。
けれど考えてみたら、ポインタをキャストできるんだから、
どんな型へのポインタでもサイズは変わらないんですよね?
ということで、
void *p, **storage = calloc (capacity, sizeof (void *));
storage[n] = 何らかの void *;
p = storage[n];
を使ってもいいものかどうかについてお願いします。
ダメなら、char ** などを使ってみようと思います。
> void*へ/からの代入はキャストも不要だろ。
7.7 に書かれているようなコードで覚えたので、
void * もキャストするものと思っていました。
でも、読んですぐなものでまだ癖が抜けません。
0245243
NGNG規格上ポインタのサイズが同じであることは要求されてなかったと思うけど、
そういう処理系ではchar**でもやっぱりダメだろうからvoid**使っとけば。
> void *p, **storage = calloc (capacity, sizeof (void *));
> storage[n] = 何らかの void *;
> p = storage[n];
>
> を使ってもいいものかどうかについてお願いします。
いいもなにも、このコードは暗黙のキャストもまったくないじゃん。
「何らかの void *」とpが他の型へのポインタなら話は分かるけど、
やっぱり正しいコード。C++だとキャストが必要だけど。
0246デフォルトの名無しさん
NGNGC FAQ 4.9 の
> C 言語には汎用のポインターへのポインター型は存在しない。
を誤解していたようです。
void ** を使ってデータ操作すること自体が、ダメなんだと思ってしまいました。
void sample (void **arg);
int *p;
sample (&p); /* p をなんとかしてほしい */
のようなことがダメだと言っているんですよね?
私の場合は、既に void * でもらっているポインタの値を出し入れするだけなので、
関係なかったんですね。
0247デフォルトの名無しさん
NGNGvoid array[10];
と同じ理屈。
0248C初心者
NGNG標準関数の読み方って、なにか決まりがありますか?
strcpy ストリングコピー? エスティーアールコピー? ストルコンプ?
strcmp ストリングコンプ? ストリングコンペア?
熟練プログラマの皆さん方、どう発音されてますか?
0249デフォルトの名無しさん
NGNG何て呼んでもいいと思うけど?変な読み方だとおもろいし(笑)
0250デフォルトの名無しさん
NGNGstrcmp → スープー
strcat → スッチー
0251デフォルトの名無しさん
NGNGstdlib → スタリブ
string → スリン
stderr → スァ
0252デフォルトの名無しさん
NGNGローカルルールに追加しない?
0253デフォルトの名無しさん
NGNGstdio → スタンダードアイオー
っていったほうがいいけど心の中ではなんでもいいと思う
0254sage
NGNGでも、口に出すときはエスティーディーアイオー
なんでもいいよ。もう。
0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNGスタンダードアイオーなんて知ったかぶりっ子っぽくてイヤン。
0257デフォルトの名無しさん
NGNGそういえば、マイクロソフトの製品で
ビジュアル・スタディオ
というのがあったな。変なの。
0258デフォルトの名無しさん
NGNG知ったかぶりじゃなくて、そのものなんだが・・・
余程昔辛い目にあったんだろうねえ
0259デフォルトの名無しさん
NGNG正式だと知らない人がまれにいる。でもプログラマーとしての
技術は十分あるのでバカにもできない。
だから好きによんでいいと思うよ。実力さえあれば。
0260マジレスさん
NGNG整数どうしの足し算でも
小数点が付き、.0000となりますが、
.0000を消すにはどこに何を付け加えればいいですか?
#include <stdio.h>
int main(void)
{
float var1,var2,answer;
int op,flg;
printf("値1\n");
scanf("%f",&var1);
printf("値2\n");
scanf("%f",&var2);
printf("1、足し算 2、引き算 3、掛け算 4,割り算\n");
scanf("%d",&op);
if(op == 1){
answer = var1 + var2;
flg = 0;
}
else if(op == 2){
answer = var1 - var2;
flg = 0;
}
else if(op == 3){
answer = var1 * var2;
flg = 0;
}
else if(op == 4){
answer = var1 / var2;
flg = 0;
}
else{
flg = -1;
}
if(flg == 0){
printf("答え %f",answer);
}
else{
printf("計算方法の指定が間違っています");
}
return 0;
}
0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNG独学だとしてもstdioがstandard input/outputの略だと気付かない
奴はバカでしょ。他にstdlibとかstdargとか、stdがstandardと
気付くためのヒントはいくらでもあるし。
0263デフォルトの名無しさん
NGNGキミの頭にC言語に関する基礎知識を加えればいいですよ
0264マジレスさん
NGNGそんな冷たい事言わずに、教えて。
0267デフォルトの名無しさん
NGNGmemset(ps, '\0', 100);
ps = "50,50,50,50,50";
siri.SendHexNumber( ps );
free(ps);
こういうやり方は、やっぱり違反なのでしょうか?
教えてください
0269デフォルトの名無しさん
NGNGoioi
>ps = "50,50,50,50,50";
>free(ps);
自分でなにしてるかわかってる?
0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNGfree(ps)のときにはpsはスタティックな領域を指しているので、
おそらくSEGVかなんかで落ちる環境も多い。
ps = "..."じゃなくてstrcpy(ps, "...")ってしたいんじゃないの。
0272デフォルトの名無しさん
NGNGstrcpy
VBとかから入った人はこんなの書くね
0273デフォルトの名無しさん
NGNG1. イント
2. インテ
3. インテジャ
エラボウ
0274デフォルトの名無しさん
NGNGmalloc&freeは、もう少しポインタの事を勉強して、
そのコードが何を意味するか、分かってから使った方が良いかと…。
0275デフォルトの名無しさん
NGNGアイティーン
0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNGps = "50,50,50,50,50";
が違法というか、一般的かどうかを聞きたかったんだけど
0278デフォルトの名無しさん
NGNGそれによって私は大変な恩恵に預かりますが、あなたには何の
メリットもありません。
でも、いいじゃないですか? どうせ情報なんてタダでしょ?
とても困っているので、情報を知っている人は私を助けなければ
いけません。これは義務です。
初心者にも分かるように説明してください。
私は、ごく普通の人間なので、パソコンのわけの分からない知識は
ありません。勉強するつもりもありません。時間の無駄です。
検索するなんて面倒です。どうしてそんな面倒な事するの?
知ってる人に聞けばいいじゃん。どうせタダだし。
マルチとか質問スレというのはヲタクのルールです。
私は普通の人間なのでヲタクのルールなど知ったこっちゃありません。
早く教えてください!
早く教えろ!
早く!
これだけ言ってもまだ教えねーのか?!
0279デフォルトの名無しさん
NGNGmalloc/freeを使う意味が無い。
文字列コピーでもしたかったのか?
0280デフォルトの名無しさん
NGNGすまん
0281デフォルトの名無しさん
NGNGインタラプト
0282デフォルトの名無しさん
NGNGそれで、先日「独習C」って本買ったんだけど
この本の内容は何日(何ヶ月)くらいでマスターできるんかな?
すでに、初級本の「C言語〜はじめてのCプログラミング〜」はマスター済みです。
現在は学校には行ってません。
あと、「独習C」マスターしたらC++に進んじゃって大丈夫やろか?
0283デフォルトの名無しさん
NGNG一つの言葉を覚えたら徹底的に使うことが大事だと思うよ
0284デフォルトの名無しさん
NGNGmallocの使い方と
ps = "50,50,50,50,50";
は、それ程、問題無いが、その後の、
free(ps);
が問題がありすぎる。
その為、そのコードが合法か聞かれた場合は、
それしか目が行かない。
ちなみに、freeが無い場合、大抵の処理系では合法で、
(見た事はありませんが、(聞いた事ならある))
exit時にメモリを開放しない処理系では、違法。
0285デフォルトの名無しさん
NGNG野球のルールを知ってるだけじゃ、甲子園には行けないぞ。
0286282
NGNGマスターってのは
その本の内容を理解したって意味で使いましたっす。
C++を勉強しようとしたら全く解らんのでCから始めたんやけど…
0287282
NGNGとりあえず今は、勉強するしかないかな〜と思ってます。
まだ、独学で始めて1ヶ月なんですよ。
実践で使いこまなきゃ話にならんで〜
…ってことは勉強してると良くわかります。
だって、問題出されたり質問されたりしても全然答えられんもん。
0288デフォルトの名無しさん
NGNGあるクラスのメンバー関数の中の一部なんだけど
freeしちゃだめなの?
0289282
NGNG0290デフォルトの名無しさん
NGNGあんまり問題なくないぞ。
何の為にmallocしてんのかわからん。
0291デフォルトの名無しさん
NGNGmallocはもういいんで、他にいろんな処理してる関数の抜き出しなんで
適切じゃなかった、
で、なんでfreeしちゃだめなの?
0292デフォルトの名無しさん
NGNGあっはっは。
freeの引数にはmallocで確保した領域の先頭アドレス
(つまり、最初にmallocしたときのpsだな)を入れなきゃ。
いまのままじゃ"50.・・・"の文字列の先頭アドレスだから
狂っちゃうよ。
0293デフォルトの名無しさん
NGNGmalloc(), realloc() を介して確保したメモリ以外は free() してはいけない。
そういう前提で free() は書いてあるので、文字列定数へのポインタを渡す
と、困った事態になる。
たいていはメモリアクセス保護違反で異常終了するが、環境によっては
その時にはエラーが出ずにメモリ上のデータを壊す(そして後で変数の
値がおかしくなっていることに気づく)かもしれないし、OS が暴走するか
もしれない。
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNG>>293がC言語のイロハを厨房に教えている教室かと思った。
0297デフォルトの名無しさん
NGNGヒープとスタックの違いは理解してる?
0298デフォルトの名無しさん
NGNG>malloc(), realloc() を介して確保したメモリ以外は free() してはいけない。
では、callocで確保したメモリはどうやって解放するの?
0299デフォルトの名無しさん
NGNGゲームを高速化するために、VC++6.0Pro で、MMX命令を使った
プログラムを書きたいのですが、インラインアセンブラ
以外の方法で画像のスプライト処理などをする
ライブラリなどはありませんでしょうか。
どなたか教えてください。
0301デフォルトの名無しさん
NGNG>>292 >>293
は親切すぎてダメダメ。そんなの267以外は分かってるちゅうねん。
コンパイルでエラーが出ないからっていって、やっていいことと悪いことがある。
それまでのヒントで、自力で調べるくらいじゃないとな。
>>298
callocは中でmallocを出してるって、MSDNにも書いてあるだろ。
それくらいも見ないのか?
0302224
NGNGalloca()と間違えたのでは?
>>235
カーニハン先生はひとことでいうとC言語の権威です.
もとの発言の文脈に依存した言い方だと,
カーニハン先生は「プログラミング作法」という書籍の著者であり,
その本の中で整数定数をenumで書くことを推奨しているのです.
「プログラミング作法」はカーニハン先生ご自身の名著である
「プログラミング書法」と「ソフトウェア作法」を
最新の言語に即して書きなおしたというところでしょうか?
#残念ながら「ソフトウェア作法」の原題でもある「Software tools」という
#考え方についてはあまり触れられていません.
[Amazonでの紹介]
http://www.amazon.co.jp/exec/obidos/ASIN/4756136494/t/249-9249061-2910751
0303デフォルトの名無しさん
NGNG気持ちいいんですか?
0304デフォルトの名無しさん
NGNG気持ちいいって・・・まあ、そりゃあ身体や顔洗えばスッキリするけどさあ。
0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNG0307デフォルトの名無しさん
NGNG}
else {
}
か、
if (条件)
else
ですか?
{ }
はいりますか?
0308デフォルトの名無しさん
NGNGデフォルトで{}をつける癖をつけろ
0309デフォルトの名無しさん
NGNG308に同意。
しかし、
if( a == 0 ) {
a++
}
else {
continue;
}
とかする馬鹿はすぐ殺せ。
0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNGいけない理由はgotoとほぼ同じ。
0313デフォルトの名無しさん
NGNGdebug_printf("fclose シヨーヨ\n");
fclose(fp);
「なんか、NULL pointer assignment とかいって止まるんですけど、
コンパイラがバグってるんでしょうか?」
0314デフォルトの名無しさん
NGNG0316デフォルトの名無しさん
NGNGpって何?
0317デフォルトの名無しさん
NGNGあなたがバグってマス
0318デフォルトの名無しさん
NGNG使い方しだいだと思うけど。
そんなふうに硬直した思考してると
世の中から置いてきぼりを食っちゃうぞ
0319学生
NGNG固有ベクトル以外に作らなければならないプログラムがわかりません。
画像の入出力はできます。教えてください。
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNG使い方しだい、か。例を挙げてくれないか?
今まで、continueを使ってたソースで「こいつ何考えてんだ?」と
思わなかったことが無いのでな。
0322デフォルトの名無しさん
NGNG同じく。おれもcontinueは必要だと思うが。
0323310
NGNGそう、使い方次第だよ。だから>>312と書いた。gotoだって使い方次第だ。
gotoでは多重ループから一気に抜けるときとかの例があるだろ。
continueが有効な例てのをあげてくれ。
0324デフォルトの名無しさん
NGNGあたま弱いんだね
0325sage
NGNGwhile (fgets(buf, sizeof(buf), fp) != NULL) {
if (buf[0] == ';') { // skip comment line
goto continue_loop;
}
/* normal task */
continue_loop:
;
}
while (fgets(buf, sizeof(buf), fp) != NULL) {
if (buf[0] == ';') { // skip comment line
continue;
}
else
{
/* normal task */
}
}
while (fgets(buf, sizeof(buf), fp) != NULL) {
if (buf[0] != ';') { // skip comment line
/* normal task */
}
}
while (fgets(buf, sizeof(buf), fp) != NULL) {
if (buf[0] == ';') { // skip comment line
continue;
}
/* normal task */
}
0326デフォルトの名無しさん
NGNGgotoだと、コピペが難しくなるのが問題なんじゃないか?
0327デフォルトの名無しさん
NGNG2番目のは continue が要らない典型的な例だと思う。
0328デフォルトの名無しさん
NGNG自分で書く時は絶対3番目。
0329デフォルトの名無しさん
NGNG0330デフォルトの名無しさん
NGNG自分で書く時は絶対4番目。
0331デフォルトの名無しさん
NGNGcontinueを多用する人はループの記述にwhileを好む傾向にあると思う。
反対にforの方を好む人はcontinueを嫌うのかな?
どちらにしろ宗教だからあまり熱く語らないほうが良いと思うよ。
0332sage
NGNGif (buf[0] == ';') {
/* skip */
}
else {
:
:
の間違い。
0333デフォルトの名無しさん
NGNG選ばせるんじゃなくてお前が必要だと思うのを書けっつってんだよ
0334デフォルトの名無しさん
NGNG0335sage
NGNGにもっと複雑な処理を加えていったときにどうなるか
適当に想像してみよう。
こういうのを定型的に書くとき、1, 2, 3 番で書くのがもっともスマートだと思うなら
止めないから、それでやってね。
0336デフォルトの名無しさん
NGNG処理系とstdio.h程度で良いのですけれど。
あれば弄って遊びたいのです。教えてください。
0337デフォルトの名無しさん
NGNGインタプリタか?
CINTで検索してみ。
0338333
NGNGキミ、バカ? != 使えばいいじゃないか。
必要性のあるものを書け、と言ったんだよ。
やっても意味ねーことを書いてどうするんだよ? バカ。
0340デフォルトの名無しさん
NGNGネストマニアなんだよ。
括弧が10段くらいついてるとカコイイと思ってるんだ
0341デフォルトの名無しさん
NGNG制御構文破綻してしまった時の対処療法。
0342デフォルトの名無しさん
NGNG空行読み飛ばしのロジックを追加したくなったとき
やっぱり、
if(!(buf[0]==';' || buf[0]=='\n')) {
なんですか?
カコイイ!
0343デフォルトの名無しさん
NGNGreturnも中身にいれとくれよ
0344デフォルトの名無しさん
NGNG忘れてた!thanx
関数がまだ途中なのに出てくる、
頭クラクラしてくるアレね。
0345デフォルトの名無しさん
NGNG使っていいのは for, while, do - while, if (else) のみという主張? 根拠
を示してくれよ。
continue の使い途については >>342 が代表的なところだが、ほかでも
「原則として処理するが例外的にスキップする」というロジックには、非常
に相性が良い。条件式が単純なものではなくて、副作用のある複数の
操作を途中で挟む場合には 3 のパターンは使いにくいし。
0346デフォルトの名無しさん
NGNG破綻するような設計ダサイよ
それいうなら、
while, do while, for, if goto
ループ構造書く意味ではどれも同じだよ
で、ifとgotoで制御構造書いても怒らないの?
0347341
NGNG自然と処理手順のワープは無くせるって意味だよ。
制御構文こねくり回して複雑にして、破綻の恐怖に怯えながら
仕事するのは嫌だからね。
人に薦められてこういう作り方に変えていったんだけど、
とりあえず簡単な制御構文だけで10年以上メシ食ってるから、
騙されてはいなかったかなと思っている。
まあ、先にいっとくけど、必ず解のある方法論じゃないんだけどね。
仕様によっては、設計の段階でかなり悩むこともあるが、
後で苦しむよりは正解と思う。
0348名無しさん
NGNGエラー E2451 chotto.c 117: 未定義のシンボル stdio(関数 input_file )
エラー E2451 chotto.c 131: 未定義のシンボル stdio(関数 input_line )
0349ズバット解決!
NGNGstdioが未定義
0350デフォルトの名無しさん
NGNGs/stdio/stdout/
0352デフォルトの名無しさん
NGNGその本晒しキボンヌ
0354デフォルトの名無しさん
NGNGcontinueは簡単でないですか?
0355デフォルトの名無しさん
NGNGCの参考書はK&Rにはじまり、ANSI/ISO企画書に移り、
そしてまたK&Rに終わるのだ。
その他の本はすべてK&Rの劣悪な焼き直し。
0357338
NGNGwhile()もfor()もdo{} whlie()も必要ねーんだよ!
returnなんか無駄だ
全部mainで書けばいいだろ? バカ
0358デフォルトの名無しさん
NGNG突き詰めれば、確かにその通りだ。
0359348
NGNG0360デフォルトの名無しさん
NGNG誰もが一度はやるミスなんで、悪くないですよ。
asciiの本に間違いが載ってるのはあたりまえなんです。
0361デフォルトの名無しさん
NGNG生産性と保守性を考えないなら、それでもいいですね。
でもどうせならアセンブラでやってください。
0362デフォルトの名無しさん
NGNGmainはどうやって呼ばれるんだろう・・・
0363デフォルトの名無しさん
NGNGsed.exe というテキスト変換ツールのコマンドだとおもう。
>s/stdio/stdout/
stdioをstdoutに置き換えるコマンド(だったかな?)
昔やった記憶がある。
0365デフォルトの名無しさん
NGNGC言語の仕様が何度かかわっているので
それにあわせて何カ所か書き換えてるんだと思います。
決して、誤字脱字を直すための改訂はしてないと思います。
0366デフォルトの名無しさん
NGNG「決して」ですか?(ワラ
それって出版社の方針?
0367デフォルトの名無しさん
NGNG> ifとgotoさえありゃ何でもできるんじゃボケ
> while()もfor()もdo{} whlie()も必要ねーんだよ!
> returnなんか無駄だ
> 全部mainで書けばいいだろ? バカ
素晴らしい、その信念を貫きとおしてくれ。
ただし、そのソースは俺に見せるなよ。
猥褻物陳列罪で射殺するかもしれないから。
0368真338
NGNG偽者を名乗るなら、せめて話の流れが通じるようにしてくれ
0369デフォルトの名無しさん
NGNG必要なければreturnで返しちゃうのってだめなんですか?
0370デフォルトの名無しさん
NGNG状況わかんないしな・・・。
オーバーヘッドとか気になるなら先に判定して呼べばいいんでは。
・・・とかって、一概には言えないと思うけれども。
インライン展開されたら関係ないし(笑)
それか、もっと別の問題を言ってるのかな。
0371デフォルトの名無しさん
NGNG0372デフォルトの名無しさん
NGNG「複数のリターンはいかん!」と言う人は、
foo(args) {
if (is_argument_error(args)) {
return ARGUMENT_ERROR;
}
if (!need_this_func(args)) {
return CONDITION_ERROR;
}
/* 通常処理 */
return SUCCESS;
}
みたいなコードも拒否するのかな?
0373369
NGNG僕もそういう書き方をよくします。
でも上のほうの書き込みをよむと、
だめのような感じだったので聞いてみたのですが
他の人はどうなんでしょうか?
0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNGそれを守ると、一体どういう御利益があるのでしょう?
良く、int return_codeとかの変数を使って、無理やり関数の最後でリターンする
ようなものを見ますけど(しかもインデントが深い)、そのような構造より>>372の
ようなコードの方が見やすいと思いますけど。
0376デフォルトの名無しさん
NGNG賛成
関数の出口を一つにするなんてのはよっぽどのばかしかやってないよ
0377デフォルトの名無しさん
NGNGトラップとか、アボートとかを目的にした場合は、その方が分かりやすいと思う。
仕様変更とかでごちゃごちゃになることも考えにくいし。
ただ、それを前提とした設計の是非が問われるところだが、
代替案があればってところでしょう。
要求された仕様を実現するためにまず制御構文から設計するような手法だと、
仕様変更の度に制御構文を設計し直すハメになりやすい。
仕様を満たす手法をなるべく一般化する方向で設計し、
制御構文はその手法を満たす単なる手段でしかないと思っておけば
今日も安心して眠れるってことでしょう。
それこそ>>357=偽338のいう冗談じゃないけど、if文だけで実現したって
いいんじゃないすか?趣味の範囲内にはして欲しいけど。
あと、誰も触れなかったけど、switch()中のbreak;を書くなという突っ込みなら、
少し話しが違う。
0378RIP_MAPIRO
NGNGというか複雑なアルゴリズムを実現するには、多少の制御分岐は
必要になるわけで、函数の階層化&分散 と 函数当りの制御分
岐数 は反比例な関係にあるわけで、どちらも度が過ぎれば可読
性は極端に落ちる。
あと、複雑なコードを書く必要性がでたらC++への移行も考えてい
いんじゃないかな。
0379デフォルトの名無しさん
NGNGa[0][0] = data;
・
・
・
みたいに
int **p;
p[0][0] = data;
・
・
・
で実現したいんですけど、どうやってメモリを確保してやればいいんでしょう?
0381RIP_MAPIRO
NGNG本屋に走ってCMagazineを買いなさい。
0382デフォルトの名無しさん
NGNG・・・Cマガはいかんだろ
0383379
NGNG実現できました。失礼しました。
0384デフォルトの名無しさん
NGNG今月号はポインタ特集らしいからじゃないの
0385デフォルトの名無しさん
NGNG今の職場、
int hogehoge( int a )
{
a = get_nanka();
switch( a )
{
case 0: return( 0 );
case 1: inc( a ); return( a );
case 2: return( 2 );
}
b = get_nanika();
for( i = 0; i < MAX_VALUE; i++ )
{
if( b == 100 ) return( -1 );
b += check_nantoka();
}
return( 0 );
}
みたいなことをする人が山のようにいるのだが
これは問題ないと思いますか?
0386デフォルトの名無しさん
NGNGカッコをつけるなYO!!
0387デフォルトの名無しさん
NGNG本題はそれじゃないだろ
0388デフォルトの名無しさん
NGNG渡された引数を局所変数に転用するのはいただけない。
0389デフォルトの名無しさん
NGNGたかがループ変数をグローバルで定義すんなYO!!
0390385
NGNG今の職場がどれだけ恵まれているかわかったよ!
パパ!ママ!僕はこの腐った職場で花を咲かせるよう!!
0391デフォルトの名無しさん
NGNG>>389のメールアドレスはどうなってる?おバカちゃん。
0392デフォルトの名無しさん
NGNG>>386-389はどう見てもネタ。
0393sage
NGNGそのコードで開発・保守をやってて
利益がでてるなら、それでいいんじゃない?
でもね、最初に書くときに一般化とわかりやすさのための工夫をすることで
後に発生するであろう様々な無駄な工程が、今よりも、圧縮できるってことを
君が偉くなったときに思い出してね。
そのための手法は、広く公開されているし、特別な投資がいるわけでもないよ。
0394デフォルトの名無しさん
NGNGその書き方は、昔からよくあるパターンだし、別にいいんでないの?
でも、新規で書くときは使わないな。
emacsとかのマクロで、関数入り口, 出口にどかっと
enter/leaveログを吐くコードとか書き足せるほうが楽でしょ。
0395デフォルトの名無しさん
NGNGどうすれば、PCIバスの情報取得できるの?
本屋立ち読みしたけど、わからな〜い
0396デフォルトの名無しさん
NGNG一般的な、常識のあるプログラマはどのようにするのでしょうか?
受け取るとき何で受け取り、渡すとき何で渡すのか教えてください。
0397デフォルトの名無しさん
NGNGポインタたらい回しの術
0398デフォルトの名無しさん
NGNGんじゃ!
0399385(本物)
NGNGいや、これじゃあダメだと今年入った新卒の僕らが反論しているんですが
先輩は「社会ではこれが常識だ、趣味の世界と一緒にするな」と言ってくるんですよ。
ですから、これが社会で常識のコードなのか知りたくて・・・
0400デフォルトの名無しさん
NGNGすごい会社だね。辞表の書き方は本屋さんに行けば
わかるから明日有給とって買いにいこう。
0401デフォルトの名無しさん
NGNGここ数年はthrowで飛ばしてcatchで受けるっつうプログラムばっか書いてたから、
385みたいなプログラムは、凄く懐かしい香りがするよ。
復帰値はエラーコードっていうのが、なんだかなつかしいよ。
0402デフォルトの名無しさん
NGNG0403kkIP1A0019.hkd.mesh.ad.jp
NGNGmain(void)
{
printf("氏ねや");
}
0404kkIP1A0019.hkd.mesh.ad.jp
NGNGmain(void)
{
int a,b;
{
printf("input number n!\n");
b=1;
for(a=1;a<=10;a++)
{
b=b*a;
printf("kekka%2d=%10d\n",a,b);
}
}
}
0405デフォルトの名無しさん
NGNG分からなかったので…。
学校の授業で以下のプログラムを説明せよという宿題が出たのですが、
病気で休学していたので、さっぱりです。
どなたか簡単にせつめいしていただけないでしょうか。
まことにぶしつけなのは承知ですがどうかお願いします
分かっていることは、ペイントソフトのプログラムみたいです。
void_fastcall TForm1::BtnCLsClick(TObject *Sender)
{
Image1->Picture->Bitmap->Width=320;
Image1->Picture->Bitmap->Height=240;
Image1->Picture->Bitmap->Canvas->Pen->Color=clWhite;
Image1->Picture->Bitmap->Canvas->Brush->Color=clWhite;
Image1->Picture->Bitmap->Canvas->Rectangle(0,0,320,240);
PaintBox1->Canvas->CopyRect(ClientRect,Image1->Picture->Bitmap
->Canvas,ClientRect);
}
0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNG全ての行を日本語にしてみればすぐわかるよ。
0408デフォルトの名無しさん
NGNGネタ?
引数のSenderは何しとるん?
0409デフォルトの名無しさん
NGNG??
0410日本語化バッチ
NGNG{
1つ目の絵>-絵>-ビットマップ>-幅=320;
1つ目の絵>-絵>-ビットマップ>-高さ=240;
1つ目の絵>-絵>-ビットマップ>-キャンバス>-ペン>-色=clWhite;
1つ目の絵>-絵>-ビットマップ>-キャンバス>-ブラシ>-色=clWhite;
1つ目の絵>-絵>-ビットマップ>-キャンバス>-長方形(0、0,320,240);
1つ目の塗る箱->キャンバス->CopyRect(ClientRect、1つ目の絵―絵>>-ビットマップ>-キャンバス、ClientRect);
}
0411ハジメテミタ
NGNGerrno29のilligal seekですが、この記述の意味がわかりません。。
if(errno==ESPIPE) piped = ESPIPE;
って意味?
piped は int です。
0412デフォルトの名無しさん
NGNGpiped = (errno==ESPIPE ? 1 : 0);
または
if(errno==ESPIPE)
piped = 1;
else
piped = 0;
0414411
NGNGありがとうございます。
UNIXのコマンドのソースを読んでみたら、こんな記述が出てきて戸惑いました。。
もうひとつ教えてください。
char stdbuf[SIZEBUF];
setbuf(stdout, stdbuf);
なのですが、
ストリームのバッファリングがいまいちわかりません。。。
というより、バッファリングがいまいちわからないのですが、簡単に教えていただけますか?
あと、この記述のあと、stdbufは使われていませんが、
ここでは何をやってるのでしょうか?
0415411=414
NGNG標準出力のときstdbufに格納してから、出力しているってことでしょうか?
0416デフォルトの名無しさん
NGNG一時的にデータを格納する領域。
0417デフォルトの名無しさん
NGNG> setbuf(stdout, stdbuf);
通常ストリームはBUFSIZ分のバッファを用意しているが、
それを変えたい場合、上記の関数を使用する。
> バッファリングがいまいちわからないのですが、簡単に教えていただけますか?
例えば、ベルトコンベアから次々と荷物が送られてくるとする。
荷物を運ぶコストが非常に大きい場合、1個1個荷物を運ぶよりも
ある程度まとまった荷物を一気に運んだ方が効率が良い。
その荷物を格納しておく場所をバッファといい、手法をバッファリングという。
0418デフォルトの名無しさん
NGNGように下のプログラムを完全なものに
したいのですが・・・
どうやったらいいのですか?
ここをこうかえる、というように具体的に教えて下さい。
マジでお願いします。
#include <stdio.h>
#define IMAX 3
#define JMAX 4
double array[IMAX][JMAX]={
{ 2, 1,-1, 5 },
{-3, 3, 2, 1 },
{ 1,-2,-2,-1 },
};
void PrintMat(void){
int i,j;
for(i=0;i<IMAX;i++){
for(j=0;j<JMAX;j++){
printf("%5.2f ",array[i][j]);
}
putchar('\n');
}
putchar('\n');
}
void SweepOut(void){
int i,j,axis;
double pivot,aik;
for(axis=0;axis<IMAX;axis++){
pivot=array[axis][axis];
for(j=axis;j<JMAX;j++){
array[axis][j]/=pivot;
}
for(i=0;i<IMAX;i++){
if(i!=axis){
aik=array[i][axis];
for(j=0;j<JMAX;j++){
array[i][j]-=array[axis][j]*aik;
}
}
}
}
}
main(){
PrintMat();
SweepOut();
PrintMat();
}
04191
NGNG0420411=414
NGNGありがとうございます。
理解できました。
0421デフォルトの名無しさん
NGNGstrName = "test";
って感じで文字列を代入していたのですが
こんなことが許されるのでしょうか?
0422デフォルトの名無しさん
NGNGstrNameの型を書け。
0423デフォルトの名無しさん
NGNG問題ない。許される。
0424新米PG
NGNGVC6.0でデータ受信がうまくいっていません
調査した所、ReadFileの読み込みで1024バイト以降のデータ
が異常なデータになっていました。
なにか設定が足りないのだと思いますがわかりません。。。
熟練の皆様お願いします。
0425辣腕PG
NGNGネタ?
たったそれだけ書いて何をどうしろと?
0426デフォルトの名無しさん
NGNG1を聞いて10を知る練習をしろ、と言っているのでは?
実際こういう質問をしやがるプログラマは多いからな。
0427デフォルトの名無しさん
NGNGわからないのところは創造で補うべし。創造だぞ。
0428新米PG
NGNGすみません、素人さんにはわからない説明をしてるので
ごめんなさい。
0429デフォルトの名無しさん
NGNGことで、中央にそろえるプログラムを勉強
しますが、本には下のように書いて
いました。しかし、これだとrigのほうが
上手くいきません。(printfで調べました。)
この記述は間違っているのでしょうか?
n=strlen(s);//
for(i=0;i<n;i++)
if(! isspace(s[i])) break;
lef=i;
for(i=n-1;i>=0;i--)
if(! isspace(s[i])) break
rig=n-i-1 ;
k=(lef+rig)/2;
(C言語集中ゼミ softbank刊 P174)
0430デフォルトの名無しさん
NGNGあんまなめんな。
素人じゃなくたってわかんねーよ。
せめてCreateFileのパラメータくらい全部かいとけやゴルァ!
0431民生
NGNG0432デフォルトの名無しさん
NGNGWinなら秀丸に食わせて、s-jisで保存したりeucで保存したりします
Linux/Unixならnkfに食わせます
system関数を使うとよいでしょう
0433デフォルトの名無しさん
NGNGsystem("nkf -S -e <sjisfile >eucfile");
system("nkf -E -s <eucfile >sjisfile");
0434新米PG
NGNGすみません、ちょっとかじった人にもわからない説明をしてるので
ごめんなさい。
0435民生
NGNGまじ助かります。ありがとうございます。
0436民生
NGNG変数レベルで変換するにはどうしたらいいですか?
0437デフォルトの名無しさん
NGNGそんなもん検索すればいくらでも出てくるだろうに。
http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/
0438デフォルトの名無しさん
NGNG再現可能な情報をくれ。
5W1Hって知ってるか?
厨房じゃなきゃ意味わかるよな?
Read時ってことは送られてくる情報が1024bytesで切れてて、
あとはゴミッちゅう可能性もあるが、相手にもよるよな。
0439デフォルトの名無しさん
NGNG少なくともお前より経験も実績もあるが何か?
「設定が足りないんだと思います」とか書いておきながらその肝心の設定を
何一つ書いてなけりゃ答えようがねえよ。
0440デフォルトの名無しさん
NGNG>>424には「説明」らしきものは何も書いてないんだが。
0441デフォルトの名無しさん
NGNG経験と実績だけの方ですね、なんの実績だか・・・(冷汗)
経験豊富なあなたもごめんなさい。
>>440
>428の理由により、ごめんなさい。
たまに出来る人が混じってる2ちゃんですが
今回はみんなはずれみたいなので、終了します。
0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNGconst int * pMAX = &MAX ;
int i = 50 ;
pMAX = &i ;
のとき、*pMAXの値は何か?
プログラムせずに答えよ。
と言われて困っています。
pMAX が const だから
pMAX = &i ;は出来ないんじゃないかと思うので
*pMAXは 100だと思うんだけどあってる?
0444デフォルトの名無しさん
NGNG50
0445デフォルトの名無しさん
NGNGpMAX = &i ;
がどうして可能なのか分かりません。const指定してるのに。
0446デフォルトの名無しさん
NGNGint const* pMAX =&MAX;
なら、
pMAX = &i;
はできない。
0447デフォルトの名無しさん
NGNG50
0448445
NGNGどこが違うのでせう!?
0449445
NGNG0450デフォルトの名無しさん
NGNGconst int * p; // 「const int」へのポインタ
0451新米PG
NGNG直りました、やはりあの書き込みで説明不足って事はなかったみたいです。
他の掲示板にも意見を求めたらあっさり解決。
ちょっと2ちゃんにはがっかり。
0452厨房PG
NGNG何が原因だったの?
僕も同じようなことをやるかもしれないから
参考までに教えてほしいです
0453デフォルトの名無しさん
NGNGほっとけ。ただの煽りだ。
0454445
NGNG>const int * p; // 「const int」へのポインタ
うーん、では
const * int p と
int const * p はどうよむのでしょうか(日本語訳!?すると)?
0455sage
NGNGK&R読んで勉強しとけ
int main()
{
int a = 0;
const int *p1 = &a; /* 変更不可能な, intを指すポインタ */
int const *p2 = &a; /* 変更不可能な, intを指すポインタ */
int * const p3 = &a; /* intを指す, 変更不可能なポインタ */
*p1 = 1; /* error */
*p2 = 1; /* error */
*p3 = 1;
p1++;
p2++;
p3++; /* error */
return 0;
}
0456445
NGNG446さんは
*p1 = &a; /* ok */
*p2 = &a; /* error */
と言ってるのですが!?
0457sage
NGNGint const *p2 = &a; /* 変更不可能なintを指すポインタ */
int * const p3 = &a; /* intを指す変更不可能なポインタ */
のほうがわかりやすいか。
おまけ
const int * const p4 = &a; /* 変更不可能なintを指す変更不可能なポインタ */
0459445最後の質問
NGNG有難うございました。「おまけ」で納得できました。
最後に
const int
int const
どっちを先に書いても同じなのですね?質問ばかりですいません。
0460445
NGNG0461デフォルトの名無しさん
NGNG痛い煽り(w
DCBなのはわかりきってるだろ。DCBのどのメンバだよ(w
知ってる単語並べりゃいいってもんじゃねえだろ(プ
0462デフォルトの名無しさん
NGNGそゆこと。
0465デフォルトの名無しさん
NGNG誰か教えて下さい。お願いします。
0466デフォルトの名無しさん
NGNG追跡か?
ある点から周りを見渡して現在の点と最も近い値を持つ点に移動。
これを繰り返す。
「ある点」は輪郭抽出とかであらかじめ探しておく。
0467465
NGNGよくわかりません。
0468デフォルトの名無しさん
NGNGhttp://www.gctv.ne.jp/~tsugu/sotuken/binedge/
よく知らんが検索かけたらうじゃうじゃ出てくるぞ。
あとマルチポストは止めろよな。Cとも関係ないしな。
0469デフォルトの名無しさん
NGNGとりあえず、この板の住人はマルチポストするような厨房に教えてくれるほどお人好しでも暇人でもないって事だ。
0470デフォルトの名無しさん
NGNGマルチポストに対する注意はマルチポストしていいの?
0471デフォルトの名無しさん
NGNG0472デフォルトの名無しさん
NGNGbreakの後に;を忘れている。
0473デフォルトの名無しさん
NGNGおいおいそのくらい大目に見ようぜ
0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNG動的にメモリ確保
0476初心者
NGNG下記のソースがまともに動きません。なぜでしょうか?
コンパイラはエラー0,警告0で通ります。
Nを1000にすると問題なく動くのですが。
sizeof(int)は2です。
#include <stdio.h>
#include <stdlib.h>
#define N 10000
main()
{
int i,d[N];
for ( i=0 ; i<N ; i++ )
{
printf ( "%d ",d[i]=rand() );
}
return 0;
}
環境:Duron800/128M/HD60G/Windows98SE(DOS窓)
言語:LSI-C86試食版
0477デフォルトの名無しさん
NGNGスタックがあふれているから。int d[N]をmainの上に持っていくと動くはず。
0478よお
NGNGおそらくLSI-C86の何らかの制限に引っ掛かってると思うけど
0479初心者
NGNGありがとうございます。
int d[N]をmain()の上に持っていくと動きました。
Nを30000にしても動きました。
スタックがあふれるなんて、再帰的なことをしない限り
気にすることないと思っていたのですが、勉強不足でした。
0480デフォルトの名無しさん
NGNG> スタックがあふれるなんて、再帰的なことをしない限り
> 気にすることないと思っていたのですが、勉強不足でした。
LSIC86はかなり古いコンパイラだからな。
# intが2byteだし、near, farポインタがあるし...
LSIC86ではSモデルでは2500byteのスタックをデフォルトで用意する。
必要なスタックを確保したい場合、コンパイルオプションに
-k'-s 2000'を追加する。これで8kのスタックが確保できる。
詳しい話はマニュアルLSIC86.manの3.9 スタックの大きさ
を見てみよう。
0481デフォルトの名無しさん
NGNGサブルーチンを作らなくてはいけないのですが、ソースは具体的にいうとどのようになるのでしょうか?
初心者なので難しいです。
void *memset(void *s,int c,size_t)
{
void *a[size_t];
int b = 0;
strcpy(a,b);
return(a);
}
まさかこんなソースになるわけないし。。。
0482>481
NGNG0483デフォルトの名無しさん
NGNG新卒で、先輩から
「Cの勉強がてら、memsetとmemcpyを自力で作ってみ」
と言われたとかいうことじゃないよな?
0484デフォルトの名無しさん
NGNGmemcpyがなくてstrcpyがある・・・どういう環境だ?
0485デフォルトの名無しさん
NGNG/* ネタ用memset */
void *memset(void *s,int c,size_t n)
{
return memmove(s, c, n);
}
/* 先輩が予期しているmemset */
void *memset(void *s,int c,size_t n)
{
unsigned char *p = s;
int i;
for(i = 0; i < n; n++) {
p[i] = c;
}
return s;
}
memcpyはこれを参考にして自分で作れ
0486デフォルトの名無しさん
NGNGたのむからK&Rくらい読んでくれ。
0487デフォルトの名無しさん
NGNG0488デフォルトの名無しさん
NGNG大変恥ずかしいっす。。。
0489デフォルトの名無しさん
NGNGi++だよな?
0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNGfor(i = 0; i < n; i++) {
ですよね?
0492デフォルトの名無しさん
NGNGソースのどの部分がオーバーヘッドになっているのかを調べたいです
確か、各関数の実行時間を調べる関数があったと思いますが・・・
教えて下さい
0493デフォルトの名無しさん
NGNG{
unsigned char *p = s;
int i;
for(i = 0; i < n; i++) {
p[i] = c;
}
return p;
}
0494デフォルトの名無しさん
NGNGyes しくじった。
0495デフォルトの名無しさん
NGNGreturn p;
ではないのですか?
0496デフォルトの名無しさん
NGNGno, memsetはsを返す仕様
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/memset.3.htm
0497496
NGNGURLが間違ってた
正:http://www.linux.or.jp/JM/html/LDP_man-pages/man3/memset.3.html
0498デフォルトの名無しさん
NGNG関数?
profilingでなくて?
0499デフォルトの名無しさん
NGNGボーナス=(基本給*2.3)+能力給+ボーナスポイント
という計算で求める。基本給とボーナスポイントは下の通り。
勤務年数 基本給 ボーナスポイント
0−5年 80000 10000
6−10年 100000 12000
10−15年 120000 15000
16年以上 150000 18000
ランク 能力給
A 基本給*3
B 基本給*2.5
C 基本給*2
D 基本給*1
という問題があるんですが、自分で作ったプログラムが下にあるのですが、
エラーが1つあるのですが、どこかわかりません。自分では完璧だと思うですが。
だれか、教えてください。
基本給=kihon 能力給=nou ボーナスポイント=point 勤務年数=nennsu
ランク=rank ボーナス(答え)=answer
#include <stdio.h>
int main(void)
{
int nennsu,kihon,nou,point,answer;
char rank;
printf("勤務年数は?");
scanf("%d",&nennsu);
printf("ランクは?");
scanf("%s",rank);
if(nennsu>=16){
kihon = 150000;
point = 18000;
}
else if(nennsu>=11){
kihon = 120000;
point = 15000;
}
else if(nennsu>=6){
kihon = 100000;
point = 12000;
}
else{
kihon = 80000;
point = 10000;
}
if(rank= 'a'){
nou = kihon * 3;
}
else if(rank = 'b'){
nou = kihon * 2.5;
}
else if(rank = 'c'){
nou = kihon * 2;
}
else (rank = 'd'){
nou = kihon * 1;
}
answer = (kihon * 2.3) + nou + point;
printf("あなたのボーナスは、%dです",answer);
return 0;
}
0501デフォルトの名無しさん
NGNG初心者なの、ださくてごめん
0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNGうまく動かないのならだめってことだよ。
0504デフォルトの名無しさん
NGNGsが何のときうまく動かないの?
0505デフォルトの名無しさん
NGNGすべて0にする文を示しなさい。
こんな問題があるんですけど、配列の要素をすべて0にするという意味がわかりません。
わかる方いたら何方か教えてください。
0507デフォルトの名無しさん
NGNGifの中の代入式って…。
それとswitch使おうね。
というか、Cの教科書読もう。
0508デフォルトの名無しさん
NGNG宿題スレでやれ。
0509デフォルトの名無しさん
NGNGbzero((sizeof int)*100);
0510デフォルトの名無しさん
NGNGint a[100];
bzero(a,(sizeof int)*100);
0511デフォルトの名無しさん
NGNG先生に怒られるんじゃないの?
0512504
NGNG放置しないで(><;)
0513デフォルトの名無しさん
NGNGint a[100];
for (a[0]=1;a[0];){
bzero(a,(sizeof int)*100);
}
0514デフォルトの名無しさん
NGNGfor(a[0]=1;;a++){
if(a[0]==99){
a[0]=0;
break;
}
a[a[0]]=0;
}
0515デフォルトの名無しさん
NGNGfor (bzero(a,(sizeof int)*100);0;);
0516デフォルトの名無しさん
NGNG>>512
0517デフォルトの名無しさん
NGNG技術評論社の「C言語によるはじめてのプログラムレッスン1」の一番最後の問題
なんだけど、問題集の答えだと、たくさん行があり、この一冊をやった知識で
自分で作成したプログラム。だから、答えが無いし、初心者だから、エラーになって
しまう理由を教えて。
0518デフォルトの名無しさん
NGNGint a[100];
}HOGE;
HOGE i={0};
int a[100];
*(HOGE*)a=i;
0519デフォルトの名無しさん
NGNGint a[100];
}HOGE;
HOGE i={0};
int a[100];
for(*(HOGE*)a=i;0;);
0520512
NGNG(?_?;)
長さが0だとlefもrigも0でいいのかなぁ・・・?
0522デフォルトの名無しさん
NGNGあうー
a[0]++の間違いっす。
0523sage
NGNGとりあえず、コンパイラのエラーと警告文をすべて読んで、理由を調べてみること。
がんばれ。
0524デフォルトの名無しさん
NGNGstrlen("")が返す値は未定義(._ .;?
0525デフォルトの名無しさん
NGNGなんで?
0だろう?
0526524
NGNG0527デフォルトの名無しさん
NGNGn=strlen(s);
for(i=0;i<n;i++)
if(! isspace(s[i])) break;
lef=i;
for(i=n-1;i>=0;i--)
if(! isspace(s[i])) break
rig=n-i-1 ;
k=(lef+rig)/2;
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
for(i=0;i<0;i++)
if(! isspace(s[i])) break;
lef=i;
for(i=0-1;i>=0;i--)
if(! isspace(s[i])) break
rig=0-i-1 ;
k=(lef+rig)/2;
0529デフォルトの名無しさん
NGNGfor(i=0;i<0;i++)
if(! isspace(s[i])) break;
lef=i; // i == 0 なので lef == 0
for(i=0-1;i>=0;i--)
if(! isspace(s[i])) break;
rig=0-i-1; // i == -1 なので rig == 0
k=(lef+rig)/2;
0530デフォルトの名無しさん
NGNGsが空白3つの時、lefとrigは3になりますが、
それは意図した動きだと思います。
sがNULLだと駄目ですね。
>>429
strlenで失敗するから、rig以前の問題・・・?
429さんは何の文字列でチェックしたのかな〜(・_・ )
0531sage
NGNG\r\nがついてるのに一票
0532デフォルトの名無しさん
NGNG再帰を解説する書籍やページにはよく、クイックソートがのっていますよね。
だいたいの本は「これを再帰を使わずに書くとかなり厄介なことになるので・・・」
などと書いていますが、実際にどんなプログラムになるのか書いているのはすくないです。
そこで、自分で繰り返し版に直してみようと思ったんですが玉砕しました。
どう書けばいいんでしょう?また、どこかにソースがのっているページってありますか?
0533デフォルトの名無しさん
NGNGその時点で目的は達成されてるんじゃないのか?
「かなり厄介なことになる」というのは体感できたんだろ?
0534デフォルトの名無しさん
NGNG532はどんなプログラムになるのかを知りたいのであって、
どんな結果になるのかを知りたいのじゃないから
目的は達成されてないだろ・・
0535デフォルトの名無しさん
NGNGそういえば俺も見たことないなあ。
ゼロから作るとしたら、元データと同量のワークエリアを
確保していいのならすぐできそうだけどね。
0536デフォルトの名無しさん
NGNG厄介でもないよ。
int *quick_sort(int *a, int n)
{
int pivot, h, l, *high, *low, sp;
high = (int*)malloc(sizeof(int)*stack_size(n));
low = (int*)malloc(sizeof(int)*stack_size(n));
high[0] = n - 1;
low[0] = 0;
sp = 1;
while(sp > 0){
sp--;
h = high[sp];
l = low[sp];
if(h <= l)
;
else{
pivot = partition(a, h, l);
high[sp++] = h;
low[sp++] = pivot + 1;
high[sp] = pivot - 1;
low[sp] = l;
}
}
}
partition()とかは自分で作れ。バグあったらごめん。
0537デフォルトの名無しさん
NGNGちゃんと書こうとすると多少やっかいかな。
再帰で引き渡す引数を保管しとかないといけないですから。
引数になる値を配列なんかに入れてとすれば
あとはオーバーフローさせないようにすればいいだけか。
一日悩めば出来るでしょう。
どっかの本で見たような記憶もあるけど何だったか忘れた。
0538532
NGNGいろいろ、ありがとうございます。
ただ、c言語(というよりプログラミング)を勉強しつつやっているもんで
あんまりややこしいことはまだできないですが・・・。がんばって、やってみます。
アルゴリズムの勉強っておもしろいですね。文法覚えるよりずっと楽しいです。
C言語の入門書は山ほどあるのに、アルゴリズムの本って少ないようなきがしますが、
いいのはありますか?(っていうのはスレ違いかな)
0539デフォルトの名無しさん
NGNGおすすめなのかはよく分からんけど
アルゴリズム辞典(奥村晴彦著)だとバグフィックスされたソースが
ネット上ですべて手に入るからいいかもしれない。
0540536
NGNG0541デフォルトの名無しさん
NGNGどっからに手に入るの?
0542532
NGNG多分これです
http://www.vector.co.jp/soft/data/prog/se002453.html
>>536
せっかく書いていただいたのに、解読できません。
もっと基本的なことからやらないといけないのかも・・・。
しっかりやります。
0544デフォルトの名無しさん
NGNGアルゴリズム事典は初心者にはだめだろ。
あれは説明がわかりずらいぞ。
Cプログラマのためのアルゴリズムとデータ構造
SOFTBANK
から始めるのがいいんじゃないの
0545デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNG0547デフォルトの名無しさん
NGNGchar output[256];
int enUML(char* MOTO,char* HENKANGO){
     write(1,"後は任せた!!\n",13);
}
0548デフォルトの名無しさん
NGNGアルゴリズムが・・・
void *bitset(A,bit)
{
int *d=A;
int i = d + bit;
int m;
while(*d>0){
m = (*d)%2;
*d=m;
if(i==d)
*d++;
d++;
}
}
これだと、駄目な気がします。誰か教えてください。
0549ぶっふばると
NGNGint bitset( int A, int bit )
{ return A | 1<<bit ; }
int bitget( int A, int bit )
{ return A>>bit | 1 ; }
0550けろ
NGNG下は & だよね
0552デフォルトの名無しさん
NGNGint bitset( int A, int bit )
{ return A | (1<<bit) ; }
優先度注意。
0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNGbitset(int A, int bit)
が A の bit目のビットを1にするってのなら
int bitset(int A, int bit)
{ return A | (1<<bit-1); }
じゃないんですか?
0555デフォルトの名無しさん
NGNG0556shige
NGNGブッ殺してやる!
↓
ていねい語表現:
死にますよ〜
0557shige
NGNG君らにはrubyなんて理解も出来ないと思うけどね。
0558デフォルトの名無しさん
NGNG0559どーでもいいことだが
NGNGふつー、MLB が 0。
0561デフォルトの名無しさん
NGNG大抵のRubyユーザはUNIX野郎なのでCをカリカリ書きますよう。
大体RubyのソースはCで書かれているし……
0562shige
NGNG0563デフォルトの名無しさん
NGNG0564865
NGNGMLBって何?MSBの間違いでしょ。
それにどっちが0かはエンディアンネス次第。
リトルエンディアンだと普通はLSBが0ビットだよ。
0565デフォルトの名無しさん
NGNGいや、エンディアンに関わらずLSBが0だろ。
0566564
NGNGビッグエンディアンだとMSBが0ビットって書いてある事多いよ。
0567デフォルトの名無しさん
NGNG作っているけど他の型に対応させるのが難しいです。
char *datget(char *d,int n)
{
int i;
char *dd;
dd = d;
for (i = 0; i < n; i++)
dd[i] = d[n-i-1];
dd[n] = '\0'
return(dd);
}
じゃ、違うと思うし・・・。誰かわかりますか?
0568デフォルトの名無しさん
NGNGchar *datget(char *d, int n)
{
int i;
for(i=0; i<n/2; i++) {
char dd;
dd = d[i];
d[i] = d[n-i-1];
d[n-i-1] = dd;
}
return dd;
}
0569568
NGNG誤 return dd;
正 return d;
0570デフォルトの名無しさん
NGNG> 他の型に対応させるのが難しいです。
void *datget(void *d,int n)
にして、関数内部ではunsigned char *で扱え。
> dd[i] = d[n-i-1];
2つの値(a, b)の交換を行う為にはもう一つ変数(t)がいる。
xorとか変なテクニックを使わない限り
t = a; a = b; b = t;
としないと交換できない。
また、d = "1234567", n = 7の場合
dの0番目とdの4番目を交換d = "7234561"
dの1番目とdの3番目を交換d = "7634521"
dの2番目とdの4番目を交換d = "7654321"
dの3番目以降は交換する必要はない。
ヒントは以上、検討を祈る
0571デフォルトの名無しさん
NGNGをmain関数で呼出したいのですが、引数をどのようにしたら
いいのか、わかりません。多分 a は配列だと思うのですが、
どなたか分かる方よろしくお願いします。
0573デフォルトの名無しさん
NGNGdatgetとdatset何が違うの?同じでいいと思うんだが
ソースを見る限りだと汎用のbyteswap関数作れば事足りる
>>570
void *は賛成だけどunsigned char *にする必要はないと思われ
つーか、どっちでもいいと思う
0574デフォルトの名無しさん
NGNG手元にある数種類のプロセッサのマニュアル見てみた。
ちなみにMC68000、SH3、H8/300、TMS320DSPすべてビッグエンディアンだが
MSBが0になってるのはひとっつも無いぞ。。
0575デフォルトの名無しさん
NGNG> void *は賛成だけどunsigned char *にする必要はないと思われ
void *dだとd[i]とするとは文法エラー。
dはなんらかの型にcastする必要がある。
byte単位に処理を行う仕様なのでchar *, unsigned char *が適切。
unsigned char *としたのは俺の趣味
0576デフォルトの名無しさん
NGNGchar *datget(void *d, int n)
{
int i;
unsigned char *dd;
for(i=0; i<=(n-i-1); i++) {
dd = d[i];
d[i] = d[n-i-1];
d[n-i-1] = dd;
}
return d;
}
0577573
NGNG言葉不足でした。unsigned char *にする必要ないってのは
無駄に長くなるから、char *でも大丈夫ってこと。
結果はどっちでも一緒でしょ?
0578デフォルトの名無しさん
NGNGとりあえずコンパイル*だけ*は通すようにする
論理的なエラーは自分で見つけよう
> char *datget(void *d, int n)
char *datget(void *d, int n)
> unsigned char *dd;
char dd;
上記2個所を修正し、さらに
int main(void){
char s[] = "123456789";
char *p;
p = dataset(s, strlen(s));
printf("%s\n", p);
}
を付けて自分の思っている通りに動くかどうか確認しろ。
"987654321"と出力できれば正常だろう。
他の型に対応するのはまずこれができてからだ。
0579573
NGNG要素数が奇数の時に一回無駄にループする。
void *datget(void *d, int n)
{
char *p1 = (char *)d;
char *p2 = (char *)d + n;
while (p1 < p2) {
char t = *p1;
*p1++ = *--p2;
*p2 = t;
}
return d;
}
0580デフォルトの名無しさん
NGNGMLBは間違えた。LSBだな。Least Bit。
エンディアンは関係ないよ。メモリとレジスタをごっちゃにしないこと。
0581デフォルトの名無しさん
NGNGvoid *datget(void *d, int n)
{
char *p1 = (char *)d;
char *p2 = (char *)d + n;
while (p1 < p2) {
*p1 ^= *--p2;
*p2 = *p1^*p2;
*p1++ ^= *p2;
}
return d;
}
とか。
0583デフォルトの名無しさん
NGNG途中で変更したりしたいのですがどうしたらいいですか。
0584デフォルトの名無しさん
NGNG#include <stdlib.h>
int main()
{
int i;
int* p;
p = (int*)malloc( sizeof(int) * 10 );
if( p == NULL )return 1;
for( i=0; i<10; i++ ){
p[i] = i;
printf( "p[%d]=%d\n", i, p[i] );
}
p = (int*)realloc( p, sizeof(int) * 20 );
if( p == NULL )return 1;
for( i=0; i<20; i++ ){
p[i] = i;
printf( "p[%d]=%d\n", i, p[i] );
}
free( p );
return 0;
}
0585デフォルトの名無しさん
NGNGどうしても解りません。どうか教えてください。すいません。
include <stdio.h>
#define s 10000
#define v 30
#define YES 1
#define NO 0
int main(void);
int Min(int, int);
int MinSearch(int l[v], int c[v],int);
int n;
int main(void)
{
int i, j,k;
int sel[v], chk[v], distance[v];
int weight[v][v];
printf("頂点の数を入力せよ");
scanf("%d",&n);
printf("各頂点間の距離を入力せよ\n");
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
printf("%d-%d:\n",i,j);
scanf("%d",&weight[i][j]);
}
}
for(i=1;i<=n;i++){
chk[i] = NO;
distance[i] = s;
}
printf("始点となる頂点を入力せよ : \n", n );
scanf("%d", &sel[0]);
chk[sel[0]] = YES;
distance[sel[0]] = 0;
for (i = 1; i<=n; i++) {
for (j =1 ; j<=n; j++) {
if(chk[j] == NO){
distance[j] = Min(distance[j], distance[sel[i-1]] + weight[sel[i-1]][j]);
}
}
sel[i] = MinSearch(distance, chk,n);
chk[sel[i]] = YES;
}
for (i = 1; i <=n; i++) {
printf("頂点%dから頂点%dまでの最短距離は%d \n", sel[0], i, distance[i]);
}
}
0586デフォルトの名無しさん
NGNGint Min(int a, int b)
{
if (a < b)
return(a);
else
return(b);
}
int MinSearch(int l[v], int c[v],int n)
{
int i, min, num;
min = s;
for (i = 1; i <= n; i++) {
if (c[i] == NO && l[i] < min) {
min = l[i];
num = i;
}
}
return(num);
}
0587583
NGNG2次元以上の配列はどうしたらいいでしょうか?
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int i,j;
int**p,**q;
q=p=(int**)malloc(sizeof(int)*10);
for (i=0;i<10;i++){
q[i]=p[i] = (int*)malloc( sizeof(int) * 10);
if( p == NULL )return 1;
}
for( i=0; i<10; i++ ){
for( j=0; j<10; j++ ){
p[i][j] = i*10 +j;
printf( "p[%d][%d]=%d\n", i, j, p[i][j] );
}
}
p=(int**)malloc(sizeof(int)*20);
for (i=0;i<20;i++){
p[i] = (int*)malloc( sizeof(int) * 20);
if( p == NULL )return 1;
}
for( i=0; i<20; i++ ){
for( j=0; j<20; j++ ){
p[i][j] = i*20 +j;
printf( "p[%d][%d]=%d\n", i, j, p[i][j] );
}
}
for (i=0; i<10;i++){
free(q[i]);
}
free( q );
for (i=0; i<20;i++){
free(p[i]);
}
free( p );
return 0;
}
0590デフォルトの名無しさん
NGNGご苦労さま。でもメモリリークしてるよ。
n次元配列に対応できる記述ってあるのかな?
0591shige
NGNG∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ^∀^)< あほか
( つ ⊂ ) \_________
.) ) )
(__)_) (^∀^)ゲラゲラ
ruby >>>>>>>>>>>>>>>>>>>>>>> C
0592564
NGNG説明しにくいんだけど、MSB FirstとLSB Firstってのは、普通はバイト
の並び順だけど、実際にはビットの並び順とも考えられると思う。
もしメモリをバイト配列じゃなくて、ビット配列として扱えたとすると、
例えば32ビットの値はリトルエンディアンならLSBが0番目でMSBが31番目、
ビッグエンディアンならMSBが0番目でLSBが31番目という感じになる。
俺はこんな風に解釈してるんだけど、どんなもんでしょ?
0593デフォルトの名無しさん
NGNGchar str[100];
int i = 0;
while((str[i++] = "sage"[i]) != 0);
すなおに
char str[100] = "sage";
って書けって。
そりゃそうだ。
0594デフォルトの名無しさん
NGNG正道じゃない?
最初から入れたい文字列が決定しているわけじゃないときは
それなりに有効だと思う。
!=0 はいらないけど
0596デフォルトの名無しさん
NGNG#include<string.h>
#define SIZE 256
int main(void)
{
char buf[SIZE];
printf("input?");
while( fgets(buf, SIZE, stdin) != NULL){
buf[strlen(buf)-1] = '\0';
printf("]%s\n", buf);
printf("input?");
}
printf("end");
return 0;
}
とするして、input?Ctr+Z を入力すると最後のendが表示されません。
どうしてなんでしょう?
printf("\nend");
にすると
input?end
printf("\n\nend");
にすると
input?
end
になりました。
0597デフォルトの名無しさん
NGNGそれとも "sage"[i] のこと?
後者なら、
char hex[9];
for ( int lpc = 0; 8 > lpc; lpc++, i >>= 4 )
hex[ 7 - lpc ] = "0123456789ABCDEF"[ i % 16 ];
hex[8] = 0;
という程度なら邪道とは言えないのでは?
より邪道っぽいのは以下。
char mes[100];
int i = 0;
while ( i++[mes] = i["test"] );
0598580
NGNG世の中広いから、もしかしたら MSB が 0 番目ってマニュアルに書いてある
CPUがあるかもしれないけど、ふつーは、LSB が 0 じゃない?
8 ビットや 16 ビットで考えたとき、1 にしたいなら
MSB が 0 だと 8 ビットで 7, 16 ビットで 15 を指定しないといけない。
だけど、LSB が 0 なら CPU のビット数に関係なく 0 を指定できるし。
ちなみに MSB が 0 ではビットの重みと番号が一致しないのでばらばらに
なってしまう。
まず、レジスタでそう定義すると (MSB 31 .... 0 LSB )
エンディアンは関係しないのです。
勿論、メモリ上に読み書きするとエンディアンに応じたビットパターンが
書き出されるけど、それは別の話。レジスタに出し入れする段階で
自動的に処理されるから問題ないよね。
0599デフォルトの名無しさん
NGNGビッグエンディアンはデータバスの最下位ビットがより上位のアドレスにマッピング
されるのでやっぱりLSBは0なのよ。
0600デフォルトの名無しさん
NGNGどうでも良いけど、[ i % 16 ]; は [ i&0x0f ]; にした方が良さげ。
0601デフォルトの名無しさん
NGNGiをunsigned intにするとi % 16と書いても出てくるコードが
i & 0xfになるコンパイラはあります。
0602デフォルトの名無しさん
NGNG0603デフォルトの名無しさん
NGNGあほらしすぎて突っ込む気にもなれん…
15 & 16はいくつだ?
15 % 16はいくつだ?
0604デフォルトの名無し
NGNG>>597 だけど、>>600 はマイナスの場合を恐れていると思われ。
だからつまり、unsigned にすることで解決なのであってるんだけど。
もちろんコンパイルテストの時は unsigned にしたさ。
宣言部が落ちたのは申し訳も無し。
0605デフォルトの名無しさん
NGNG急いでいます。お願いします。
0606デフォルトの名無しさん
NGNGモノクロにする
0607605
NGNGカラーのままきれいにしたいのですが。
お願いします。
0608デフォルトの名無しさん
NGNG解像度を縦4倍、横4倍にする。
0609デフォルトの名無しさん
NGNG減色用アルゴリズムはいくらでも手にはいるし
ライブラリだって多く市販されている。
Cの話題じゃないからどっかいけ
0610605
NGNGおめーがどっかいけ!
0611デフォルトの名無しさん
NGNGよし、じゃあ1から教えてやるから必ず実行しろ。
1.丈夫なヒモを用意する。長さは2〜3m程度でよい。
2.直径50cm程度の輪を作る。
3.輪が地上2mくらいになるよう、高いところから吊す。
4.輪の中に自分の頭を突っ込んで思いきりぶら下がる。
これでお前が抱えているすべての問題は解決する。
0612デフォルトの名無しさん
NGNG>i & 0xfになるコンパイラはあります。
intでもi%16uだったらOK?
0613デフォルトの名無しさん
NGNGそれは最適化がかかってるだけ。勘違いしない方がいい
0614605
NGNGおまえがやれよ。ばっかじゃないのか
0615デフォルトの名無しさん
NGNGフルカラーな色データをRGBそれぞれ上位ビットだけ取り出して
0616デフォルトの名無しさん
NGNGマジメにやるなら色ヒストグラム出して代表色にク
ラスタ分け。が時間がないなら 615 の単純量子化で
緑に重みがけくらいが一番よいかな?
0617デフォルトの名無しさん
NGNG何も指示しなくてもこの程度の最適化はやってくれる、という例なんだけど。
0618デフォルトの名無しさん
NGNG教えて君のくせに偉そうな口を叩くな。死ね。
0619デフォルトの名無しさん
NGNGstr[5]からstr[99]の内容が、
・前者のやり方だと、ごみ
・後者のやり方だと、'\0'
になるんじゃなかったっけ。
あんまり意味ない領域だから、別にどうでもいいけど…。
0620ユニホームな七資産
NGNG611がネタ振ったつもりだったら煽られたくらいで乗るなバカ。
本気で言ってたんなら俺からも言わせて貰う。他人の苦しみを
理解できないおまえは生きてる資格がない。氏ね。
0621アンドレザジャイアント
NGNG何も起こらんじゃねーか、どーしてくれる
0622デフォルトの名無しさん
NGNG誰が苦しんでるんだバカ(藁
0623デフォルトの名無しさん
NGNG肉体派カコイイ
0624デフォルトの名無しさん
NGNGあなたの場合は、充分太いワイヤーで直径80cmほどの輪を作り、
地上4m位の高さに吊す必要があります。
もちろん充分に頑丈な梁か枝に吊しましょう。
0625593
NGNGそうですね。
while(str[i++] = *("sage" + i));
なんてのも考えたんですけど、
そちらのほうが邪道っぽいですね。
>>619
そのとおりです。
まあ、メモリが0でクリアされてないとダメなときって
そう無いでしょうから。
あったらあったで0で埋めてからやればいいんだし。
0626デフォルトの名無しさん
NGNG0627心の中では
NGNGオーグブイ
0629sage
NGNGあーぐぶい
0630デフォルトの名無しさん
NGNG0631sage
NGNGargument vector
0632NANASI
NGNGdrand48( )以外でおねげーしますだ。
0633#include <nanasi.h>
NGNGそんなこと人に聞かないでマニュアル読め。
0634632
NGNG標準関数ではないでしょ。
double drand48(void){
double ans;
ans=((double)(rand()))/32768;
return(ans);
}
とりあえず自分ではこのくらいしか思いつかん。
0635デフォルトの名無しさん
NGNG即値32768は何とかなりませんか。
0636???
NGNG下記のソースを実行すると、
Welcome to the real world.
27
Welcome to the real world.
4
と表示されます。なぜでしょうか?
文字数+'\0'=27ですから2行目の27は納得できますが
関数にポインタ渡しをすると配列のサイズが4になってしまいます???
Visual C++6です。
#include <stdio.h>
void Sub ( char *Text );
int main( void )
{
char Text[] = "Welcome to the real world.";
printf ( "%s\n", Text );
printf ( "%d\n\n", sizeof Text );
Sub ( Text );
return 0;
}
void Sub ( char *Text )
{
printf ( "%s\n", Text );
printf ( "%d\n\n", sizeof Text );
}
0637632
NGNGなりますね・・・。
double drand48 ( void ) {
double ans;
ans = ( (double ) ( rand( ) ) ) / ( RAND_MAX + 1 );
return ( ans );
}
どうでしょう?
0638デフォルトの名無しさん
NGNGこういうプログラムがあった場合、prt関数はコールバック関数といえるのでしょうか?
全然違う?
#include <stdio.h>
void function( void (*p) ( void ) )
{
p();
}
void prt( void )
{
printf( "hello, world" );
}
int main()
{
function( prt );
return 0;
}
0639デフォルトの名無しさん
NGNGchar *Text は配列ではありません。
char型データをさすポインタです。
だから、char *Textと宣言されているときのsizeof Textは、
VCのポインタのサイズである4になったのでしょう。
char Text[] = "xxxxx"
は、charの配列 "xxxxx"を初期値として持つ配列型変数です。
配列型変数に対して sizeof 演算子を適用すると、
配列の要素数*配列の要素のサイズ が得られることが決まっています。
配列と、ポインタ変数は、似て異なるものです。
0640デフォルトの名無しさん
NGNG大体あってます。
0641>639
NGNG636です。
詳しいレスありがとうございます。
しかし、Cは奥が深いですね・・・。
勉強し直します。
0642デフォルトの名無しさん
NGNG通常あるイベントに対し呼び出されるためにポインタとして登録される、
関数をコールバック関数といいます。以下典型的な例。
#include <stdio.h>
#include <stdlib.h>
void hehe(void){
printf("hehe\r\n");
}
void huhu(void){
printf("huhu\r\n");
}
void hihi(void){
printf("hihi\r\n");
}
void (*function[])(void)={
hehe,
huhu,
hihi,
NULL
};
int main(int argc, char* argv[]){
int i;
for(i=0;*function[i]!=NULL;i++){
(function[i])();
}
return 0;
}
0643デフォルトの名無しさん
NGNG君が浅いだけです.K&R全然薄いジャン.
0644デフォルトの名無しさん
NGNGわざわざ追い打ちかけるな
0645638
NGNGレスありがとうございます。
でも642さんのプログラムって関数ポインタを使って関数を呼んでるだけですよね?
そういうのをコールバック関数っていうんですか?
0646デフォルトの名無しさん
NGNGやっぱり関数ポインタを使って関数を呼び出しているだけです。
引数、戻り値、リンケージのタイプなどに取り決めがあって、
実行時に呼び出し先を登録、変更したりできるものを
コールバックといいます。
C言語的にいえば、ただの関数ポインタを使った関数よびだし
になる場合が多いと思います。
0647デフォルトの名無しさん
NGNGもう少し具体的に書くと下のサンプルのようになります。
hoge()は0,1のイベントに対応する関数を登録すると引数に指定した
方の関数をコールバックします。
これらの応用でステートマシン等が簡単に記述できます。
#include <stdio.h>
void hehe(void){
printf("hehe\r\n");
}
void huhu(void){
printf("huhu\r\n");
}
void hoge(int i,void (*function1)(void),void (*function2)(void)){
printf("event=%d ",i);
if(i) (*function1)();
else (*function2)();
}
int main(int argc, char* argv[]){
hoge(0,hehe,huhu);/*イベントに0を与える*/
hoge(1,hehe,huhu);/*イベントに1を与える*/
return 0;
}
0648デフォルトの名無しさん
NGNG全体的にわかりません
#include <setjmp.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
extern void jump_to_toplevel(int);
jmp_buf toplevel;
main(int argc, char *argv[])
{
void (*sig)(int);
if (setjmp(toplevel) == 0) {
sig = signal(SIGINT, jump_to_toplevel);
printf("You have five seconds.\n");
sleep(5);
} else {
signal(SIGINT, sig);
printf("Inturrupted!\n");
return 1;
}
printf("Done!\n");
return 0;
}
void
jump_to_toplevel(int x)
{
longjmp(toplevel, 1);
}
0649デフォルトの名無しさん
NGNGざっと見た感じだと、たとえばCtrl+Cのようなシグナルを受けたら
割り込み入ったら教えてくれるようなものかな?
実行すればわかるだろうけど・・・
0650sage
NGNGsetjumpを呼ぶと0が帰ってくるので
SIGINT割り込みのハンドラにjump_to_toplevelをセット、
その後五秒待機する。
何も起こらなければ5秒後に、Done!を表示して終わり。
SIGINTが発生すれば、
jump_to_toplevelが呼ばれる。
ここで、longjumpで、setjumpを呼んだところまで制御を戻し、
setjumpが0でない値を返したように振る舞う。
で、SIGINTを元の割り込みハンドラに戻して、
mainが1を返して終了する。
0651638
NGNGレスありがとうございます。
関数のポインタを渡すことによって、渡した先でその関数を呼べるようなものと理解しました。
イベントによって呼ばれる関数のような、自分が直接呼ばない関数を記述するのに向いているわけですね。
0652デフォルトの名無しさん
NGNGコールバック関数は、OSから呼び出される
ユーザープログラムと教わったのですが、
たとえば、Cではmain関数で、Windowsプログラミングでは
WinMainとウィンドウプロシージャが
コールバックだと・・・・
あれは嘘だったんですね?
0653638
NGNGコールバック関数の使い道として「OSから呼びださせる」というのがあると理解すればいいのではないでしょうか。
0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNG時に使うもんだよ。
あ、でも非同期ってのも分からないんだろうな…
0656638
NGNG0657ただのばか
NGNG感じですね。ボタンがコールバック関数にあたります。
0658デフォルトの名無しさん
NGNGあたらねーよ.ボタンにつけるハンドラがソレだろ.
0659shige
NGNG0660デフォルトの名無しさん
NGNG勝手に思っとけよ.
0661デフォルトの名無しさん
NGNG初心者が読むんだから少しは自重しろボケ
0662デフォルトの名無しさん
NGNG何のカンケーがあんだ?
0663C初心者
NGNG2進数、16進数などの良い参考書をご存知でしたら教えて下さい。
初心者なお願いで申し訳ないです。
0664デフォルトの名無しさん
NGNGプログラムしてみる。そうするとイメージが湧く。
0665663
NGNGすいません。アセンブラできません。
10進数や16進数を2進数(0と1の並び)で表示する関数を
自作して、それで勉強していますが、何かわかりやすい解説の載っている
本があればと思いまして。
0666デフォルトの名無しさん
NGNG自分でいろいろ試す、それが一番わかりやすいよ。
~,^,|,&,>>,<<
ビット演算子はこれで全部と思うよ
0667デフォルトの名無しさん
NGNGn 進法で l 桁の数 α = a_l a_(l-1) ..... a_1 a_0 は
l
α=Σ a_k * n^i
k=0
これじゃあかんの?
0668デフォルトの名無しさん
NGNGn^i -> n^k です。
激しく鬱。
0669デフォルトの名無しさん
NGNG例えば2の補数表現とか、データ型によって
シフト演算の意味が違うとか。
情報処理の問題集で練習ってのもありかな。
その辺は、クリアしてたらゴメン。
0670デフォルトの名無しさん
NGNG0671
NGNGアルファベット、数字、その他に分類してそれぞれの数を数えて、
表示するプログラムを作る方法を教えてください。
改行文字も「その他」で数えてください。
0672デフォルトの名無しさん
NGNG>>1 をよく読めタコ
>だが、FAQに載ってる質問すると煽るぞ、ゴラア!!
>それに勘違いするな、俺は貴様の宿題を解いてやるほど暇じゃない。
0673デフォルトの名無しさん
NGNGほれ。もう来るなよ。
0674デフォルトの名無しさん
NGNG0675デフォルトの名無しさん
NGNGhttp://mentai.2ch.net/test/read.cgi?bbs=prog&key=994065886
0676デフォルトの名無しさん
NGNGそのスレ見て思ったんだけど。。。
2ch って思ったより優しいオニイタマが多いのね。
0677デフォルトの名無しさん
NGNGあるのに自分でやる気一切なし、って感じ。
環境聞いても答えないし。
0678デフォルトの名無しさん
NGNGばかですよね。sizeofで調べても4バイトになるのに。
笑い飛ばしてもいいですか?
0679デフォルトの名無しさん
NGNG従って自分を笑い飛ばしなさい。
0680デフォルトの名無しさん
NGNGそうでないとしたら、
環境すっ飛ばしてintのサイズってわからないです。
0681おじいさん
NGNGだったんだがのー、さいきんのやつはせちがらいのー
0682678
NGNG0683デフォルトの名無しさん
NGNG0684初心者
NGNGImageコンポーネントって具体的に言って、どういう働きをして
どういうことができるんですか?
あと、ビットマップとはなんですか?
0685デフォルトの名無しさん
NGNGここまでスレ違いなのも逆に珍しい。
0686初必者
NGNG32 以上は無理なんでしょうか? 対象はlong longです。
asm で書くしかない?
0687デフォルトの名無しさん
NGNG頑張ればできる。
0688デフォルトの名無しさん
NGNGやり方はいくらでもあると思われ。
一例
#include <stdio.h>
#include <math.h>
long shiftleft(long long i,long j){
return i*(long long)(pow(2.0,(double)j));
}
long shiftright(long long i,long j){
return i/(long long)(pow(2.0,(double)j));
}
int main(int argc, char* **argv){
long long x=0xaa55ff00aa55ff00;
printf ("num=%x result=%x\r\n",x,shiftleft(x,45));
printf ("num=%x result=%x\r\n",x,shiftright(x,45));
return 0;
}
0690688
NGNG#include <stdio.h>
#include <math.h>
long long shiftleft(long long i,long j){
return i*(long long)(pow(2.0,(double)j));
}
long long shiftright(long long i,long j){
return i/(long long)(pow(2.0,(double)j));
}
int main(int argc, char **argv){
long long x=0xaa55ff00aa55ff00;
printf ("num=%x result=%x\r\n",x,shiftleft(x,45));
printf ("num=%x result=%x\r\n",x,shiftright(x,45));
return 0;
}
0691初必者
NGNG0692デフォルトの名無しさん
NGNGコンパイラは、ちゃんとシフト演算にしてくれ
るのですか?
0694デフォルトの名無しさん
NGNGそのような最適化はしてくれません。
pow()はこの場合2のべき乗の整数演算ですので64個の配列による
ルックアップテーブルで高速化できます。
他にもlongのシフト演算に分けて計算する方法もあります。
インラインasmもモチロン選択肢に入れてよいでしょう。
0695デフォルトの名無しさん
NGNGってことですね。ありがとうございました。
0696初必者
NGNGやっぱ楽は出来ませんね。
0697shige
NGNG顔を真っ赤にして耐えている姿を想像するだけで俺の気分は爽快になる。
Ruby万歳。俺にこんな快楽を与えてくれたRubyに幸いあれ。
0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNGでしょうか?
0700デフォルトの名無しさん
NGNGおそらくそのマシンの機械語命令のディスプレースメント値
の上限次第だろうが、ローカル配列はスタック上に取られる
ので、あんまりデカイの使うのは感心しない。
という書き方は不親切だろうか?
0701デフォルトの名無しさん
NGNGallocaで確保し続けてSEGV捕らえてサイズを計算
0702デフォルトの名無しさん
NGNG増分(いや減分か)をちゃんとしらべてな。
というかアドレスを表示すればいいのか。
それと、大抵はSEGVまでやらんでも alloca が NULL 返
すはず。
0703701
NGNGallocaってきちんとNULL返すの?少なくともVC++の_allocaは
例外飛ばすって書いてあるよ。UNIX系の方は処理系依存でしょ
サイズも4KBずつとかで失敗するまで確保し続ければわかる
0704デフォルトの名無しさん
NGNG0708デフォルトの名無しさん
NGNGexternは「外部ファイルで定義されてるよ」という宣言。
グローバルスコープにあるstaticは「内部ファイルでのみ参照するよ」という宣言。
で、俺の認識は間違ってないでしょうか?
詳しい定義を知っている人は教えて下さい。
#どうでもいいがC言語の予約語の使い回しは何とかならないものか
0709デフォルトの名無しさん
NGNG間違ってないと思う。
予約語を使い回したいの?
0710708
NGNGレスサンクス。
>予約語を使い回したいの?
ではなくて、同じ予約語が複数の意味を持つのが嫌だ。
void func()と(void*)とか、今回のstaticとか。
0711デフォルトの名無しさん
NGNGC言語ではメモリも演算子も使い回しです
i = 10 * 10;
*p = &i;
とか
つまり、そーゆものだと割り切りましょう。
0712デフォルトの名無しさん
NGNGC++ではさらにstaticの意味が増えてるぞ。
0713デフォルトの名無しさん
NGNG0714710
NGNGint i=3;
void func(){extern int i;printf("%d==3",i);}
>>712
クラスのstatic変数/関数、という意味?
他にもC++でstaticって拡張されたっけ
0715デフォルトの名無しさん
NGNG関数の中でexternを使うのは意見Cと互換性がありそうだけど、必ずextern "C++"
になってしまうんだよね。extern "C"とかやろうと思ってもエラーになってしまう。
0716714
NGNGごめん、詳しく教えて。
extern "C"って外部のアセンブラプログラムを
宣言するときの、「おまじない」程度にしか知らないので
0717デフォルトの名無しさん
NGNGextern "C"は見てのとおりリンケージをCの規則にするよ、ってことだべ.
なんで仕様書を参照せんのだ.
0718デフォルトの名無しさん
NGNGばーか、スレタイトル見ろよ。氏ね。
0720デフォルトの名無しさん
NGNGexternを知らない>>714は頭が悪いな。
0721デフォルトの名無しさん
NGNG仕様書を見た上での話じゃないのか?
まぬけだな。
0722デフォルトの名無しさん
NGNGソートは一通りわかるんですが、連結リストだとなんか大変なんで。
0723デフォルトの名無しさん
NGNGマージソート
0724デフォルトの名無しさん
NGNGケースによっては2分木にデータ構造を変更する。
ソートの必要がなくなる。
0725715
NGNG仕方ないので少しコメントするよ。
C++の外部リンケージはデフォルトではextern "C++"になる。このリンケージでは、
リンカに渡すことになるシンボルが、関数の引数情報を処理系依存の方法で関数名
に追加した形式になるのに対して、C言語との互換のためにあるextern "C"では、
そうした型情報がシンボルに反映されない。
関数内でextern宣言した場合、extern "言語"のような宣言をすることが許されな
いので、C++式の型情報を含んだシンボルしか参照することができない。
通常、extern "C"とextern "C++"の違いは関数に対するものだけど、処理系はオブジ
ェクト型に対しても、その型情報をシンボルに含めることができる。実際Visual C++
などではそうなっているような感じ。
つまり、extern "C++"以外のリンケージについては、必ず関数の外で宣言しないと
いけないということ。namespaceについても似た状況がある。
0726デフォルトの名無しさん
NGNG0727725
NGNGCで作成した成果物を有効利用するために必要なノウハウだよ。
0728デフォルトの名無しさん
NGNG0729デフォルトの名無しさん
NGNG#何故かわからない人はシステムの include ファイルの中を見てみよ
#う。見ても「こんなのC++のためだろが!」とか言ってる奴はこ
#の世では既に必要とされない人間だ。
古巣のいごごちの良さに味をしめ、巣を飛び出せない弱虫カコワルイ。
目を覚ませ。
0730デフォルトの名無しさん
NGNG値を 0 に向かって丸める式を教えて下さい。
例えば、n = -1, b = 1 ans = 0
n >> b; じゃだめみたいです。
0731デフォルトの名無しさん
NGNG1 ビット右シフトするということは 2 で割ることに近似するので
-1 / 2 = -0.5。 -0.5 は 0 に向かって丸めると 0。
答えは 0。
綺麗な式になるんでしょうか?うーん…
0732730
NGNGreturn (signed int)( (float)n / (float)pow(2,b) );
0733フツー
NGNGreturn (n + (n < 0)) >> b;
0734デフォルトの名無しさん
NGNGありがとうございます。えっと…これでいいのかな。
ちょっと検算しています。(^^;
0735734
NGNGちょっと合わないみたいです。
n=-32767 b=2 ans = -32767/4= -8191.75= -8191
(n+(n<0))>>2=-8192
なかなか難しいです…。
0736デフォルトの名無しさん
NGNG0737デフォルトの名無しさん
NGNGこんなんは、どうや?
return ( (n<0) ? ((signed int)-((unsigned int)-n>>b)) : (n>>b) ) ;
0738デフォルトの名無しさん
NGNG正なら単に右算術シフトだけすればいい
負数なら 色々あると思う。
思いついたのは
1)符号反転して処理した後符号反転する
if(n<0) return -(-n>>b); else n>>b;
2) (1<<b)-1を加算してから右算術シフトする
retur ( n +( (1<<b) -1 )&(n>>32 ) )>>b;
0739デフォルトの名無しさん
NGNGexternの使用方法がextern "C", extern "C++"しかない知らん厨房逝ってよし!
C++でも>>714の書き方は正当な書き方で、もちろん
int i=3;
int main(void) { extern int i; cout << i; return 0; }
と書いても正当だ。
また、ここでexternを省略し、
int i=3;
int main(void) { int i; cout << i; return 0; }
とすると動作が変わってしまう。
結論:715は知ったか厨房 なんか反論ある?
0741デフォルトの名無しさん
NGNGと言われないように、謝るか、釈明するかしてくれ。
0742デフォルトの名無しさん
NGNG> あれリンケージタイプの話だぞ。
確かに>>725はリンケージタイプの話であり特にこちらも異存はないが、
C++ではexternはリンケージタイプの指定だけに使われる予約語ではないし、
Cではexternはリンケージタイプの指定に使われる予約語ではない。
ここまで言えば>>715は
> 凄く恥ずかしいよ、
ってゆーのがわかるだろ?
0743初必者
NGNG>>715 が言ってるのはローカルスコープではリンケージタイプが
選べんので賛否両論あるだろうと言う話で、別に>>714を否定して
いる訳ではない(思いっきりtypoってるので真意は測れないが)。
キーワードはローカルでの関数の extern 宣言だ。mangled-name
にならんように出来んって話だと思う。
まあ715が舌足らずなのは確かだが、プログラマならそれくらい
理解できんか?
0744デフォルトの名無しさん
NGNG何故彼らは相手を攻撃するだけが目的の自分の幼稚な文章自体が、一番
厨房臭く見えてしまうことに気付かないんだろう?
0745デフォルトの名無しさん
NGNG真実よりも勝ち負けを優先するのは受験戦争を勝ち抜くための
鉄則です(w
0746739
NGNG> >>715 が言ってるのはローカルスコープではリンケージタイプが
> 選べんので賛否両論あるだろうと言う話で、別に>>714を否定して
> いる訳ではない
うん、否定はしていないが飛躍はしている
Cでは通常externとは外部参照を指定する予約語なのに
何故、C++のリンケージの指定というものを言い始めたのだろう。
話が飛躍しすぎ
この疑問の仮説として思い浮かんだのが
「externの使用方法がextern "C", extern "C++"しかない知らん厨房」
>>744
> 何故彼らは相手を攻撃するだけが目的の自分の幼稚な文章自体が、一番
> 厨房臭く見えてしまうことに気付かないんだろう?
同意。ところで、1バイト情報の無い書込みをageる奴も厨房臭くない?
# 厨房って自分の厨房臭さに気づかないから厨房でいられるんだね。
0747デフォルトの名無しさん
NGNG相手にするな>初必者
0748デフォルトの名無しさん
NGNGリンクの仕組みも知らん厨房逝ってよし
0750744
NGNGなにが「同意」だ。あほか。おまえのこと言ったんだよ。
0751739
NGNGint foo(void) { return 1; }
int main(void) { extern int foo; cout << i; return 0; }
上記の場合>>725の理由により駄目だろう。が、
int i = 3;
int main(void) { extern int i; cout << i; return 0; }
の場合、extern宣言したのは関数でもないし、構造体でもない。
それでも駄目なのか?その場合、何故駄目なのか?
>>750
> あほか。おまえのこと言ったんだよ。
何故>>750は相手を攻撃するだけが目的の幼稚な文章をageるんだい?
やっぱりオヤジ臭と一緒で自分の厨房臭って解らないみたいだね。
0752学生
NGNGCマガにC++入門講座って言うアセンブラのコードも
眺めながら学んでいこうって感じで連載やってるんですが、
このアセンブラのコードを自分で見たいときはどうやって見るんですか?
コンパイラはbccしか持ってないです。
0753デフォルトの名無しさん
NGNGどうせこぴ物で持ってねーんだろ.
0754735
NGNG単純な割算なので可能なら除算は…
>>737-738
-(-n>>b) は INT_MIN あたりの挙動が難しいのでキャストが
必要になりそうです。分岐はちょっとネックになるかもしれないです。
キャストや(1<<b)-1をあらかじめ加算するのはテクニカルですよね。
これ以上高速な方法は…ないですね、たぶん。(^^;)
脳に汗かきました。(^^;) ありがとうございます。
0755デフォルトの名無しさん
NGNGつか、フリーの bcc の話でしょ?
>>752
-S
つーか、引数無しで起動すると option の説明でるやん。
0756初必者
NGNGbcc についてるのかどうか知らないんだけどデバッカが
あればそれで動作を追っかけると非常に勉強になります。
良かったらお試しあれ。
0757デフォルトの名無しさん
NGNG0759デフォルトの名無しさん
NGNG0760デフォルトの名無しさん
NGNGint i = 3;
int main(void) { extern "C" int i; cout << i; return 0; }
って書けたらいーねってことじゃね?
>上記の場合>>725の理由により駄目だろう。が、
へ?
0761学生
NGNGint bar;
これをgccでC++としてコンパイルすると
上の方省略
.globl foo
.bss
.align 4
.type foo,@object
.size foo,4
foo:
.zero 4
.globl bar
.type bar,@object
.size bar,1
どこがおかしいと思ったかは、一番下はsize bar,4じゃないの?かです。
アセンブラは全く分からないので.bss .align .zero あたりも
怪しい気がするけど、こんなもんかな程度に気に止めてます。
0762739
NGNG> int main(void) { extern "C" int i; cout << i; return 0; }
> って書けたらいーねってことじゃね?
もし可能ならば
int main(void) { extern "C"{ int i; } cout << i; return 0; }
だろうな。
C/C++では関数内で関数が定義できないんで別に関数内でリンケージ指定の
externはできなくとも違和感は感じない。
0763初必者
NGNG腹立ったのだろうがエサをやるな。
762を見れば程度はわかるだろう。
0764760
NGNGextern "C"とかってのが、以前のexternの拡張ってのは理解してる?
例えば、
extern void f();
ってのは、
extern {
void f();
}
と等価。書き方のスタイルの問題といわれればそれまでだけども。
Cで言う
extern [型宣言文];
ってのがC++では、
extern "言語りてらる" [型宣言文];
って書けるようになったの。
つまり、externでいままでどおり外部リンケージを指定すると共に、
"C"などを指定することで名前解体をしないことをコンパイラに教えてるの。
だから、もし可能ならextern "C" int i;でへーきだと思うけろも。
この場合の{}は複文を一度にextern宣言する意味しかないよ。
例えばC++での
extern "C" int i;
は、Cで
extern int i;
と書いた場合と同様のリンケージ動作を期待して書くの。
たぶん、この辺でわからなくなってるんだと思うけど。。。
0765デフォルトの名無しさん
NGNGだって、かわいそうで見てられないのよ、なんか(笑
0766初必者
NGNGやめとけ。何度かやったが、その度に自分に都合の良いように
意見を変えるタイプだから、また君の発言から得た情報で頓珍
漢な反論をしてくるだけだぞ。
0767デフォルトの名無しさん
NGNGむぅ、そうかも。。。(-_-;;
0768760
NGNG>"C"などを指定することで名前解体をしないことをコンパイラに教えてるの。
って書いてるけど、
もちろん"C++"って書くと名前解体されるよ。突っ込まないでね(++
0769初必者
NGNG余計なことでゴチャゴチャしちゃってゴメンね。
.size bar 1 がメモリ確保のディレクティブなのかな?
なら確かに変ですね。.align に付いてはプロセッサが
大きなデータを読むときの境界を指定するものです。
データ・アラインメントとかのキーワードで調べてみて
下さい。
0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNGバカ
(ちょっとワラタけど)
0772sage
NGNGつっこみどころ多すぎて笑える
0773デフォルトの名無しさん
NGNGそういえば上のほうにもあったな。
0774sage
NGNGでも上の人たち739と同じくらい勘違いしてるって気づかない?
0775デフォルトの名無しさん
NGNG場合によっては認めるから。
0776sage
NGNGいいや、今からここはC++スレだ。
0777デフォルトの名無しさん
NGNGあのさあ、ちゃんとこのスレ読んでる?適当にこの辺だけ読んでるのか?
0778sage
NGNGいや、でもいいよ。C++スレだから。
0779デフォルトの名無しさん
NGNG0780デフォルトの名無しさん
NGNG| extern "C"とextern "C++"はリンク時に影響するからな
\__ _________________
━━━∨━━━━━━━━━━━━━
_Mona
Mona@ItteyoshiChubodomo
iii■∧ /
━ (,,゚Д゚) / ━━━━━ ∧∧━━ ∧∧
| つ ∇ ( ゚Д゚) (゚Д゚; )
| |┌─┐ /⊂ ヽ /⊂ ヽ
〜| ||□| √ ̄ (___ノ〜 √ ̄ (___ノ〜
∪∪ | | || ━┳┛ || ━┳┛
 ̄ ̄ ̄ ̄| | ====∧==========
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| Cスレでなにいってんの、この人
\____ ∧
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ . ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 引っ込みつかなくなってんだよ、きっと
\_______________________
0781初必者
NGNG0782デフォルトの名無しさん
NGNG| やっぱおまえ739だろ
\__ _________________
━━━∨━━━━━━━━━━━━━
_Mona
Mona@ItteyoshiChubodomo
iii■∧ /
━ (,,゚Д゚) / ━━━━━ ∧∧━━ ∧∧
| つ ∇ ( ゚Д゚) (゚Д゚; )
| |┌─┐ /⊂ ヽ /⊂ ヽ
〜| ||□| √ ̄ (___ノ〜 √ ̄ (___ノ〜
∪∪ | | || ━┳┛ || ━┳┛
 ̄ ̄ ̄ ̄| | ====∧==========
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| まるで野獣だよ
\____ ∧
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ . ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 氷魚が休みだからなあ。今日は。
\_______________________
0783デフォルトの名無しさん
NGNG0784デフォルトの名無しさん
NGNG0785デフォルトの名無しさん
NGNG間違ってることほったらかしたままでいいわけがない。
いろんな人が読むのよ。
まぁ、スレ移動して続けるのも手だけれども、もう終わってるけど(笑)
モナー貼ってイヤミ言うくらいなら、だまってろ。スペースが無駄。
0786学生
NGNG親切に答えてくれてありがとー。
スレ違いみたいだしまた来ますね。
0787デフォルトの名無しさん
NGNGCはC++であるとはいえない。
よってCに関わるC++の話題は良し。
0788739
NGNG> extern "C"とかってのが、以前のexternの拡張ってのは理解してる?
知らなかった...。
> externの使用方法がextern "C", extern "C++"しかない知らん厨房逝ってよし!
> C++ではexternはリンケージタイプの指定だけに使われる予約語ではないし、
> Cではexternはリンケージタイプの指定に使われる予約語ではない。
この発言は撤回する。
また、自分が無知なのを気づかず>>714を厨房呼ばわりしたことを謝罪する。m(_ _)m スイマセン
あと、初必者に無礼な口を利いていたことを謝罪する。m(_ _)m モウシマセン
あっ、>>750には無礼な口を利くのは当然なので謝らない。
あと、C++の話題はスレ違いだっていってる奴とかAA貼り付けてる奴と
同一人物だと思われているようだが人違いだ。
で、これからの話題は議論ではない、純粋な質問。
(続く)
0789デフォルトの名無しさん
NGNG> あっ、>>750には無礼な口を利くのは当然なので謝らない。
君さ、そんなことだから何時までたっても”厨房”なんて呼ばれるんだよ。
文体からしてかなり若そうだけど、君が言われるのは「精神が厨房」なんだ。
純粋な質問などと能天気なことしようと思ってるらしいけどさ、態度を
改めるのがさきじゃないか?
0790739
NGNG> 714は>>715の誤り
>>789
> 態度を改めるのがさきじゃないか?
俺が先に無礼な口を利いた人には謝罪し、態度を改めた(と自分では思っている)
煽り目的に無礼な口を利いた奴には謝る必要がない(と自分では思っている)
715や初必者には謝る必要があると思ったが、750には謝る必要性が感じられない。
0791739
NGNGC++全体に関する自分の知識不足を痛感した。
もう少し調べる時間が欲しいので今回のやりとりはこれで終わりにしたい。
>>789
750について謝る必要があるかどうか、
まだ続けたいんだったらその話題は別スレッドにしてくれ。
多分、スレ違いなので...。
0792デフォルトの名無しさん
NGNG> 715や初必者には謝る必要があると思ったが、750には謝る必要性が感じられない。
だから餓鬼だって言われるんだ。
そう感じられないんだったら口に出すな(これくらいのことも分からんのか)。
0794デフォルトの名無しさん
NGNG情けないねぇ。
俺が739をやりこめようとしてるとでも思ったのか?
0795デフォルトの名無しさん
NGNG新しく作ってみた、こっちでやってくれ
http://piza.2ch.net/test/read.cgi?bbs=tech&key=994396298
0796デフォルトの名無しさん
NGNG表面上反省したかに見える(こう言われてもしかたないのだぞ)739のような
書き込みを放っておくべきではないと思ったから、忠告しただけだ。
トリガーとなる発言さえ少なくなればよいのだ。
0797デフォルトの名無しさん
NGNG技術問題で、お互いの思想をぶつけ合った喧嘩は
たとえその思想が幼稚なものであってもそれなりに面白いけど、
単なる口喧嘩はここでやる必要は無し。
0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNG0800C初心者
NGNG0801C初心者その2
NGNGバックスラッシュ、|、/、を同じ場所で連続表示させて、くるくる回ってるみたいな
ものを表示してみたいのですが、どんな方法があり得ますか?
0802デフォルトの名無しさん
NGNGちょっとウェイトした後バックスペースで消して表示、を繰り返す
0803デフォルトの名無しさん
NGNGサンプル
#include <stdio.h>
int main(int argc, char** argv){
long i,j;
char c[4]={'|','/','-','\\'};
for(i=0;1;printf("%c\b",c[i=(i++)%4]))for(j=0;j<10000000;j++);
return 0;
}
0804デフォルトの名無しさん
NGNGえーん
最適化最強にしたら空ループが消えちゃったよ〜
0805デフォルトの名無しさん
NGNGはんぱじゃないくらいバグバグだね...
#include <stdio.h>
int main()
{
for (int i = 0; ; i++) {
putchar("|/-\\"[i % 4]);
for (volatile int j = 0; j < 10000000; j++)
;
putchar('\b');
fflush(stdout);
}
}
0806デフォルトの名無しさん
NGNG0807デフォルトの名無しさん
NGNG/**/
/**/int main()
/**/{
/**/ for (int i = 0; ; i++) {
/**/ putchar("|/-\\"[i % 4]);
/**/ fflush(stdout);
/**/ for (volatile int j = 0; j < 10000000; j++)
/**/ ;
/**/ putchar('\b');
/**/ }
/**/}
0808デフォルトの名無しさん
NGNG/**/#include <stdio.h>
/**/
/**/int main()
/**/{
/**/ for (int i = 0; ; i++) {
/**/ putchar("|/-\\"[i % 4]);
/**/ fflush(stdout);
/**/ for (volatile int j = 0; j < 10000000; j++)
/**/ ;
/**/ putchar('\b');
/**/ }
/**/}
0809デフォルトの名無しさん
NGNG/**/
/**/int main()
/**/{
/**/ for (int i = 0; ; i++) {
/**/ putchar("|/-\\"[i % 4]);
/**/ fflush(stdout);
/**/ for (volatile int j = 0; j < 10000000; j++)
/**/ ;
/**/ putchar('\b');
/**/ }
/**/}
0810デフォルトの名無しさん
NGNG<pre>
a b
</pre>
0811デフォルトの名無しさん
NGNGforの中に変数宣言をするのは止めて・・・
0812デフォルトの名無しさん
NGNG0813デフォルトの名無しさん
NGNGintが16bitで無限ループになると見た。
0814デフォルトの名無しさん
NGNGint main()で書くなら戻り値を書くべき。
ワーニングが出るぞ。
0815デフォルトの名無しさん
NGNG0816デフォルトの名無しさん
NGNGそんな環境は存在しない.
0817デフォルトの名無しさん
NGNGカタカナで書くならウォーニングだぞ…
CDワークマンでもいいのか?
まったく恥ずかしいな.
プレイステーションアワードも同じくらい恥ずかしいが.
0818デフォルトの名無しさん
NGNGワーニングであってるよ
0819デフォルトの名無しさん
NGNG命名、古寺の小僧。
0820デフォルトの名無しさん
NGNGどういう意味?C言語系?
0821デフォルトの名無しさん
NGNGいまだにそんなこと言ってる君のほうが100倍恥ずかしいんだけど
0822819
NGNG現代訳を探したら、小寺の小僧だった。
鬱だ…。
http://www.d1.dion.ne.jp/~y_kiuchi/setuwa/konj28-8.htm
0823801
NGNGDOSプログラミングな本を見たら座標が云々で、点を打つ関数がどーのこーのと書いてあってサパーリ
でしたが、こんな方法で実現できたんですね。
そもそもなんでこんなことを思ったかといえば、Linuxの起動時にスキャンディスク
の様なのがはじまって、パーセント表示と共に、この棒がくるくる回っててどうやって
ルンダろうと思ったのです。
コードの量から些細なことみたいですが感動しました。
0824デフォルトの名無しさん
NGNG0825デフォルトの名無しさん
NGNGあぁ、814もその程度のレベルがあればいんだけどね…
0826デフォルトの名無しさん
NGNGwarkならワークでいーだろがボケ.辞書くらい轢いてからにしろ.
0827初級者
NGNGi = (i++) % 4
ってiの値は変わりませんよね?
それとも仕様上不貞なのでしょうか?
0828デフォルトの名無しさん
NGNG(2) % 4 = 2
(3) % 4 = 3
(4) % 4 = 0
(1) % 4 = 1
:
:
0829デフォルトの名無しさん
NGNGそうはならない っていってるじゃん
0830デフォルトの名無しさん
NGNGwarkなんて単語あるのか?
0831sage
NGNG仕様上は不定なので、
なにが起こるかわかりません。
んなわけはないんだけど
たとえばそのコードでプログラムが止まっちゃうようなコンパイラがあったとしても
よいことになってます。
0833デフォルトの名無しさん
NGNG不定は不定だが、それはありえんだろ.
0834デフォルトの名無しさん
NGNGiがオーバーフローして負数になった時表示が不正になるとみた。
0837デフォルトの名無しさん
NGNGウォークマンはworkmanだろ(w
意味わかってんのか? ボーケ
0838デフォルトの名無しさん
NGNGボケがいまいち。2点
0839デフォルトの名無しさん
NGNG0840デフォルトの名無しさん
NGNGアセンブラレベルまで考えれる人間には何の問題もないのは一目
瞭然。言語論で遊んでるトイプログラマ達は勝手にやってて、っ
て感じ。
でも自分はそーゆーコードは書かない、ってとこだな。
0841デフォルトの名無しさん
NGNGwarkなんて単語うちの辞書には載ってないぞ。
だから意味を教えてくれ。
0842初級者
NGNGとりあえずANSI C的には未定義のようですね。
バカなアセンブラ上がりのまぬけなコードにぶつからないように
祈るバカりですね…
0843デフォルトの名無しさん
NGNG0844ふぇ
NGNG0845初級者
NGNGう〜ん、複数のコンパイラでマトモに動くものを作るには
ANSI等の標準規格に依存するしかないと思うのですが?
どんな歴史ですか?
0846デフォルトの名無しさん
NGNG1行にコードを集積する事が良い訳ではない。
0847デフォルトの名無しさん
NGNGそれを言うにはちと例題が悪いのでは?
0848デフォルトの名無しさん
NGNGそういうコードは書かないという根拠が、
ANSI/ISO規格なんじゃないの?
0849デフォルトの名無しさん
NGNG24時間常駐している奴が約1名居るようだしな。
ANSIの規格がどーたらと言った難しい話の前に、早くwarkの意味を書けよ。
0850デフォルトの名無しさん
NGNG相変わらずバカ丸出しだな。
0851sage
NGNG別に規格に関することは難しくもなんともないよ。
http://www.google.com/search?sourceid=navclient&q=warkman
0852デフォルトの名無しさん
NGNGhttp://www.google.com/search?q=wark
意外といろいろあるようです
0853デフォルトの名無しさん
NGNGMD warkmanも実際にあるようです。
0854rms
NGNGGNU autoconfをヨロシク。
http://www.gnu.org/software/autoconf/autoconf.html
0855デフォルトの名無しさん
NGNGピンぼけだねぇ。
それとも最近のautoconfはi=i++をどこでも同じに動くことを保証して
くれんのか?
0856デフォルトの名無しさん
NGNGi=i++;
と
i++;
って、たいていの場合は同じだよな。
でも、そんなの書くな。
0857デフォルトの名無しさん
NGNGと同じ場合もあるし、そうでない場合もあるんだってば
0858デフォルトの名無しさん
NGNG>>804辺りからあげ足の取り合いスレになっているから自然な
流れなのでは?
>>852
Warkmanという人名はあるみたいだね。
でもwalkやworkと間違えているお間抜けな人が凄くHITするのは
気のせい?
>>853
良く判らないけれど、そのサイトの高校生はSONYのwalkmanを
warkmanと間違ってるんじゃないの?
SONYのサイトで検索してもwarkmanはヒットしないし。
まぁバッタもので有るかも知れないね。
0860C初心者
NGNGauto型char配列
char str[10];
があるとします。この時、以下のコードは全て同じ意味(結果)になりますか?
A: memset( str, 0x00, strlen(str));
B: memset( str, '\0', strlen(str));
C: memset( str, 0, strlen(str));
D: str[0] = '\0';
E: str[0] = 0;
F: str[0] = NULL;
G: strcpy( str, "");
要は初期化です。
また、AからGまでどれも同じ結果が得られる場合、一般的に
どれが良いコードでしょうか。
それとも、auto型は初期化しないのが普通ですか?
初心者な質問ですみません。よろしくお願いします。
0861デフォルトの名無しさん
NGNGA-Cはそもそも初期化されていない配列に対する strlenが未定義なので
同じかどうか以前にダメ。
D-Gはおなじ。
どっちかっつーと Dがまともな書き方。
E, FはUNIX系に多いタイプ量を減らした書き方。
Gはたぶん馬鹿にされるからやめとけ。
0862デフォルトの名無しさん
NGNGこれに答えたらまたあげあし取りする気?
最近のこのスレのパターンだしね。
マジに知りたいのなら初心者スレで聞く事をお勧めする。
0863デフォルトの名無しさん
NGNG結果は同じには、ならない。
使う時は、どんな初期化が必要化考えてから、
好きに初期化すれば良い。
0864デフォルトの名無しさん
NGNG0865デフォルトの名無しさん
NGNG0866デフォルトの名無しさん
NGNGstrlenじゃなくsizeofならば、A−Cの中ではBが一番まともかな。
全クリアでね。
DはA−Cとはまた違う意味で初期化。
Fは厳密に言うと間違い。
Gは無駄。
0867デフォルトの名無しさん
NGNG結果は同じになる。
行頭に全角文字があるから全てコンパイルエラー。
エラーメッセージが違うけどな。
0868デフォルトの名無しさん
NGNG0869デフォルトの名無しさん
NGNGFは、厳密にはいいみたい。
でも、かっこわるいから、やめといた方がいいね。
0870C初心者
NGNG>>861
>A-Cはそもそも初期化されていない配列に対する strlenが未定義なので
>同じかどうか以前にダメ。
つまり、変数に何か入れる前には strlen は使えない、と言う事でしょうか?
strlen の戻り値が10になる保証は無い、という意味ですか?
Fはまれに NULL が ((void *)0) と定義されている場合があるようですが……。
Gは他人のコードに書いてあった記述なのですが、
見た時ちょっと違和感があったので。
やはりDが無難でしょうか。
>>862
そのような気は毛頭ありません。本当に初心者です。以前にもこのスレで
お世話になりました。
0871デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNG0873デフォルトの名無しさん
NGNGstrを文字列として使う限りGは不正じゃないですよ。
Fは#define NULL -1である処理系も有り得ますからNGです。
866の言うように全初期化が紛れがなくて良いと思います。
0874デフォルトの名無しさん
NGNG>つまり、変数に何か入れる前には strlen は使えない、と言う事でしょうか?
strlenが、どのような関数なのか考えて下さい。
>Fはまれに NULL が ((void *)0) と定義されている場合があるようですが……。
それを知っているなら、使うべきではない。
>Gは他人のコードに書いてあった記述なのですが、
>見た時ちょっと違和感があったので。
問題はない。ただ、そんな事で関数を使うべきでもない。
>やはりDが無難でしょうか。
Dか、strlen(str)をsizeof(str)に換えたB。
使う時は、どちらが必要なのかを考えて。
0875デフォルトの名無しさん
NGNGNULL != 0な処理系ってどんなの?
0876デフォルトの名無しさん
NGNG>Fは#define NULL -1である処理系も有り得ますからNGです。
その、処理系がNGだと思うのは俺だけ?
0877デフォルトの名無しさん
NGNGその上で NULL という名前のマクロを 0 以外に定義する処理系は
NGだとおもう
0878デフォルトの名無しさん
NGNG0番地付近にレジスタをアサインしている処理系は保護のため
NULL=-1として逃げている場合が多いようです。
0879デフォルトの名無しさん
NGNG実際の定義が0でないのは初耳。
thx
0880デフォルトの名無しさん
NGNGされると思うのですが、確保された""はどうなるのでしょうか?
0881デフォルトの名無しさん
NGNGそれは、コンパイル後のコードの問題であって、
Cの中で、NULLポインタが0でないものは、NGだと思う。
0882デフォルトの名無しさん
NGNG整数として評価されたときに0になるだけだよ。
0883C初心者
NGNGありがとうございます。
結論としては、
memset( str, 0x00, sizeof(str));
これがベストということでOKですか?
「全初期化が紛れがなくて良い」とおっしゃるのは、str[0]からstr[9]までの
10バイトがすべて0になるから、先頭だけ0にするより安全、と
いうことですよね。
0884デフォルトの名無しさん
NGNG動的に確保されるわけじゃなくて、プログラムのデータ領域をロードしたときに
すでにそこにある、と思ってください。
0885デフォルトの名無しさん
NGNG'\0'
0886デフォルトの名無しさん
NGNGポインタが 0 と等しいかどうか比較する
ポインタが 0 と等しくないことを比較する
ポインタに 0 を代入する
だけ、Cは特別扱いしてるだけだよ?
中に何の数字が入っているかどうかは、処理系依存。
でも、上に上げた比較の都合で、不定ポインタをNULLという
名前で定義してるわけだから、
0以外の値になってるってのは、その処理系がおかしいと思うなあ。
ダメプログラマが勝手に定義した値じゃなくて?
0887デフォルトの名無しさん
NGNG個人的には、「0x00」ではなく、「'\0'」の方が良いと思う…。
ついでに、「0x00」を使うなら、「0」と等価なので、
他の定数を使ってるなら、それらと合わせた方が、見やすいかも…。
0888デフォルトの名無しさん
NGNG0889C初心者
NGNGmemset( str, '\0', sizeof(str));
これがベストのようですね。
皆さん、ありがとうございました。
>888
とても勉強になるので、マターリしたいのはやまやまなのですが、
眠くなってまいりました……。
0890デフォルトの名無しさん
NGNGポピュラーなのは「返り値」「戻り値」「リターン値」のどれですか。
上にない他の言い方でもOKですので、教えて下さい。
0891デフォルトの名無しさん
NGNG戻り血
痢痰血
0892デフォルトの名無しさん
NGNG0893デフォルトの名無しさん
NGNGどれでもいいんでないの?
あまり一般的ではないけど「関数値」という言い方もあるね。
0894デフォルトの名無しさん
NGNG全くつまらんな.0点.
>>890
かえりちだな.
0895デフォルトの名無しさん
NGNG復帰値
0896890
NGNGこうやってみると、呼び方は沢山あるようですが、
ポピュラーな呼び方は、ないようですね。
これからは、周りに合わせて適当に呼ぶようにします。(日本人的考え)
どうもありがとうございました。
0897デフォルトの名無しさん
NGNGまぁその3つがその順でポピュラーじゃないか?
それ以外は業界の変人だ!
0898デフォルトの名無しさん
NGNG0899デフォルトの名無しさん
NGNGいいえ。もっと変人です。さらにその中の変人が天才と呼ばれます。
0900デフォルトの名無しさん
NGNG聞こえるたびに思考が途切れて困ります。
0901デフォルトの名無しさん
NGNGリターン値よりはマシと思われ.
0902デフォルトの名無しさん
NGNGもどりね
0903デフォルトの名無しさん
NGNG皆さんお願いします。
さー、みんなで考えよー
0904デフォルトの名無しさん
NGNG次スレッドに持ち越しだな。
新スレ立ててくれたら考えてあげるよ
0905デフォルトの名無しさん
NGNG英辞郎 on the Webにはエントリーがありました。発音は不明。
http://www.alc.co.jp/
wark
【名】 痛み
【自動】 痛む
アメリカのOn line dictionaryのサイトをいくつかわまってみましたが、
エントリーのあるdictionaryは見つからず。
ただ、大物のOxfordが会員制(無料?)のため調べることができず。
0906デフォルトの名無しさん
NGNG4(1-1/3+1/5-1/7+・・・・・・・)
を求めるプログラムで()の中を
つくろうとしたのですが
#include<stdio.h>
int i;
double a,b;
main()
{
a=1;
b=1;
for (i=1;i<100;i++){
b = b+2;
a = a + 1/b * pow(-1,i-1);
}
printf("a= %d",a);
}
じゃうまくいきいません。
どこがいけないのでしょうか?
0907デフォルトの名無しさん
NGNGpowなんてつかうな
0908デフォルトの名無しさん
NGNG0909デフォルトの名無しさん
NGNG階乗なんてどこにあるの?
0910デフォルトの名無しさん
NGNG0911デフォルトの名無しさん
NGNG0912デフォルトの名無しさん
NGNG0913デフォルトの名無しさん
NGNG超初心者ですいません。
0914中途半端くん
NGNG動くかな?
double a=0,b,f=1;
for(b=1;b<200;b=b+2)
{
a=a+1/b*f;
f=-f;
}
a=a*4;
printf("a=%f\n",a);
0915デフォルトの名無しさん
NGNGc=1 と置いてループ中に c=c*-1 するも良し
偶数項と奇数項でループをわけるでも良し
0916デフォルトの名無しさん
NGNGfor(i=1;i<100;i++){
a=a+1/b-1/(b+2);
b=b+4;
}
とかね
0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNG2で割ったあまりを調べる以外に。
0920918
NGNG大量に調べる場合はそっちの方が早いんでしょうか?
0921デフォルトの名無しさん
NGNG0926ひよこ
NGNG関数を作る時、 sample(int a, int b); のように
引数を作ると思うのですが
printf(); 関数などは引数が使用者によっていくらでも増やすことが
できますよね?
このような関数はどうしたら作れるのでしょうか
0927デフォルトの名無しさん
NGNGだっけ?
0929sage
NGNGint monaprintf(char *p, ...)
{
int rc;
va_list ap;
va_start(ap, p);
rc = vprintf(fmt, p);
va_end(ap);
return rc;
}
int main()
{
}
0930918
NGNG計測してみます。
0931デフォルトの名無しさん
NGNG{
int i;
double data[10];
for(i = 0;i < 10;i++) {
printf("%d番目の数字を入力してください : ",i+1);
scanf("%f",&data[i]);
}
printf("\n入力されたデータは以下になります。\n");
for(i = 0;i < 10;i++)
printf("%f\n",data[i]);
printf("\n");
return 0;
}
実行して数字を入力すると、変な数字が表示されるのですが
なにが悪いのでしょうか?
0932デフォルトの名無しさん
NGNG#include <stdio.h>
#define MAX_NUM_DATA 100
#define MAX_NUM_HIST 10
#define FILENAME "prog8_d.txt"
int read_data( char *filename, int *data, int N);
void print_hist( int n );
main(){
int data[MAX_NUM_DATA];
int hist[MAX_NUM_HIST];
int n;
int i;
int idx;
n = read_data( FILENAME, data, MAX_NUM_DATA );
for( i=0 ; i<10 ; i++ ){
hist[i]=0;
}
for( i=0 ; i<n ; i++ ){
idx=data[i]/10;
if(idx==10)idx=9;
hist[idx]=hist[idx]+1;
}
for( i=0 ; i<MAX_NUM_HIST ; i++ ){
print_hist(hist[i]);
}
}
int read_data( char *filename, int *data, int max_data ){
FILE *fp;
int n;
int d;
if( ! (fp=fopen(filename, "rb")) ){
fprintf(stderr,"could not open file %s\n", filename);
return(-1);
}
n = 0;
while( n<max_data && fscanf(fp,"%d",&d)==1 )
data[n++] = d;
return(n);
}
void print_hist( int n ){
int i;
for( i=0 ; i<n ; i++ )
putchar('*');
putchar('\n');
}
0933デフォルトの名無しさん
NGNGfloat data[10];
にしてみよ。さすれば汝救われれれれ.
0934デフォルトの名無しさん
NGNGというより、むしろ…まあ、いいや
0935デフォルトの名無しさん
NGNG一応つっこんでおこう
#define MAX_NUM_HIST 10
の意味がないところがあるぞ…
0936932@研修期間
NGNGなんか、prog8_d.txt読み込めないぜ!
クビがかかってるからアセるぜ〜…
0937デフォルトの名無しさん
NGNGというか、社会人が宿題以下の問題を持ち込んだのは
あんたがはじめてだよ。(大爆笑)
0938デフォルトの名無しさん
NGNG-- qwe.h --
typedef struct QWE {
:
} Qwe;
-- asd.h --
typedef struct QWE Qwe;
struct ASD {
Qwe *pQwe;
:
}
-- asd.c --
#include "qwe.h"
#include "asd.h"
:
-- any.c --
#include "asd.h"
:
とかやると、asd.c では、同じtypedefを二回やることに
なりますよね。
今使っているコンパイラでは全然警告も出ずに、
これでいけてるんですけど、これって規格上でも
おっけーなんでしょうか。
0939デフォルトの名無しさん
NGNGいやなら#ifdefでククレカレー
0940932@研修期間&鬱
NGNGくっそぉ〜…!!
営業で入射したんだけどね…
いつのまにか、プログラマーの新人に回されたのさ!
自分はメールくらいしか出来ないんだけど、何でやねん!
とりあえず、第一関門でクビになったら給料半月分しか出ないッスよ。(泣)
0941デフォルトの名無しさん
NGNG0.txt〜29.txtまでをランダムで開きたいのですがどうすれば良いでしょうか?
i=rand()%30
fp=fopen(%d".txt","r",i);
これじゃだめですよねぇ
どうすればいいのでしょうか?
0942デフォルトの名無しさん
NGNGsprintf が便利
0943デフォルトの名無しさん
NGNG0944932@研修期間&鬱
NGNG漏れに半月分の給料で
ガマンしろとおっしゃっている。ああ、おっしゃっているとも!
エラー0だけど、何で読み込めないんだ〜!!
0945デフォルトの名無しさん
NGNGあのさ、nも0だろ、たぶん
0946デフォルトの名無しさん
NGNGCやり始めて3ヶ月でまだ使ったことがない文ですが
早速今から試してみようと思います
ありがとうございます
0947デフォルトの名無しさん
NGNGprog8_d.txt
の中身がわからんのに答えられるか。
scanfは実務じゃ使わないがな。
0948932@研修期間&鬱
NGNGぐお!すいません!
12
46
76
23
65
34
9
57
4
…(中略)
20
63
数字の間は「・」みたいので区切られてる。
コピペしたら改行された…くっそ〜!
0949デフォルトの名無しさん
NGNG>数字の間は「・」みたいので区切られてる。
それが原因だよ(大爆笑)
0950デフォルトの名無しさん
NGNGファイルを一括で読みこんでstrtokで「・」を抜け
0951デフォルトの名無しさん
NGNG「・」
改行の化けだろう
0952932@研修期間&鬱
NGNGえ?じゃあどうすれば…
爆笑されまくってるな…くそ!営業マンはつらいヨ
0953デフォルトの名無しさん
NGNGsprintf(motxt,"%d.txt",i);
これで1〜30.txtをランダムで出せるようになりましたが
ファイルオープンの仕方が良く分かりません
自分ではこうしてみましたが
fp=fopen(%s,"r",motxt);
コンパイルできません
何処が間違ってるのでしょうか?
0954932@研修期間&鬱解消ぎみ
NGNGやさしくしてくれたみなさん、ありがとうございます。
ドキュソな私にも理解できそうな
気がしてきたので、あとは自力でがんばります。
(くっそ〜…あと、9問もあるぜ〜。もっと難しいのが)
0955デフォルトの名無しさん
NGNG君はイチからやりなおしだ。
0956デフォルトの名無しさん
NGNGfopen の仕様ってちゃんと見た?(大爆笑)
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/fopen.3.html
0957デフォルトの名無しさん
NGNGそれだと0〜29.txtだね(大爆笑)
0958デフォルトの名無しさん
NGNGぎゃあ
fp=fopen(motxt,"r");
良く見たらこうでした
この先不安だ(ポインタとか)
0959デフォルトの名無しさん
NGNGi=rand()%30+1
すんまそん
0960デフォルトの名無しさん
NGNGでも、チミのコードは比較的素直で読みやすい
0961修士一年
NGNGint i;
int b[90];
for(i=0;i<10;i++)
b[i]=i*10;
さあ,b[0]〜b[9]までの数字を文字化けせずに
どうディレクトリ内の"result.dat"に書き込むにはどうすればよいか?
簡単すぎるよな。やっぱり。
0962デフォルトの名無しさん
NGNG「文字化けせずに」というのが分かりません。
普通にテキストファイルで書き出せばいいの?
「ディレクトリ内」というのはカレントディレクトリですよね?
0963デフォルトの名無しさん
NGNGcopy con result.dat
0
10
20
30
40
50
60
70
80
90
^D
0964デフォルトの名無しさん
NGNG「自分でやってみたら文字化けした(しかも自分では理由はわかっていない)」に1500カノッサ
0965デフォルトの名無しさん
NGNGage
0966デフォルトの名無しさん
NGNG文字列ではないものに対して、文字化けするって、どういうことだ?
0967デフォルトの名無しさん
NGNGfprintfでも使え>>961
0968ジョブス2世
NGNGC言語なら、オレに聞け! <5>
http://piza.2ch.net/test/read.cgi?bbs=tech&key=994908590
レス数が950を超えています。1000を超えると書き込みができなくなります。