2 :
uy:2012/06/30(土) 21:39:00.12
俺はゴミカスだ
よく覚えておけ
はい
2 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん
なんだいきなり
externを書かない場合があるのをいい加減なと言っていた人が前スレでいたが、
externについては省略が許容されてるので、書こうが書くまいが何も変わらない。
extern = public
>struct A {int a};
>
>main()
>{
>struct A __i686;
>__i686.a = 686;
>}
普通にエラーだろ。
ふにゃ~
4byte int型に値を入れて、char型のポインタを使って1byteずつ参照したときに
範囲外を参照したときに長いバイト列が表示されるのはなぜでしょうか
初期化されていようが無かろうが、指定アドレスから1byte長の値を読み込むものだと思うのです。
int x = 300; (0x12c、 バイナリ 2C 01 00 00)
char* p = (char*)&x;
printf("%#x",*(p+4));
出力
0xffffffcc
printf(…,p[4]&0xff);
と書くべき棚
12 :
uy:2012/07/01(日) 00:06:04.24
>>9 void main(){
printf("%d" , sizeof(char*) );
}
初心者はいい加減にしろ
#include <stdlib.h>
int main(int argc, char *argv)
{
printf("uy is stupid.\n");
return(0);
}
wchar_tのデータを改行で分割して1行ずつ処理していきたいのですが、
使用関数はwcsncmpでしょうか?
窓屋さん、お呼びだ
>>10 >>11 すみません、たしかに上手くいったんですけど何がいけなかったんでしょう?
>>7 アンスコで始まる識別子はシステムに予約されてる。
ユーザーコードでは使用してはならない。
>>9 確保したバッファの外側を参照した時点で、どう動作しても仕方ないってのはある。
>printf("%#x",*(p+4));
はpをunsigned char*で宣言した上で↓が良いでしょう。
printf("%#hhx",*(p+4));
>9,17
可変引数に対する暗黙の型変換が原因。
貴方はcharを渡しているつもりだろうが、コンパイラが最終的に 'int' に変換している。
※例えば printf( "%x", (char)*(p+4) ); と書いたら、一旦charに変換された後intに変換される。
21 :
20:2012/07/01(日) 01:15:26.73
もうちょっと補足しておく。リファレンスで printf を調べると基本的には↓のようになっているはず。
int printf ( const char * format, ... );
ご覧の通り第二引数以降は型が不明である。
これを踏まえて以下を考えていただければ、Cについての造詣が深まると思う。
・引数に渡した値は、printfの内部にはどんな型として渡るのか?
・printf内部ではどうやって型を判断しているのか?
>>20 char って、これが unsigned か signed かは実装依存だってことも、んー、陥穽ばかり‥‥‥。
ありがとうございました
奥が深いです
>>7,18
単にセミコロンが足りないってだけなんだが。
>struct A {int a};
>struct A {int a;};
1バイトの-1を
4バイトに拡張したら
どうなるかって話だろ。
-1 = FFh
これを4バイトにしたら
000000FFh(255) ではなく
FFFFFFFFh(-1) になる。
符号無しなら
FFh = 255 だから
そのまま 000000FFh となる。
円周率って世界中のPCを一斉に動かして分担処理させて解けば
何桁くらいまで求まりますか?
正しプログラミング言語はC言語とします。
コンピュータの数は1億台くらいとします。
>>27 円周率の計算って並列化しやすい部類なんでしょうか?マチンの公式とかあんまりそんな感じがしないのですが。
>>28 足し算でしょ?
並列化は簡単では?
それぞれのコンピュータである項について足し算
アンスコ=アンダースコート
インスコ = インストール
ブルスク
ブルースクリーン
ブルマ スクール水着
最近のPCはブルスクでねーな
>27
何この小学生低学年レベルの質問。
>最近のPCはブルスクでねーな
マザボの初期不良でOSインストールで何度か。
sin(x)の区間の傾きをネズミ算ネットワークで細分化していけばいいんじゃないかな
PI=(hの総和)*2/R
ねずみ算の結果、円周率は無限大に
あれはリンカがDEC FORTRAN互換の頃からある機能。
MASMなんて使ってのは20年以上前だな。
Qは老害だな
へえ
ただの知ったかぶりだろ
π/4 = Σ( (-1)^n/(2*n+1) )
n=0~∞
円周率を求めるにはこの式を使えば並列計算に向けになる
>>49 マジかよと思ってやってみたら n=1000000 までループ回しても小数点以下5桁までしか確定しない
とんでもない収束の遅さだったwww
構造体でメンバに構造体のサイズを要求するようなAPIがありますが
APIは何のために、どのように使うのでしょうか?
typedef struct 構造体タグ
{
unsigned int サイズ;
int ホゲ;
} 構造体名;
構造体名 フー構造体;
フー構造体.サイズ = sizeof(構造体名);
みたいなことです。
比嘉ちゃんかわええ
そうそうバージョンが上がって構造体の要素が増えたりした時用
構造体の内部構造はコンパイラが違っても同じになるのか?
mallocで取ったのにかぶせるとき。
いまさらそんな本が必要だってことが知ったかぶりの証拠だって自分で認めてるの?
>>58 それは「知ったかぶり」の定義を間違えているのでは?
知ってるか試すべき
最近知ったことをリアルタイムで知ってたかのように振舞うのも知ったかぶりだよ
>>61 かりにその定義が妥当だとしてリアルタイムで知っている/知らないをどのように検証するの?
くだらない
ほんっと、くだらないね。
>>5 ヘッダファイルで宣言するような場合だと、
関数の場合はextern無しで良くて、
オブジェクトの場合はextern無いと規格上は2重定義になって
未定義になるんじゃなかったっけ?
どうだったかな。
突っ込みよろしく。
C++だと関数でもextern必要だから書く癖つけた方がいいと思う。
>>66 JIS X3010
6.9.2 外部オブジェクト定義
> 翻訳単位が、ある識別しに対する仮定義を一つ以上含み、
> かつその識別子に対する外部定義を含まない場合、
> その翻訳単位に、翻訳単位の終わりの時点での合成型、
> 及び0に等しい初期化子をもった識別子のファイル有効範囲の
> 宣言が有る場合と同じ規則で動作する。
で、翻訳単位の最後に0初期化の初期化子を持った定義がある挙動をする、
と解釈した。
で、翻訳単位が複数に渡る分割コンパイルの場合、
それぞれの翻訳単位の最後に同じ定義が存在することになるので、
リンク時に2重定義になるのではないか、と解釈した。
>>68 「その翻訳単位ごとに」
>翻訳単位の最後に0初期化の初期化子を持った定義がある挙動をする、
のではなくて、すべての翻訳単位がリンクした後に
>翻訳単位の最後に0初期化の初期化子を持った定義がある挙動をする、
と解釈するのが妥当では?
解釈しなきゃあいけないような定義ってクソだろ
捨てろよ
>>68 JIS ppppppppppppppppppppppppp
#include <stdio.h>
int main() {
long long int a = (long long int)1 << 63;
printf( "%lld", a );
return 0;
}
これを実行すると-9223372036854775808と表示されるはずですが、うちのgccでは0になります。何かオプションが必要なんでしょうか?
>>73 うちのgccなら
-9223372036854775808
>>74 感謝 printfを調べればよかったんだな
うちの
man printf
ではわからん
>>69 それはない。
リンクしてしまった時点でそれは翻訳単位とは呼ばれないから。
それぞれの翻訳単位を翻訳する過程で仮定義の解決が行われる、
としか取れない。
気持ち悪い例を出せばあるバージョンのgccでは、
複数ファイルに同じグローバル変数の定義(仮定義じゃなく)があった場合
警告も出さすに1つのグローバル変数としてリンクした。
しかしpedantic-errorを指定するとエラーになった覚えがある。
なので例えばgccに限定すれば関係は無いのかも知れないが、
規格の上ではexternを付けて宣言し、定義は明示的に
プログラム無いで1ヶ所に限定すべきだと思う。
「externなんて要らない」というのは環境に依存する話で
一般論としては言いし過ぎだろ。
もしくは規格に「同じ定義があった場合は1つにまとめる」というのがあって
俺が読み飛ばしちゃってるかのどっちか。
64って数字を入れるのは気持ち悪いよな
>>79 単に一時的なバグだったんじゃねーの? > あるgcc
>>79 > 規格の上ではexternを付けて宣言し、定義は明示的に
> プログラム無いで1ヶ所に限定すべきだと思う。
「すべきと思う」ってどういう意味?
「規格上決まってる」のか「あなたがそうしたい」だけなのか?
規格でどう規定されてるかじゃなくて、あなたの文の意図を聞いてるんだけど。
>>79 確かにこの点についての典拠はいろいろみているのですが、肯定否定とも今ひとつ決定打はないみたいです。
翻訳単位別に同じ名前の外部変数がダブって生成されるというのは不自然なのですが‥‥‥そんなコンパイラを禁止する規定はなさそう。
リンク時に外部識別子はなにはともあれひとつにまとまるのが嬉しいんですけれども、ああ困った困った。
>「externなんて要らない」というのは環境に依存する話で一般論としては言い過ぎだろ。
まあそうなんですけれども、先にあげた masm のこともあるし、宣言extern/定義public を使い分けるというのは、少なくとも c がアセンブラの慣わしから切り離されるのは、んー、そんな時代なのかな?
また忘れたころに「extern は要らない子」と主張して肯定ないし否定の決定打を待つことにしましょうか。
自分で探せって?まあそうですけど。
>>79 >複数ファイルに同じグローバル変数の定義(仮定義じゃなく)があった場合警告も出さすに1つのグローバル変数としてリンクした。
別々に初期化を明示していながらまとまるのは、確かにこれは気持ち悪い。
やっと独習C読み終えた記念
1日で多いときに20ページくらいしか進まなかったから3週間くらいかかったー
初心者で勉強するだけならそんなもんでいいんじゃね
T *ary[] (Tはtypedefされた)という仮引数を持つ関数があるのですが、これにconstをつけて
・配列の各要素として格納されているアドレスを変更したり配列の要素を並べ替えてはならない
・個々の要素であるアドレスが指す先のデータは変更してよい(むしろ変更したい)
…つまり「配列が変更不可能なのであって、その中の要素が指す先は変更可能である」ということはできますでしょうか?
安直に const T *ary[] とすると「「const T *」の配列」と解釈されてしまうのか
関数内で T *item = ary[i]; としたときに「異なるconst修飾子です」と警告されてしまいます。
環境はVC2008です。
T *item = (T *)ary[i];
89 :
デフォルトの名無しさん:2012/07/02(月) 09:32:55.03
T * const ary[];じゃないの?とかいまさら。
>>89 ありがとうございます、それみたいです!
ちゃんと T *item = ary[i] では警告が出ず、ary[0] を変更しようとすると怒られました
const がポインタ宣言の*と配列名の間に付けられるなんて想いもしませんでした…
基本書一通り読み終えたら、後は自分でいろいろ書いてコンパイルしまくるだけだな
やってみないと実感湧かないもんねえ
亀レスになったが。
Annex J (informative) Portability issues
5. Common Extentions
J 5.11
に、複数の定義がある場合の動作は未定義ですとある。
未定義というのはエラーじゃないけど強適合するプログラムではやっちゃいけないということ。
J 5に書いてあるということは、広く使われている拡張があるということ。
例えば複数の定義に矛盾がなければ一つにまとめるなど。
ぶひひ
>>91 本来ならばもっとCについて学ぶべきなんだろうけどさっきからjavaに手を出している
javaが終わったらc++、そも後にpythonかrubyやる予定
本当はObjective-CやりたかったんだけどMac持ってないから買うまでの間に一通りやっとこうと思って
AppleのObjective-C処理系はちょっと前までgcc、最近はclang。
だからcygwinやLinux上でもObjective-Cの勉強はできる。
APIもcocotron.org使えば、初級まではなんとかなる。
>>96 やり方が違っているような気がするが、がんばってくれ
本読むだけでできるようになる人もいなくはないんだろうが
まずありえない
へえ
hello world
から、いきなりゲーム作りましたって人いたけど、稀なケースだろうね
1時間でテトリスって動画あるけど、相当練習したんじゃないの
いたいんだからそっとしといてやれ
>>99 一応独習Cに乗ってるプログラムは例題も含めて全部試したぜ
家にいて起きてる間はPCに噛り付いて独習Cやって、
ベッドに入ったらiPadのtextasticとオンラインIDE使って苦Cやらなんやら見ながらやってた
コマンドプロンプトさえ知らなくてコマンドライン引数で何日も足止め喰らうくらい馬鹿だから、本読んだだけで理解するなんて俺には到底無理だ
~は有効なwind32アプリケーションではありません
アクセスが拒否されました
実行しても↑みたいになって実行できない。
他の開発環境でやってみたら、無事動く。
原因は何でしょう? メモリ?
>>104 64bitアプリケーション
OSが違う
ファイルの破損
思うんだが目的が単純なもののプログラムって馬鹿にされがちだよな
円周率とか√の計算をプログラムで求めようとすると
「小学生みたいな事やってんなよ」
って言われる。
もっとコンピュータのシステムにかかわる事をプログラムしろよみたいな。
そういう風潮がある。
結局プログラマーにはなれなかったがコンピュータが好きになったという
点ではC言語に感謝したい
趣味ができた
>>105 どうやらファイルの破損だったようです。
有難うございます。
PC再起動してみたら、立ち上げ時に visuall c++ runtime error なんたらかんたらと出た。
新規作成でやってみたら無事実行
>>94 thanks!! 確認しました。
ISO/IEC 9899:1999 anex J.5.11 Multiple external definitions
There may be more than one external definition for the identifier of an object, with or
without the explicit use of the keyword extern;
明示的に extern キーワードを使用する、あるいは使用しない形で複数の外部オブジェクト(変数)を定義することはあってもいい。
if the definitions disagree, or more than one is initialized, the behavior is undefined
しかし、定義が食い違っていたり、あるいは複数の箇所で初期化されていたりする場合は、その振る舞いは undefined である。
初期化が複数あるとだめなようですね。定義は複数あってもいいようです。
ふう
今頃それってどんだけ流行遅れなのw
QZはuy並の知ったかぶり野郎
$ cat t.c
int a;
int a;
extern int a;
int a = 1;
extern int a;
$ gcc -std=c99 -pedantic -c t.c
$ nm t.o
0000000000000000 D _a
$
ちなみに初期化子がついてる定義にextern付いてると、
初期化子あるのにextern宣言してるよ!と警告が出る。
初期化子のあるファイルスコープ変数は暗黙のexternで冗長だから。
116 :
デフォルトの名無しさん:2012/07/02(月) 20:34:37.12
クズは辞書の存在も知らないんだな。
ググれゴミカス野郎
>>115 こうやってすぐに噛み付いて来て全くスルー出来ない当たりもQの精神年齢の低さを思わせる
QZはクズの略
uyはウンコ野郎の略
120 :
uy:2012/07/02(月) 22:43:17.88
でっていう
やめるのですボクたち
ほっといて、おっさん
123 :
デフォルトの名無しさん:2012/07/03(火) 00:36:18.92
C言語で*でダイヤ型のピラミッドアートを作りたくてここまでは作れたのですがfor(r=0; r<h; r++)
{
for(g=1; g<h-r; g++)
{
printf(" ");
}
for(g=0; g<2*r+1; g++)
{
printf("*");
}
printf("\n");
}
for(r=0; r<h; r++)
{
for(g=0; g<r; g++)
{
printf(" ");
}
for(g=0; g<2*(h-r)-1; g++)
{
printf("*");
}
printf("\n");
}
その後ができません。
やり方をおしえてくれませんか?
>123 こうしたかったのか?
#include <stdio.h>
#define H 6
int main(){
char c[H+1];
int y;
for( y = 0; y < H; ++y ) c[y] = '*';
for( y = 0; y < H; ++y ) {
printf( "%*.*s*%.*s\n", H, y, c, y, c );
}
for( y = H; y >=0; --y ) {
printf( "%*.*s*%.*s\n", H, y, c, y, c );
}
}
126 :
デフォルトの名無しさん:2012/07/03(火) 00:54:49.81
>>125 どうなるかわからないです><
すいません
127 :
デフォルトの名無しさん:2012/07/03(火) 00:57:19.98
*
***
*****
*****
***
*
を
*
***
*****
***
*
にしたいんです
>>127 #include <stdio.h>
int main(void)
{
int l[]={1,3,5,3,1};
int i;
for(i=0;i<5;i++)
{
printf("%*s%.*s\n", 2-l[i]/2, "", l[i], "*****");
}
return 0;
}
130 :
デフォルトの名無しさん:2012/07/03(火) 01:12:46.62
a->b->cってなに?
アロー演算子
struct zzz{
char nm[50];
int b;
int c;
};
struct zzz *a;
でa->bはわかるけど、a->b->cって使い方の意味がわからない・・・
構造体の中に別の構造体へのポインタが有るんだよ
別の構造体とは限らないか
いずれにせよポインタ
???
aはbを指すポインタ
bはcを指すポインタ
× ポインタ
○ ポインター
↑馬鹿
×馬鹿
○馬鹿ー
>>139 ちょっと前までは
×ポインター
○ポインタ
×ユーザー
○ユーザ
×フロッピー
○フロッピ
だったというのに。
それにしてもグレート・マイクロソフト大王様は偉大だなあ
143 :
デフォルトの名無しさん:2012/07/03(火) 08:26:47.78
クズは放置で。
Cで正規表現って使えますか><
Cで正規表現って使えますか><
使えますん。
使えませ。
ありがとうございますm(_ _)m
perl勉強してきます
いや、フロッピーはフロッピーだったろw
もう見たことない奴もいるから別にいいんだけどさ。
以前からフロッピーだったぞ
IBMはディスケット
詳しくは
Microsoftランゲージポータルの用語検索
で
フレキシブルディスク()
フロッピーディスク
フロッピーディスクドライブ
Its a Sony.
自己参照構造体は宝の持ち腐れ
と言うと?
初心者の妄言とかマジいらねー
なんで初心者って何年間もC言語でとまって、
ある日突然「C++は使えるんだけどなあ」とか言いはじめんの? バッカじゃねーの?
C++だけ使えますとかいう状況はありえねーから!!!!!!!
他の言語の膨大な知識を持った上で、C++を使って初めて
ようやくC++を「「「まとも」」」に扱えるわけで
C++は広い
C++ではなく、他言語でプログラム知識をつけなければ
まともなC++コードなんてかけるはずもないのになんで初心者は「C,C++」わかりますとかいっちゃうわけェ?ねえ? は? 意味不明なんだけどさ?
つーかC言語にしたってそうだよ
時代遅れ言語使ってんだから他言語でやってるノウハウをいかにC言語に持ってくるかは
開発においてかなりの焦点になるわけで
C言語しかやってない奴がC言語できますとか
「嘘ついてんじゃねえよし値!!!!!!!」って思う
なんでさっさと、全言語覚えようとしねーんだよバッカじゃねーの
あ、バカだから覚えられないのか^^;;;
もうプログラミングやめろよ
才能ない 市ね
C言語で動的にコード生成もかけるし
C言語でlambdaもかけるよ
ちゃんと知識があればな
そこまでやってからC言語扱えると言えカス初心者共が
お前もrubyの初心者何年やってんだよw
この板の荒しは初心者に毛が生えた程度のレベルがほとんど
ダラダラと長文書くやつは例外なくゴミカス
毛が生えたら用済み
C言語ってアセンブラで書いたメイン処理の為の補助言語でしょ?
フェロモンの体表定着を目指した進化らしいからね
◯◯入門で検索すると大抵は伊倉辰雄って人のページが最初のほうにでてくるんだけど、
この人この界隈では著名な人なの?
168 :
uy:2012/07/03(火) 18:30:28.77
for (;;)
for(;;)
上と下どっちがいいの?
要はスペースをいれるかいれないか
くっつけると関数みたいじゃん
>>169 どちらも泣き顔のAAみたいに見えて嫌いだから while (1) 使うわ
>>170 やっぱ関数以外は離したほうがいいもんなのか
int _ = 1;
...
for (;_;) {
while (o_o) {
俺は誰の指図も受けない
return(0);
関数なの?死ぬの?
無駄に括弧付けると死ぬの?
return ((((O_O)))));
179 :
デフォルトの名無しさん:2012/07/03(火) 20:07:15.92
死ぬ。
typoするとハマる
①
int main(void) {
}
②
int main(void){
}
③
int main(void)
{
}
これだと何番がいいの?
int main()
{
}
>>181 どうせ整形ツールに通すからどれでもいい
184 :
デフォルトの名無しさん:2012/07/03(火) 20:27:42.28
ふう
>>181 他の言語もやってると①番に落ち着くような気がする
教科書とかはページ数節約するために、行数少なくなる書き方してるからね
>>181 #include <stdlib.h>
int main(void)
{
return(0);
}
10 GOTO 10
>>189 Why do you feel it?
関数は
{
}
制御文は
for(){
}
>>193 テメーの描いたクソコードを全消しして
綺麗な更地にしてくれるツール
行数の無駄
>>193 お前の生ゴミのような顔をキレイな生ゴミに整形してくれるツール
mainの引数にvoidはアカン。
初耳です
引数無いならvoidでいいんじゃねと覚えたての俺が言ってみるテスト
引数はあるからね。
だからだめなの。
int main(void) というのは
規格で認められているmainの形式のひとつなわけだけど。
void main( も規格で認められているmainの形式のひとつだわな
つまりアカンかアカンくないのかどっちなんだよ
規格書よめ。ちゃんと書いてある。
嘘書くなゴミカス。
規格書自体がゴミ
long mainだろうがfloat mainだろうが、コンパイラを作る人が是とすればOKである
戻り値voidはアカンけどな
同意デス!
規格上、(もちろんホスト環境の話)
int main()
int main(int argc, char *argv[])
が認められてる。
C99では前者はint main(void)と同等なので、
もちろんint main(void)も認められているということになる。
またmainに限っては返値の方はintなのにreturnで値を返さなくても良い@C99。
で、その続きがあって
その他としてmainの書き方はコンパイラの人が定義していいよって事になっている
規格で「処理系定義」とされている部分を、
一部の処理系で定義されているからといって「規格で認められている」と思うのは
あまりにも能天気すぎる。
定義されているし実在しているのに認めない人って何かの病気なんでしょうか
まあそのへんがゴミクズのゴミクズたる所以なのだが
規格って
こういうことができたらいいな
とか
後追い
とかあるしね
うん
つまり、C99まではvoidはアカンかったわけやな。
void main() と main() は違うし
mainが値を返さない、というのも違うのだけど
その違いすらわからないまま偉そうにほざいてるのがゴミクズ
組み込みでもない限りvoidはアカンだろ
main()はintが省略されてるだけでしょ?
void mainはANSI-Cの規格外だったはず。
OSに正常終了の0を戻さないといけないんじゃなかったっけ?
main() は、型を省略された関数、ってことで、int main() と同じになる。
main()関数のみ、値を返さない場合はreturn 0と同等になる(C99から)。
void main()は、標準規格では許されていない。
各処理系の独自拡張の部分で許しているものもあるかもしれない。
俺のgccでは警告もでない
OS上で動かす前提の話?
単独で動く場合は、返り値は不定でもいいんじゃね
今は、決まりごとみたいに0返しましょうって流れでしょ
230 :
デフォルトの名無しさん:2012/07/03(火) 23:32:48.82
>>228 そういう人が書く入門本がvoid main(void)とかにしてるんだろうなー
そのくせANSI-C準拠とか書いてたり。
どの本とは言わんが。
>>228 警告云々ではなく何も返ってこないのが問題
232 :
188:2012/07/03(火) 23:37:48.16
は?
エラー処理できんくなるやろ><
じゃあOSのmainはどうなってるの?
返すOSが無いんだが。
>>236 それいうと
mainってのはただの関数名ってこと
238 :
デフォルトの名無しさん:2012/07/03(火) 23:54:07.69
アホ?
>>228 gcc -Wall test.c
みたいにやると
警告:'main'' の戻り値が 'int' ではありません
って出てくるよ
240 :
188:2012/07/03(火) 23:58:30.44
>>237 > mainってのはただの関数名ってこと
mainは規格上特殊な関数なんですよ。ただの関数じゃないんですよ。
どちらの主張も「オレの使う環境では」って言ってるだけにすぎんのだよ
243 :
188:2012/07/04(水) 00:01:10.22
gcc 4.3.3 だよーん
初心者にはこう書きましょう
って、いえば終わり
環境依存とか多すぎてイライラする
__|__ __|__ /\ ____
__|__ _|_ /__\ / | _|_
__| / |/ ヽ _|_ ( | .__|
(_ノ\ ヽ__| ノ ヽ _|_ \ し(_丿\
| 立 ヽ|二| | | | ___
ノ|ヽ日 ヽ|二| | | .|
| 心 /ハ .」 | (___
__
\ | |
_ |_|二|_ ―┼―ヽヽ_/_ . l | _|_,
| |┌┐ | ―┼― / \ | \. |  ̄ ̄| ̄ \ /ヽヽ |/⌒ヽ
/. |└┘ .」 | ゝ / ___| | | | | / /| |
/\____ \_ \ノ\ レ レ ノ l__. | ○ヽ
247 :
デフォルトの名無しさん:2012/07/04(水) 00:27:37.55
お前がそう思うならそう(ry
メーン関数とメイン関数って違う物なの?
違いますん。
フリーメーソン関数は?
変な神話を信じてるみたいだけど
カーネルモードって全てマシン後で書かれてるから
OSにメイン関数なんて無いだろう
俺は見たんだ
じゃあ、マシン前は?
254 :
uy:2012/07/04(水) 10:21:41.80
また知ったかが騒いでるのか
教科書コードはint mainでいいよ
今更ゴミカスC言語の常識覆すだけ無駄だから
ただしC言語を勉強中とか、サンプル程度のCソースコードはvoid mainでかいとけ
あるいはvoidもなしで
main(){ でもいい
そのほうが短くすむから
あとvoidで定義してもコンパイラが気を利かせて普通は0を返すようになってるから
お前たちゴミカスは心配しなくていい
C言語はゴミカスと言いつつ必死にC言語についての書き込みをしているuyが笑える
voidにすると0を返すとか、アセンブラからやり直せレベル
ふーん
uyはゴミカスだから最初に呼ばれる関数がmainとでも思ってるんだろ
IPを記録ってどうやるんだろうな?
そもそもそのプロトコルの何を記録したというんだ?
Monazilla wwwww
IPとIPアドレスって違うよな?
くぴー
IPの内容はスタックに退避だっけ?
IP=情報処理
ぴーかー
知的所有権だろうjk
チュー
リング
らせん
271 :
デフォルトの名無しさん:2012/07/04(水) 17:47:00.40
なんでscanf関数は危険なんですか?
なんでググらないんですか?
危ないからだろう
なんで危ないんですか?
>>271 知ってるか?
水道水は危ないぞ
販売されている食品も大半が水道水を使ってるから同様に危ない
main関数云々でここの奴らの理解度の底が知れたな
また浅いやつが出てきたな。
同意
理解シマシタ
・・・ト思イマス
uyが特に低レベルすぎて話にならない
C言語なら俺に聞け(入門編)スレ3大議論
(1)main関数の型
(2)extern は必要か?
(3)NULLは0か、それとも(void*)0か?
(4)exitの前にすべてのfreeをすべきか?
freeはもう好きにしてくれて話だけど
closeは結構難しい
285 :
デフォルトの名無しさん:2012/07/04(水) 21:32:12.15
そういうことは議論してから言え
freeしないとメモリリークとか言う奴は、どのタイミングでメモリリークが発生してるのか説明して欲しいもんだ
32bitプログラムを64bitでコンパイルした場合、
ポインタのアドレス(整数値)がどうなるか
32bitプログラム上でシミュレートするのは可能ですか?
32bitのアドレスを単純に2倍するだけじゃだめだよな
そりゃそうだ
エミュレーター探せば?
290 :
デフォルトの名無しさん:2012/07/04(水) 22:48:03.21
char *s
と
char s[100]
の違いが全く分かりません。
なんで勉強したの?
char *s はアドレスを入れるための4バイトの領域を確保する
char s[100]は100バイトの領域を確保する
293 :
デフォルトの名無しさん:2012/07/04(水) 23:05:51.48
>>292 でもchar *s
s="iamclever"
として
prinf("%s\n",iamclever);
としたらちゃんと表示されます。
iamcleverは9byteですから
4バイト以上確保してることになりませんか?
295 :
デフォルトの名無しさん:2012/07/04(水) 23:15:24.81
「アドレス」は4バイトで足りるでしょ?
296 :
デフォルトの名無しさん:2012/07/04(水) 23:21:22.60
>>295 うん?
char *s="aaaaaaaaaaaaaaaaaaa";
と比較的長い文字列も記憶できるのだから
4バイト以上確保できませんか?
char *s="aaaaaaaaaaaaaaaaaaa";
この場合は、リードオンリーな領域に"aaaaaaaaaaaaaaaaaaa"が確保された後で
その先頭アドレスの値4バイトがsにセットされる
"iamclever"は10バイトだろ
>>282-286 それマジでfreeやめて欲しいよ
プログラマ自身がかいたGCではなく、言語側のGC機能で
自動回収なら許すけど、C,C++とかで自分でかいたゴミカスGCとか手動コードで解放はマジでやめろ
全部OSにやらせろ
300 :
デフォルトの名無しさん:2012/07/04(水) 23:35:33.94
なんでCすら理解してないのにここにいんの?
>>290 char *s:sはchar型の戻り値を持つポインタ
char s[100]:sはchar型の戻り値を持つ配列で要素数が100
全然違うでしょ?
302 :
デフォルトの名無しさん:2012/07/04(水) 23:37:46.28
マルチスレッドでスレッド数を動的に増やすにはどうしたらいいか教えていただけませんか?
>>296 初心者のうちは配列のほうを使っとけ
学習順序というものがある
ポインタはずっと後でいいんだよ
>>302 は?バカなの?
main関数実行した当初はスレッド数1個だろ
そこからマルチスレッドにするんだったら動的に数増えてくじゃんバカ?
305 :
デフォルトの名無しさん:2012/07/04(水) 23:45:59.78
ポインタと配列は別物なので混同しない様に。
306 :
デフォルトの名無しさん:2012/07/04(水) 23:52:54.59
>>304 すいません 質問の仕方が悪かったようです
配列は最初に要素数を指定しますよね?マルチスレッドもスレッド数を最初に指定すると思います
で,コンパイル後配列を動的に増やすにはnewやmallocを使いますよね?
同じようにコンパイル後にスレッドを動的に増やすにはどうするかを聞いているので教えていただけると嬉しいです
>>306 pthreadなら明示的に作成
pthread_create()
Javaでも作成して実行
作成ルーチンがメモリを確保して実行の準備を整える
308 :
片山博文MZボット ◆0lBZNi.Q7evd :2012/07/05(木) 00:09:09.73
Windowsの場合はマルチスレッドアプリでbeginthread,beginthreadex,CreateThreadのいずれかを呼び出せば、スレッドが一つ増える。
LinuxやGCCの場合はpthreadを使う。
>>293 char a[] = "0123456789";
char *p = "0123456789";
aは11バイト確保されていて、そこに直接"0123456789"が格納されている。
pはポインタなので4バイト確保されていて"0123456789"へのポインタが格納される。
それとは別に"0123456789"が確保されている。
>>307-308 回答ありがとうございます あとすいません 環境を書いていませんでしたね・・・
windows のvisual studio2010を使っています
beginthreadexはコンパイル後でもそのまま使えるのですね・・・
使えないと思いこんでいました 失礼しました
みんな290のような質問しようね
回答者のレベルと合うから
プログラム勉強してゲームを作りたいです。
今小学3年なんですが、僕にも分かるような本とかってありますか?
あったら教えてください
おせろ、はさみしょうぎ
否定だけして訂正しないやつはただのクズ。
905 名前:uy[sage] 投稿日:2012/06/29(金) 17:51:23.12
>>901 俺のコンパイラは、ファイル名を指定するだけで、
どこに置いたファイルでも、瞬時にコンパイルしてくれる!
そんな機能もないゴミカスコンパイラを使ってるのかよ
ゴミゴミゴミゴミゴミゴミゴミゴミゴミwwwwwwww
さっさと土に還ってリサイクルされろよ
なぜ文字列リテラルは書き換え不可能じゃなきゃ駄目なのか
>aは11バイト確保されていて、そこに直接"0123456789"が格納されている。
>pはポインタなので4バイト確保されていて"0123456789"へのポインタが格納される。
>それとは別に"0123456789"が確保されている。
aは静的変数、pは動的変数の場合の説明になってる。
pは動的としても変だが。
「それとは別に」も意味不明。何でわざわざ別の"0123456789"を確保するんだよ。
バカはバカのまま放置して置くのが優しさってもんだろ
下手に知恵つけさせたら迷惑被る範囲が広がるじゃん
>>281 >(2)extern は必要か?
ほう、前からあったのか?
aは書き換えするべきではない"0123456789"という領域の先頭アドレスがaに入る
pは"0123456789"が入る大きさの領域を確保して"0123456789"というデータをそこにコピーする
a[3]=`A' などとやってはいけない
んだっけ?
aとpが逆…
327 :
デフォルトの名無しさん:2012/07/05(木) 03:14:35.23
アマゾンで探せば、きっとそれっぽい本が見つかる。というか見つけた。
328 :
デフォルトの名無しさん:2012/07/05(木) 03:15:23.56
すいません。>313へのレスです。
char s[100];
char *p;
s++; /* × */
p++; /* ○ */
>>259 IP抜いてネットにばら撒くサイト
210.282.163.188
と書かれた画像が出てきた
それはIPじゃなくてIPアドレスだろ?
282w
IPアドレスですらないぞw
336 :
uy:2012/07/05(木) 16:40:48.02
>>329 はぁああああああああああ???????
お前さぁ原理わかってる?
ローカル環境でそれ実行してみろよ
なんでこんなバカばかりなんだよ死ね初心者
>>318 そのゴミカスコードの
/* S = "12345" Sは配列の先頭要素のアドレスを指すだけなので代入できない*/
これ。説明になってねえよ
「 Sは配列の先頭要素のアドレスを指すだけ」
だから ” なんで ”代入できないか説明してねーじゃん
先頭アドレスをさすならから順番に
12345のデータを入れればいいわけで、それが出来ない理由は?
C言語側がロクな実装になってないから出来ないんだろうがバカ
そこまで説明しろ初心者かお前
ファビョるなよ。
338 :
デフォルトの名無しさん:2012/07/05(木) 17:02:05.06
説明になっていないという点では同意見だな
>>336 お前も初心者の域脱してないだろ
とは思うが下の意見については同意
341 :
デフォルトの名無しさん:2012/07/05(木) 17:50:40.49
河野さんの説明もいまいちだな
循環論法で
VC++2008 デバッグ逆アセンブル
char a[]="0123456789";
00F013C8 mov eax,dword ptr [string "0123456789" (0F0573Ch)]
00F013CD mov dword ptr [ebp-14h],eax
00F013D0 mov ecx,dword ptr ds:[0F05740h]
00F013D6 mov dword ptr [ebp-10h],ecx
00F013D9 mov dx,word ptr ds:[0F05744h]
00F013E0 mov word ptr [ebp-0Ch],dx
00F013E4 mov al,byte ptr ds:[00F05746h]
00F013E9 mov byte ptr [ebp-0Ah],al
char *b ="0123456789";
00F013EC mov dword ptr [ebp-20h],offset string "0123456789" (0F0573Ch)
今日もC言語に対して熱心な糞コテuyがいて安心した
344 :
デフォルトの名無しさん:2012/07/05(木) 18:44:14.05
>>342 それを見る限り「代入できている」よなw
「ポインタ変数」を「ポインタ」で説明するからおかしくなる
説明する人は変数の説明をしてるのか値の説明をしてるのかを明確にすべき
文字列リテラルの話は環境依存になるから不毛な争いになる
"123456"[2] = 'A';
ぶひひ
上級者面する、初心者未満のゴミカスuy
俺昔からずーっと思ってて、言ってもあまり支持されないんだけど
Cより先にアセンブラ教えたほうがいいんじゃないか?
もちろんCASLでもなんでもエミュレータでいいからカンタンなので。
実用は別に、まずそっちを教えたらCなんか楽勝じゃないか?
そうすりゃ配列とポインタなんかごっちゃにしようがないし。
きちんと教えられる奴がいるならね。
ポインタすら分かるようにならん人間が、
どうしてアセンブラの勉強するなんて思えるのか?
むしろそこでふるい落としてしまったほうがいいんじゃないか?
情報処理の試験ってCASL必須じゃなかったっけ?
合格すらしない人はどうせプログラマの土俵にすらあがれないんだし
ポインタもわからない奴はプログラマじゃないし、
将来プログラマになることもない。
考慮する必要なし。
アセンブラに『型』に相当するものってあるんすか?
>>354 CASLどころかExcelもどきで十分ですが
>>354 受験すらしたことない奴が何言ってんだか
ビット捨てて合格しましたが
CASL懐かしい
>>359 今の試験はうけたことないんだよ
旧2種とか旧1種とか言われた時代なんでな
昔から必須じゃないけど。
CASか
旧1種だか特種は必須だったような。
CASLすら分からん奴がCを語るとは片腹痛い
昔はBASICとマシン語しかなかったんじゃよ
ラチスC
BDS C
とかなかったけ
pascal系は当時の大型計算機で動いてたような
つかえねーものを覚えてもしょうがねーだろ
Turbo C
仮想マシン用の言語が使えるかって、問題だから
覚えるのが目的ではないような
CASL
Cは高級アセンブラなんだから
CASLを覚える必要はなくとも理解できなきゃおかしい
>>368 PC-88 MZ-700 FM-7とか8bit全盛期の話
>>373 CP/M80が流行ってた?頃
Cコンパイラはもうあったような?
CASLを覚えても実用じゃないから
CASLは例えじゃないの?
実用的な機械語理解してりゃべつにCASLに拘らなくていいでしょう
学習用のアセンブリ言語はCASLだけじゃなかった
今や、Cの吐くアセンブラソースを読める方が実用的な感じ
CASLを覚えるならMASMでも覚えた方が役に立つ
情処厨はいらね
Cで書いたものがどういうアセンブラソースになるか知ってるか知らないかで大違い
知らないのは例えばゴミカス王子ことuy
あの馬鹿uyはDLLの関数呼び出しのことを全く分かってなかったよなw
知らないくせに話に混ざりたがる生ゴミ野郎uyが、レスのたびにボロが出るw
趣味グラマなら試験うかってなくってもいいもんねー
プログラム系って、資格、学歴じゃないところでやってる人が多いからじゃね
趣味でプロマネとネスペ取った
情処厨がつかえると思ってるのか
証書もらって、その先どうするかは本人次第でしょ
足の裏の米粒
ぶひ
ポインタには実態がないけど
配列には実態がある
char *s="aaaaaaaaaaaaaaaaaaa";
なぜこの場合に文字列を書き換えられない仕様にしているのか
実態・実体・存在とはなんぞや
"aaaaaaaaaaaaaaaaaaa"
が書き換えるとOSに怒られるところに配置されてるから
なぜ書き換えようとしないのか
なぜ書き換えるとOSに怒られるところに配置するのか
今時のコンパイラは初心者に試練を与えるようなことをするから?
char *s1="aaaaaaaaaaaaaaaaaaa";
char *s2="aaaaaaaaaaaaaaaaaaa";
s1とs2、実は同じアドレスだったりするかもしれない
s1でもし書き換えちゃったらs2も書き換わってしまうかもしれない
MASMならDefine Byteで確保した領域は書き換え自由なんだけどね
MASM病の人は消えてくれ
書き換える処理があったらコンパイラは別文字列として保存すべきではないのか
コンパイラはそのぐらい気を利かせるべきではないのか
この中にuyがおる
>>399 書き換えたい時は、書き換えられるように出来るよ
気を効かせるとか、コンパイラに人のご機嫌取りをするようなことはできないでしょ、コンパイラを作ってる人がやらない限り
>>399 externとかがないならそういう実装もあるかもね
でも普通は.rodataなんだと思いこんでいたけど違うところに配置される環境もあるのかな
宣言の仕方覚えるだけじゃね
その先の道のりを考えると
ttp://www9.plala.or.jp/sgwr-t/c/sec10-3.html 【文字列リテラル】
"January" や "February" のように " " で囲んだ文字列を「文字列リテラル」又は「文字列定数」と呼びます。
文字列リテラルは「定数」であり、本質的に値を変えないものです。
しかし、値を変えないはずの文字列リテラルですが、この単元で説明したようにポインタを用いて指定をした場合、
その変更が可能になってしまいます。そのため、ANSI規格では文字列リテラルを「定数」とは呼びません。
たとえば、
char *p = "ABC";
strcpy(p, "DEF");
とした場合、処理系によっては文字列の書き換えが可能になります。(処理系によっては動作不能になります。)
文字列リテラル内の文字列を変更してよいかどうかは、処理系に依存しますが、 ANSI規格では、
文字列リテラルの変更は未定義(何が起こるかわからないということ)です。
さあそろそろゴミが大量に沸く時間だ
明日はなまごみの日、朝8時までに所定の場所にだすように
土曜日の生ゴミか
胸が熱くなるな
411 :
デフォルトの名無しさん:2012/07/06(金) 01:50:27.77
お前がいらないクズ。
喜ばせるなよ
externってなんの話?
>>413 グローバル変数の話
関数の話
Cの規格の話
>>379 お前の勘違いを、この1回だけ 正してやるが
あの時のバトロワスレでのdllの話題は
プログラミングではなく「ハッキング」の部類なので
お前みたいなゴミカス初心者はお呼びじゃないよ
dllにdoubleをどう受け渡しするんですかぁ、Win32APIだとできませーんって聞くのがハッキングかw
角度とラジアンの変換くらいわざわざDLLにせんでもよさそうだがなw
あ、初心者スレの話じゃなかった?ゴメンw
なんだQは40才過ぎてもまだexternの意味を正しく知らなかったのか
C/C++の間でも意味が違うのも知らなそう
>>416 ゴミカスuyがDLLの話題に入るなんて無理
自分だけ分からないからって暴れてたuyが滑稽だったなあw
>>418 日本語が不正確だ、もっと勉強しろ。
× C/C++の間でも意味が違うのも知らなそう
◎ C++を知らなさそう
日本語の文法にしかつっこめないクズ
マジで40過ぎかよwww
まあ6809を熱く語っていたのでぐぐってみたら1978年とか出てきたから
多分そうだろうと思っていけど突っ込めないところをみると図星かよ
>>421 上から目線でゴミに説教される謂われはねーよ
日本語が分からないんなら分からないと素直に言えクズ
>>423 emacs から乗り換えられないかわいそうな年寄りは敬うものだ。
時代はmule
viでイナフ
40過ぎてニートかぁ
>>424 おいおい
「敬う」かどうかはこちらが決める事で、年寄りが言う事じゃないだろう
馬鹿は死ぬまで馬鹿だなやっぱ(´゚ c_,゚`)プッ
↑馬鹿
>>429 自演乙
堂々とQのコテを付けろよ・・・・
年寄りにも「この人は尊敬出来る」っていう人と、「こりゃひでえ、こんな人間だけにはなりたいねー」
といういろんな奴がいるだろう
そんな簡単な事もわからないのか?いい歳して
×なりたいねー
○なりたくねー
なりたいねー
なりたいねー
なりたいねー
↑ミスを論うだけのこういう人間にはなりたくないね
Qがファビョっとりますwww
「敬いたくない」と言われて相当頭に来てるようだな
これだから自己愛性パーソナリティ障害は・・
診断基準
DSM-IVでは誇大な感覚、限りない空想、特別感、過剰な賞賛の渇望、特権意識、対人関係における相手の不当利用、
共感の欠如、嫉妬、傲慢な態度のうち5つ以上が当てはまることで示されるとされている。
自己の重要性に関する誇大な感覚(例:業績や才能を誇張する、十分な業績がないにもかかわらず優れていると認められる
ことを期待する)
限りない成功、権力、才気、美しさ、あるいは理想的な愛の空想にとらわれている。
自分が"特別"であり、独特であり、他の特別なまたは地位の高い人達に(または施設で)しか理解されない、または関係が
あるべきだ、と信じている。
過剰な称賛を求める。
特権意識、つまり、特別有利な取り計らい、または自分の期待に自動的に従うことを理由なく期待する。
人間関係で相手を不当に利用する。つまり、自分自身の目的を達成するために他人を利用する。
共感の欠如:他人の気持ちおよび欲求を認識しようとしない、またはそれに気付こうとしない。
しばしば他人に嫉妬する、または他人が自分に嫉妬していると思い込む。
尊大で不遜な行動、または態度。
※以上の傾向は性格的特長と病気との判別が難しく注意を要する。また、そのボーダーラインは一般社会生活を円滑に
営むことができるかどうかにある。
要点部分
5つ以上が当てはまると自己愛性パーソナリティ障害の可能性がある。
uyもその気があったが、とてもとてもQの尊大さの前にはかないませんわwww
自作PC板にもピュアAU板に隔離されてた老害が出てきてうざいったらありゃしねえ
ああいう老害がいるから日本がおかしくなってきたんだぜ
下手に寿命を伸ばすのも考えもんだな
429だけどQじゃないぞ
年寄りは敬うものだ
に対して
「敬う」かどうかはこちらが決める事
う~ん…
意味が分からん
単に先に生まれただけで
小学生みたいな奴を敬えといわれてもな
若くてもしっかりした人間を敬えってほうが納得できる
もっと分かりやすく、
「オレは年寄りだから敬えYO!!!!!」
と命令すれば良かったんだよ
その方が意味の取り違えがなく、
無事平穏に理解だけはできる
「周りの空気でどうもそういう風に決まっているから、オマエもそうした方がいいよ」
なんてのは技術者には向いてない、
自分の考えで何をどうするか決定する、
それが出来なきゃあ年食っただけの大きな子供だ、
大人じゃあない、
この辺りの言語的センスは
様々なところで威力を発揮するはずだ
C言語の技術的な説明などでも
思っていること・考えていることを分かりやすく伝える、
それこそが必要で重要だよ
あの文章で意味を取り違える方が馬鹿
この流れに比べたらまだextern論争のほうが有益だなw
444 :
デフォルトの名無しさん:2012/07/06(金) 11:11:08.19
<>
こりゃあまた意味浸な暗号だな
perlでいう while(<>) か?
何もしないでスルーしろという
一種の暗号なのか?
>>440 だよな
ちなみに「1日でも早く生まれていたら敬え」というのは儒教の教えで朝鮮人のものだ
日本にはそんな習慣はない
日本人は年上だろうが年下だろうが「こいつは俺より出来る」と思ったら素直に敬うし
「駄目じゃん」だと思ったら軽蔑、あるいは無視する
そういう傾向が日本という国を大国にのし上げた
年齢ばかり強調して中身のない人間を敬うようじゃそりゃ国が潰れますって
儒教が朝鮮人のものって
そんな事言うのは朝鮮人くらいだな
>>447 また無知が何か言ってるよ
敵を倒すにはまず敵の事を良く知らないとな
簡単な文章すらまともに読めなかったチョンが何言ってんだか
↑無知
「年上は敬うべき」
実際この考えは日本に広く浸透してるね
孔子 儒家の始祖
儒教なんて程度の差はあれ東アジア一帯に普及してるわけだが。
>>446 朝鮮だけのものじゃねーしw
無知すぎるwww
Qは恥ずかしいからコテ付けろよ
どれがQが書いた文章なのか分かりやす過ぎる
俺をQだと勘違いしている馬鹿がいる~
ま、名無しで「勘違いした」「しない」と言ってても水掛け論だけどな
>>455 本当に日本人なら聞いたことくらいあるはずだが。
朝鮮を引き合いに出すまでもなく。
古くからある慣習に反発する若者もまた多い。
一般的には年上を敬うってのはいいが
QZは例外
50だろうが60だろうが消えたほうがいいクズ
>>460 だな
多分50超えてるんじゃないか
あのプログラムの堅さは若い奴のそれではない
プログラムが堅いって言われると褒められたと思う年代だろQZは、って
ひょっとしてQZってクズから来てるのか?自覚あんだね。
私は47だが、正直Qの方が余程頑迷な老人に見える。
コテ書いてないから証明のしようもないが。
大学はコピペ検出システムが完備されてるからクズの書いた特徴があり過ぎる
プログラムはすぐにバレてありがた迷惑なんで宿題スレに出没して欲しくない
>>340 f( T a1[], T *a2 );
だな
孔子は朝鮮人
よって儒教は朝鮮人のもの
w
春秋時代の中国の思想家、哲学者。魯国に生まれ
魯は現在の中国山東省南部を指す
お前らってC言語はさっぱりなのに歴史は詳しいんだなぁ。
え、netで調べてるだけだよ
>>465 >全然別のものである(君が聞いた話というのは、関数の仮引数の話だ。
473 :
デフォルトの名無しさん:2012/07/06(金) 14:46:06.03
externってなんのためにあるんだ?
defineじゃだめなのか?
爆笑
>>389 ファミコンみたいなのを想定すると解りやすい。
リテラルや命令コードはROMの中だから書き換えができない。
>>455 「老害」って老人そのもののことじゃないから、
そういう意味で使うなら「害老」の方がいいんじゃね。
「老害」って、害老によって引き起こされる害、のことだろ?
まったく同じプログラムなのに、
Huカードだと書き換えられないがCD-ROMROMだと書き換えられる、とか?
478 :
デフォルトの名無しさん:2012/07/06(金) 17:59:53.61
質問ですが、
C言語で
可変引数の関数の中で可変引数の別の関数を呼び出したいのですが
引数の渡し方がわかりません。
マクロなら_VA_ARGS_で大丈夫なのですが…。
可変引数関数の中で呼び出している可変引数関数に
受け取った可変引数をそのまま渡す方法はありますでしょうか?
tanθ=a
aの値を入力するとθの値する関数ってある?
atan
a が無限大に相当するケースでも、いけそうなのが atan2()
char* FormatFunc(char* buffer, const char* format, ...)
{
va_list ap;
va_start(ap, format);
vsprintf(buffer, format, ap);
va_end(ap);
return buffer;
}
485 :
デフォルトの名無しさん:2012/07/06(金) 21:14:41.12
CreateRemoteThreadとLoadLibraryによるDLLの注入について学んでいるのですが
注入される側からDLLを解放するにはどうすればいいのでしょうか
プロセスが終了するときDLL_PROCESS_DETACHが実行されますがFreeLibraryしなくていいわけではないですよね
終了するときに別スレッドでFreeLibraryを呼べばいいのでしょうか
LoadLibraryしたスレッドで終了時にFreeLibraryしたらあかんのけ
>ちゅうにゅう
?
おまわりさんこの使途です
DLLの注入するプログラムから足つくから
ストーカー相手のPCにキーロガーか
493 :
485:2012/07/06(金) 22:04:14.90
大抵碌な事には使われないので否定してもしょうがないですが注入って違法でしたっけ
共有メモリが面倒なのでLoadしたらそのプロセスは終了してDLLで処理しようと考えていたのですが
あと加担も何もググればすぐ出ますよ、そのサイトは
どうやら答えはここには無かったようですねw
そりゃあスレ違いだからな。
言葉だけで語ってる人は何やりたいのか、よーわからんね
496 :
デフォルトの名無しさん:2012/07/06(金) 22:50:00.32
C言語ってグライバッハ標準形を使ってますか?それともチョムスキーですかね?
ムソルグスキーだよ
むしろデベロビラスキーが主流だ
DLLインジェクションって言うのか・・・こりゃ危ないな
ゼバスチャン・バッハだろうjk
フォージェリってかっこいい響き
502 :
デフォルトの名無しさん:2012/07/06(金) 23:25:30.32
>>484 ありがとうございます。
しかし、やりたいことは…
char* FormatFuncA(const char* format, ...);
char* FormatFuncB(char* buffer, const char* format, ...)
{
//↓ここに何をいれればいいのかがわからないのです。
return FormatFuncA(format, /*???*/);
}
>>502 1.va_list 対応版の関数を作る
2.マクロでなんとかする
C言語をつかえば、どんなものでも作れると聞いて勉強していますが
未だに 彼女が作れません
C#なんてお手軽ななんちゃって言語を使ったほうがいいですかね?
そんなセンスじゃ何やってもダメだろうね
>>461,462
>プログラムの堅
>プログラムが堅いって言われると
コードが堅い、ってどういう意味ですか?具体的に例をあげて堅いとはどういうことか説明いただけませんか?
堅くて大きいほうが喜ばれるものだとおもっていたんですけど。
QZは童貞
>>507 そりゃ40才、50才にもなれば頭が固くなるのは当たり前だろ
今から何か新しい資格取れるか?若い頃に比べればまず無理だろ?
だから会社は中途採用を嫌がる
仕事をどんどん覚えなくなって自分勝手ばかり言い出すからね
頭が柔軟なら、50になっても経験を活かして新しいことを学べるからそういう人は重宝されるけどね。
言いなりにならないからだよ。
知恵付けてれば反抗してくるからな。
若いのは若いですぐ辞めるけどw
まあこれが健全ってことなんだがなw
クズの頭の悪さは年齢関係ないだろ
そう
年がいったからと言って賢くなるとは限らない
特に性格の悪さはむしろひどくなると言って良い
そんな奴を尊敬しろだと?傲慢にもほどがある
年寄りはサボることにかけて全力だからな
>>511 そんなやついねーよ
50過ぎて頭が柔軟なら永田町みたいなひどい政治をするはずがない
皆頭カチコチじゃねーか
>>516 いいから家から出て働けよニート君
いろんな人間に出会えるぞ
>>517 お前誰に向かってニートなんて言ってるんだ?
社会人だぞアホ
お前こそニートだろ
>>514 じゃあお前は相当年いってるの?
若くてそれ?
>>510 >新しい資格取れるか?
電気を勉強したくなったので、電気主任技術者試験第3種にトライ中です。今年は残りの「法規」だけがんばればいいのですが、こういう文系的なのは生来向いていないようで、ちょっと辛いです。
来年は2種を取りたいなあ。
ニートジジイが今更どんな資格を取ろうとまともな仕事には就けないけどな
医者にでもなれば話は別だが
Qは確か今持ってるPCがPhenomX2とCore2Duoのノートとか言ってたよな
CPU-Zのスクリーンショットはまだうpできないの?
そりゃ出来ないわな持ってないんだもの
見栄を張るために嘘付いてな
中年にもなってPCの2台や3台買えない人って・・・・
あ、無職だから仕方ないのか
医者になるしかねえ
誤診だらけの人殺しになるぞ
資格は取るにも維持にも金が掛かるからな。
ただの無駄金だよ。
>>516 政治家は意見調整の役割を担ってるからがんじがらめになりがちなんだよ。
少しくらいは勉強した方がいい。
資格試験みたいに出る問題がほぼ決まってて答えを覚えるだけ考える必要が無いものはQは得意そうだ
>>527 政治家に例えたのはそういう意味じゃないんだけどな
どっかそこら辺にいるオヤジでもいいよ
すっかり頑固になっちまって絶対に自分の意見を曲げない
そういうのを頭が固いと言うんだ
あ、自分が正しくて意見を曲げないのはいいよ
自分が明らかに間違ってても曲げないからタチが悪いんだよ
↑ほんとタチ悪いねぇ~
お前らってC言語はさっぱりなのに政治は詳しいんだなぁ。
Cの救済にあたる弟子たち。
536 :
デフォルトの名無しさん:2012/07/07(土) 16:19:31.26
意見を「曲げる」必要はないし、
二言ばっかりなやつは節操がないだけで頭が柔らかいのとは違う
節操がないのは厚化粧より全然嫌だ
まがったことがきらいなひとは、警察官になれます!
539 :
デフォルトの名無しさん:2012/07/07(土) 18:08:46.12
a
540 :
デフォルトの名無しさん:2012/07/07(土) 18:09:39.12
セキュリティホールってどうやって探すんですか
探してどうすんの?
穴があったら入れたい年頃なんだろ
543 :
デフォルトの名無しさん:2012/07/07(土) 18:12:30.46
パッチを作りたいです
何のセキュリティホールかも分からないのにどうしろと
>>538 いやいや警察の組織内が曲がった事だらけなんで。
546 :
デフォルトの名無しさん:2012/07/07(土) 18:27:33.88
ホール
548 :
デフォルトの名無しさん:2012/07/07(土) 18:33:48.15
ちょっと言葉が足りなかった
システムに侵入するためのセキュリティホールです
日本人は、先進諸国で飛び抜けてマスコミ報道を鵜呑みに
信じやすいことがこの動画で実証されています。
いわばマスコミ報道の「鵜呑度」を国際比較すると、
日本人は、先進国中ダントツに「鵜呑度」が高く70%、
最も低い国民は英国で14%です。
その他の主要欧米諸国(ロシアを含め)は20-35%です。
日本に近い国は、ナイジェリア、中国など、途上国と新興国となります。
別の言い方をすれば、日本人の70%は、
自分の頭で考えず(思考停止)、
テレビ、新聞、週刊誌などのマスコミの情報を鵜呑みにしていることを意味します。
青山は以前からこれを「観客民主主義」と言っています。
観客民主主義は、マスコ ミの情報操作による世論誘導に最も陥りやすく、
独裁にも呼応しやすい特性を持っています。
マスコミ報道「鵜呑度」
日本人70%、英国人14% You Tube
http://www.youtube.com/watch?v=ypPqsWUC6Vo http://www.asyura2.com/12/senkyo132/msg/578.html
ホワイトボックステスト
ブラックボックステスト
ぶひ
554 :
デフォルトの名無しさん:2012/07/07(土) 19:21:35.81
Linux環境でGCCを使った場合で良くわからないので教えてください。
グローバルに巨大な配列を作る実験をしたとき、
1.ある程度以下のサイズの配列の場合、サイズに依存してコンパイルに時間がかかりました
2.ある程度以上のサイズの配列の場合、コンパイルはあっという間に終了したのですが、
実行しようとすると「強制終了」とメッセージが出て動きません
メモリマップなどが関係あるようなのですが、上記の現象が発生したときどのようなことが
行われているのか、教えてください。
実験したような感想じゃないなあ?
何バイトが境界か突き止めろ
linux環境なら、ソース嫁よ
OSもコンパイラもソースが公開されてるんだし
ぶひひ
>>554 > サイズに依存してコンパイルに時間がかかりました
初期化をやめれば良い。
> 2.ある程度以上のサイズの配列の場合、
> 実行しようとすると「強制終了」とメッセージが出て動きません
エラーメッセージは他にはないの?
ないならデバッガ上で実行したら?
たぶんデータセグメントの上限超えてるんだと思うけど。
カーネルが許す範囲で済むならulimit -dで変更できる。
今日からはじめた
printf("よろしく\n");
>>522 >PhenomX2
PhenomII x6 です。
>見栄を張る
さすがに屁ノム程度で見栄を張れるとは思っていません。所詮、屁ノムだしー。
へえ
>>557 #include <stdio.h>
#define MAX (4000000000)
static double a[MAX];
int main()
{
for (int i=0; i<MAX; i++) a[i] = (double)i;
for (int i=0; i<MAX; i++) printf("%e\n", a[i]);
return 0;
}
うろおぼえですが、こんなかんじでした
物理メモリは、たしか6G×2CPU
forループは、コンパイラが気を利かせて消したりしないようにするためです
>>560 HowのQではなく、WhyのQですので
メッセージは他にないです。デバッガと設定コマンドは週明けに試してみます。
565 :
デフォルトの名無しさん:2012/07/07(土) 20:53:02.79
物理メモリの問題じゃないし、CPU の数も関係ない
Linux の多重仮想記憶と P6 以後の PAE について調べるべし
mallocなどにしたらいいんじゃないの?
変な奴w
4000000000*8=32000000000
32000000000/1024=31250000(k)
31250000/1024=30517.578125(M)
30517.578125/1024=29.802322388(G)
>>564 物理メモリが6GのPCで、30G近い静的メモリを消費するプログラムって
起動できるんだっけ?
ぶひひ
64bitCPU系なら仮想的にマッピングは出来るかもしれないけど、動作環境として使い物になるかは不明、約30Gの変数
仮想メモリ使っても最低限64bit OSじゃないと無理だよね。
渾身の下ネタをかるくスルーされる気持ちって。
ぶひ
char **argv と char *argv[] の違いはなんでしょう?
前者は argv の値を変更できるけど、後者はダメとか、そうゆう解釈であってますか?
違います(きり)
どっちがかっこよく見えるかぐらいの違い?
なんかサラリと
> argv の値を変更できる
とか
コワイこと言ってるぞコイツ
argvは変えるなアホ
書き換えるな
絶対にだ
そういう質問してるうちは
変更するなクズ
>>581 ポインタには * が付いていて、配列には[] が付いてるとか
その程度の理解です><;
読んで理解するより、実行しながら考えようね
588 :
デフォルトの名無しさん:2012/07/07(土) 23:24:42.09
char **argv
・・・ってどーゆー意味ですか
ポインタへのポインタとか
main関数のargvのこと言ってるのなら
char argv[][]
で考えてみたら
void func(void)
{
int i;
if(・・・){
int j;
・・・・・
}
・・・・・
}
のような変数 i,j があるとき、関数funcが呼び出された時に変数i のメモリが確保されることは
分かったのですが、変数j のメモリが確保されるタイミングも、関数funcが呼び出された時ですか?
if(・・・){
int j;
・・・・・
}
括弧に入ったとき
Cはこんなことできたっけ
>変数i のメモリが確保される
最適化されない時の話?
どこのコンパイラ使ってる?
C99でできるんじゃないっけ?
時代おくれだ、gcc4.4は?
>>593 コンパイラは visual studio の cl.exe を利用しています。
すみません、最適化は特にしていない時の話だったのですが、
C言語共通のルールというよりは、コンパイラの実装依存の話に
なってくるのでしょうか?
598 :
デフォルトの名無しさん:2012/07/08(日) 00:02:16.12
>>582 #define const
int main(int argc, char const * const * const argv)
{
while(*++argv) puts(*argv);
return 582;
}
getopt は平気で argv を書き換えるけどな
>>596 変数がメモリに確保と言うよりは
変数の生存期間で考えたほうがいいような、最初のうちは
>>597 { } 内での変数宣言はC++の仕様だったのですか・・・C言語の仕様と勘違い
してました、失礼しました<(_ _)>
>>600 確かにそうかもしれないですね・・・ありがとうございます。
>>601 おお、よくわかりました。情報どうもです(`・ω・´)
>{ } 内での変数宣言はC++の仕様だったのですか・・・C言語の仕様と勘違い
>してました、失礼しました<(_ _)>
バカが知ったかぶりしてるだけなのに、真に受けるな
スコープ { } の先頭で 変数宣言するのはC言語でも合法
Cの規格
C99
1999年12月には、ISOで規格の改定が行われ、C++の機能のいくつかを取り込むことを含めた機能拡張がなされ ISO/IEC 9899:1999(E)
主な追加機能:
変数宣言がブロックの先頭でなくても良くなった。
_Bool 型(予約語)が追加になり、#include <stdbool.h> により、bool 型が使えるようになった。
64ビット整数値を保持できる long long int 型の追加。
// による1行コメント。
インライン関数(inline キーワード)。
可変長配列(alloca 関数の代替)。
>>601 OS側ってなんだよ。非常識だな。(笑)
コマンドラインを解析してアプリケーションに渡すのはOSの仕事でしょ。
解析はアプリ
アプリがOS経由で他のアプリを起動しているだけ
質問なのですが
char *buf[100]のポインタの配列をmallocで領域を確保して
for(int i = 0; i < 100; i++) {
free(buf[i]);
}
の処理を行っていたのですが誤ってfreeの処理を2回行ってしまったところ、
_CrtIsValidHeapPointer(pUserData) のエラーが発生してしまいました。
原因は分かったのですが何故エラーが発生したのか教えて頂けませんか。
ワイルドカードの展開を
スタートアップ(アプリケーションエントリポイント~main を呼び出すまでのスキマ)で面倒見る環境もあったりする
>>610 自分でエラーが出ることしたって書いてるじゃん
>>610 未開放、多重解放や確保領域を超えて書き換えたりしたのを捕まえる管理つきの malloc を呼んでるから
free 時に malloc されたものか チェックしてるん
>>612-613 なるほど多重解放じたいが禁止されているっていうことですね…
勉強になりました、ありがとうございます
>>608 引数の渡し方はC言語の定義するところではないが、「確保」という言葉を使っ
ているので、スタック渡しを意図しているのだろう。
引数はスタックフレームの外なのだから、argvもmain側には確保され
ていない。argvはmainを呼び出した(OS側)が確保している。
> あくまでもmain側で確保されている引数はargvの一つであり
はウソ。
となると、mainに限らず*arg[]とchar **argの記述のどちらかという問題になる。
mainだけ特別視する必要はなく、OS側も出す必要はない。
>mainに限らず*arg[]とchar **argの記述のどちらかという問題になる。
?
面倒くさい奴だな。それくらい補完しろ。
> mainに限らず*arg[]と**argの記述のどちらかという問題になる。
関係ねーよ
三笠宮さま 心臓の機能が低下
7月7日 22時27分
天皇陛下の叔父の三笠宮さまは、心臓の機能が低下しているため、東京都内の病院で医師の手当てを受けられています。
三笠宮さまは先月14日に行われた長男の寛仁さまの葬儀の際に胸部に違和感を訴え、疲れもたまっているとみられたため、
翌日、大事をとって東京・中央区の聖路加国際病院に入院されました。
入院は当初1週間程度の予定でしたが、その後、かぜの症状が見られたため抗生物質の投与などの治療が続けられ、
かぜは治まったものの,7日になって心臓の機能が大きく低下し始めたということです。
三笠宮さまは心不全の状態が続いていて、集中治療室で医師の手当てを受けられているということです。
病院には7日夜、三笠宮妃の百合子さまがお見舞いに来られました。三笠宮さまは昭和天皇の弟で、天皇陛下の叔父に当たり、96歳になられます。
http://www3.nhk.or.jp/news/html/20120707/t10013423411000.html
どっちとも取れるが
C99の説明を出してるあたりがおかしい
否定、非難だけして解等、解説しないやつは
自分は優れてると自己顕示したいだけのクズ。
×解等
○解答
>>625 なるほど深く同意しますまったくそのとおりですよね堅いとか糞とか言い放つのみで理由を書かないいや書けないのは本当に葛ですよね(棒)
一応整理しておこう。
ブロックの先頭での変数宣言は、c89の時点でも普通に使えた。
しかし、一部の教条主義者は未だに(それが仮令c++であろうとも)関数の先頭での宣言に拘泥している。
Ex.
--
int main(int argc, char ** argv)
{
int i, j, l;
for (i = 1; i < argv; ++i) {
l = strlen(argv[i]);
for (j = 0; j < l; ++j) {
putchar(argv[i][j]);
}
}
return 0;
}
--
c89でも通ることを前提に、変数を局所化する。
--
int main(int argc, char ** argv)
{
int i;
for (i = 1; i < argv; ++i) {
int l = strlen(argv[i]);
int j;
for (j = 0; j < l; ++j) {
putchar(argv[i][j]);
}
}
return 0;
}
変数の宣言を関数の冒頭に集めるのはソースを読み易くするためだ
COBOLにおけるDATA DIVISION.みたいなもんだ
> しかし、一部の教条主義者は未だに(それが仮令c++であろうとも)関数の先頭での宣言に拘泥している。
そんなの、どこにいるの? って聞こうと思ったらすぐ下に居た。w
変数のスコープを限定する方が読み易くなる。
関数の先頭の方がとか言ってるのは、文法すらろくに知らないで恥をさらしていたバカだけ。
まぁ、そう聞くとご尤もと言いたくはなるが、
そういう教条主義者に限って関数が無闇と長い。
処理も変数も局在化できないのだろう。
そもそも、私は自分が把握しきれる能力限界である
100行程度以上の関数は書けない。
その手の教条主義者が私よりも遥かに把握能力が
高いというのでなければ、関数内の全てを把握
できないまま書いているに違いない。
しかもCOBOLとか。
原始時代の方ですかね。
>>628 2番目の例がイミフ
>int l = strlen(argv[i]);
QZはこんな書き方は許されなかったし許さなかったかわいそうな世代だから敬え
>>632 bンジンの言い訳だろそれww
記憶能力把握能力がはるかに超越したハッカーが書いてるソースだって
あるんだよww
>>629 >変数の宣言を関数の冒頭に集めるのはソースを読み易くするためだ
ダウト。変数のスコープはブロックに限られるので、ブロックの外では
絶対に使われない変数となる。それが先頭にあったほうが読みやすいとは
思わない。
但し、そんなに変数がたくさん必要になる時点で、関数にくくりだしたほうがよい
ケースが多いように思う。
だから関数の先頭以外の、ブロックの先頭に変数宣言があるようなコードが、
読みにくいということには同意。
自分がよくやるのは↓みたいなこと。
void func(void)
{
switcht (state) {
int tmp; /* switch内だけで使う一時変数 */
case A:
break;
case B:
{
int work; /* 処理B内だけで使うワーク変数 */
}
break;
}
}
スコープを狭くするためだけに
{
}
を書く奴
>>637 あながちダウトでもない。
IDE使えば変数の定義を参照するのは簡単だけど、エディタだけだと変数が
関数の先頭で定義されていれば定義を参照する際に楽だというケースもある。
ある程度固まっていないというか、無分別に散らばってると見難くなると思う。
↓これはオレルールではダメな書き方。理由: 初期化ができない。
switcht (state) {
int tmp; /* switch内だけで使う一時変数 */
}
#include <stdio.h>
int main(int argc, char *argv[])
{
switch(argc) {
case 2:
{
FILE *file = fopen(argv[1], "w");
fputs("case 2\n", file);
fclose(file);
}
break;
default:
fputs("default\n", stdout);
break;
}
return 0;
}
/*
C:\Borland\bcc55\Bin>bcc32 fputs.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
fputs.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
C:\Borland\bcc55\Bin>fputs e.txt
C:\Borland\bcc55\Bin>type e.txt
case 2
*/
642 :
デフォルトの名無しさん:2012/07/08(日) 12:49:31.63
>>632 教条を知らなかった者が人を教条主義よばわりとは笑止千万
プログラムが 100 行以内なら変数はグローバルでよいと本気で言うなら
もっと説得力のある言い方をしないとアホにしか見えないぜ
# 教条主義といえば goto 禁止厨のコードが無駄に長い傾向なら俺も認める
>>637 tmp workという名前はダメ
ゴミカスはこれだから
また難しい話になってきたな
これが難しいとかホザクなら
お前は回答者とかにはなれんな
半年ROMれよアホ
>>642 >>632 から
「プログラムが 100 行以内なら変数はグローバルでよいと」
とどうやって導出したのかしばし一考。
今は「局在化」とは、変数を関数の最初にまとめるかどうか、そのスタイルが多くの場合には適切かどうか、について議論が進んでいるのではと思っていたのだが。
Visual Studio 2010でreleaseしたexeファイルはVisual Studio 2010がないと動かないんでしょうか?
馬鹿な質問ですがよろしくお願いします。
>>647 ランタイムが必要になることがある
msvcr100.dll とか
>>648-650 親切にサイトまで教えていただきありがとうございました!
非常に助かりました。
スコープで変数を局所化したCのソースなんかサンプル以外で見たことないぞ
>>639 >IDE使えば変数の定義を参照するのは簡単だけど、エディタだけだと変数が
>関数の先頭で定義されていれば定義を参照する際に楽だというケースもある。
えーっ?IDE使ってれば、どこで定義されてたっていいじゃん。説得力ねーぞ。
>ある程度固まっていないというか、無分別に散らばってると見難くなると思う。
だ・か・ら、ブロック内でしか使わないのだから、散らばっていないって。
>↓これはオレルールではダメな書き方。理由: 初期化ができない。
> switcht (state) {
> int tmp; /* switch内だけで使う一時変数 */
>}
初期化できますよ。
宣言と文はちがうので、ご心配なく!
>>643 >tmp workという名前はダメ
んと、サンプルコードだからtmp,workってつけただけだよ。
ついでに言うと、この一時変数は、ブロックで囲まれた、ごく
狭い範囲で使うことを意図している。そういう場合につけるならば、
悪くないと思いますよ。
参照渡しの関数に渡すためだけに格納したりする場合なんかに
使ったりします。
>>643 は単なる煽りなので相手にしてはいけません
リーダブルコードお勧め
>>653 日本語不自由なのか? IDE使っていれば参照は簡単。(IDEではない)エディタでは面倒。
と言っているんだが。
> だ・か・ら、ブロック内でしか使わないのだから、散らばっていないって。
散らばるよ。バカ。
{
int a;
...
...
...
bouble b;
...
...
...
a = b + 1000;
}
改行大杉だと。
>>653 > 初期化できますよ。
> 宣言と文はちがうので、ご心配なく!
出来ねーよ。(switchのスペル間違えるようなド素人相手にするもんじゃないな。)
switch (state) {
int tmp = 0xa5a5; /* switch内だけで使う一時変数 */
case 0:
printf("%x\n", tmp);
break;
case 1:
{
printf("%x\n", tmp);
}
break;
}
warning C4700: uninitialized local variable 'tmp' used
c:>cl /?
Microsoft (R) C/C++ Optimizing Compiler Version 15.00.30729.01 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
658 :
はちみつ餃子 ◆8X2XSCHEME :2012/07/08(日) 14:04:15.68
>>657 できるよ。
ここは C スレなので C++ の話は C++ スレで。
あ、ごめん。
初期化が出来ないって話だったのね。
初期化は出来ないわ。
∧_∧
( ´・ω・) みなさん、お茶が入りましたよ・・・・。
( つ旦O
と_)_) 旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦
bouble
bouble
bouble
>>661 そこに書かれていない部分で
typedef double bouble;
と定義してあるんだ。
664 :
デフォルトの名無しさん:2012/07/08(日) 15:59:20.33
>>646 しばし一考して、結局わかったか?
おまえさんとは、ひっ絡まれるほどズレてはいないと思うが
>>659 いや 657 にとって warning を見せる必要があった理由には明らかに誤りが含まれているぞ
サンプルも遊び駒だらけだし
>>656 関数の先頭でなく、ブロックの先頭に書く話が何でその話になるんだ
>>665 「変数宣言を無分別にまき散らすと見難くなる」だから本質は同じ。
これくらい知恵使えよ。
{
int a;
...
...
...
{
double b;
...
...
...
a = b + 1000;
}
}
結論
Cは糞
全然散ってないじゃん
散ってるとか散ってないとか
見難いとか見難くないなんてのは個人の主観に過ぎない
ふーん
>>668 お前、こんなところでのんびりしていていいのか?
今まで↓このクソコード正しいと信じてバグ量産してきたんだろ。w
> switcht (state) {
> int tmp = 774; /* switch内だけで使う一時変数 */
>}
672 :
デフォルトの名無しさん:2012/07/08(日) 17:20:40.04
固陋、いやいや、古老はいらっしゃいますか。
const修飾子は、K&R第1版の頃は未だ存在しなかったという伝承を耳にしましたが、確かめる術はあるでしょうか。
図書館を探せ
タイムマシン作ってみにいけばいいよ
むしろタイムマシンにお願いすればいい
あっそ
678 :
デフォルトの名無しさん:2012/07/08(日) 18:17:36.47
ノベルゲームみたいにクリックすると文章を進めるためにはどうしたらいいんでしょうか(泣
クリックと同時にエンターを押してねってマニュアルに書いとくといいよ
文章を紙に印刷して渡せばいい
682 :
デフォルトの名無しさん:2012/07/08(日) 18:50:27.92
どこに宣言があるかわかんねーと困るようなクソ長いコードは書くなってこったね。
少なくともローカル変数かグローバル変数かは一目で分かるようにしる
685 :
デフォルトの名無しさん:2012/07/08(日) 19:29:04.10
行番号つけてる奴は何考えてんだ......
コピペしてもコンパイル通らないだろうが
なんも考えてない神聖のアホなんだろ
いわせんなにょ恥ずかしい////////
>685
その程度でグチグチ言うやつの意見なんかいらんからROMってろ。
688 :
632:2012/07/08(日) 20:41:41.17
スレが伸びていると思えば……
お前ら本当に日曜の昼間っから暇なのな。
まぁ、私も大概暇人だが。
【中国BBS】中国人から見た「日本人の嫌いな国ランキング」
「日本人がもっとも嫌いな国ランキング」というスレッドが立てられ、「日本人が嫌いな国ランキング」を紹介している。
スレ主によれば、日本人がもっとも嫌いな国は韓国で95.7%、次いで中国が2.1%、
北朝鮮が0.7%、以下、アメリカ、ロシア、イスラエル、オーストラリア、フィンランドの順となっている。この結果について次のようなコメントが寄せられた。
第1位 韓国 95.7%
第2位 中国 2.1%
第3位 北朝鮮 0.7%
・「中国は韓国に惨敗じゃないか」
・「スゲェ…こんなにも多くの日本人が韓国を嫌いだなんて」
・「なんという事だ、韓国はこんなにも日本から嫌われているなんて」
・「てっきり中国が1位かと思った、中華人民共和国が完敗するなんて韓国はスゴすぎる」
・「韓国以外の国を全部合わせても韓国の獲得した端数にも満たない」
・「日本人はロシアよりもアメリカのほうが嫌いなのか」
・「韓国人だって日本人が一番嫌いだ」
・「韓国は日中友好に貢献しているな」
・「なんだか急に韓国のことが可哀想に思えてきた。」
・「韓国のことについて語り出すと日中の意見は驚くほどの一致をみる。韓国人は大変だな…」
サーチナ 社会ニュース 2012/07/08(日)
http://news.searchina.ne.jp/disp.cgi?y=2012&d=0708&f=national_0708_015.shtml
>>688 なに、いつものこと。暇人同士親交を深めているのですよね。
>>688 まいつものことですよ。
uyと信者が馬鹿やってもりあがってます。
うほっ
へぇ
売れてるんだ
長大なプログラムの空白の部分を "_" としてる奴の人間性について
ネットの使えなさは異常
全部書けよ
697 :
672:2012/07/09(月) 07:03:36.70
うけるw
日の丸を焼いたりやることが低脳
picみたくgotoを使うときって
ラベルは構文としてどうすればいいですか?
その程度をここで聞く前にggrks
そういうヤツがアホなgoto書くから
ソースがゴミカスになっちまうんだよ
情報科1年のC言語初心者です。
goto文は使ってはいけないと言われたんですが何故ですか
>>704 慣れないうちは使わないで考える練習をしましょう
疑問に思うのは悪いことではないけど
>>704 つダイクストラ、10年前に亡くなられていたんだ‥‥‥
エラーから抜け出しにはいいだろう
gotoの使い処はいくつかのパターンが確立していてそれ以外では使うべきではない
gotoをむやみに使うと処理の流れを追いにくいコード、いわゆるスパゲティコードになりがち
ループが最後まで回ったがどうかで分岐するときはgotoのほうがいい気がするけど、
チキンだからフラグやループ変数使って分岐しちゃう
ファイル入出力に関する質問なのですが、fclose() の戻り値はチェックすべきですか?
また、引数として有効なファイルのポインタをセットしたにも関わらず、fclose() がエラーを
返す場合はありますか?
>>153 そうそう
「FDはフレキシブルディスク。フロッピーディスクは確か商品名だったと思うたぶん」
と大昔先輩に教えられたw(約20年前)
Cを読む自信なくなってきたなぁ・・・・というか開発なんか体がもたんわw
(演算子の評価順番とか覚えてないしwマクロなんて怖くて書けないなぁ)
ていうかみんな自分で調べないんだなw
仕事にならんぞ(まぁ趣味だし、さらに「俺に聞け入門編」だったねw)
>>710 おれはチェックしてないよ
ディスクに読書きするとき発生するエラーの例
不正コマンド
アドレスマークが見つからない
書き込み禁止のディスクへの書き込み
セクタが見つからない
リセットに失敗(ハードディスクの場合)
前回の操作以後にディスクの入れ換えが行われた
ドライブパラメータアクティビティが失敗
DMAオーバーラン
64KBバイト境界を超えてDMAを行おうとした
不良セクタが検出された
不良トラックが検出された
サポートされていないトラックが検出された
データ読み出し時のCRC/ECCエラー
CRC/ECC訂正データエラー
コントローラの障害
シーク操作の障害
タイムアウト
ドライブの準備ができていない(ハードディスクのみ)
未定義エラーが発生(ハードディスクのみ)
書き込み障害が発生
ステータスエラー
センス操作の障害
_bios_disk (DOS/V)
bios.h
例外でイナフ
enough
大切なデータの書き込みが完了しなかったらこまる場合。
おなじファイルを再度、fopen()
する場合は、エラーを正しく処理するべきだろう(ずうっとエラーのままではこまるね)
>>710 読み込みオープン(fopen("file", "r"))のあとのfclose()なら殆どチェックしない。
書き込みオープン("w", "a"など)のあとのfclose()はバッファフラッシュのために実際に書き出すから
(直前にフラッシュしていない限り)チェックするようにしている。
日本の核武装―原子力の基本法改正と日本の核兵器製造能力
日本人が掌握している核兵器に転用可能な核原料が2000発あると推定する。
IAEAにある各種機械装置の明細を見れば、日本が持つこの分野の技術レベルを知ることができる。
他国では製造が困難な核爆弾や核ミサイルは、日本の手にかかればすぐにでも製造が可能なのである。
その事実を疑う人はいないだろう。
そして数日前、日本国の議会は原子力の基本法を改正、「我が国に役立つ安全保障」の一文を加えたのである。
ソース 鳳凰網 (中国語) 2012年07月03日 意訳
http://news.ifeng.com/opinion/zhuanlan/yutianren/detail_2012_07/03/15740347_0.shtml <世界の戦略核兵器数>
ロシア 2,668
アメリカ合衆国 2,126
フランス 300
中国 180
イギリス 160
インド 60
パキスタン 60
北朝鮮 10未満と推定
イスラエル 80? ←核疑惑
日本 2000? ←New!
ファイル書き込みの定石的な書き方知りたい
まずはファイルオープンとは何かをじっくりと考えれ
本よむかggrよ
ふっひっ
724 :
デフォルトの名無しさん:2012/07/10(火) 14:48:59.41
代行です。
rand関数のばらつきを見たく思い、次のようなプログラムを作りましたが、結果に予期しない数値が表示されます。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i,ran,r[30];
srand((unsigned)time(NULL));
printf("10000回、0~30の乱数を発生させて、そのばらつきを調べる");
i = 0;
while(i<10000){
ran = rand() % 30;
r[ran]++;
i++;
}
i = 0;
while(i<30){
printf("%d = %d\n",i,r[i]);
i++;
}
return 0;
}
配列に+1したいとき、r[ran]++;とすることはできないのでしょうか。
C言語の学習を始めて3か月の初心者です。
できない
出来るよ
でも変数(配列)は初期化しないと駄目だよ
おしい
>配列に+1したいとき、r[ran]++;とすることはできないのでしょうか。
この通り動作してる
が、r[] の初期値を 0 に設定してないから
(int r[30]; と宣言した場合、中身の値は不定)、予期しない数値になるだけ
関係ないけど、そのループでforを使わずにwhileにするのはどんなこだわりだよ
#include <stdio.h>
int main(void)
{
int i, j, k;
for (i =0; i<3; i++)
for(j=0; j< 26; j++)
for(k = 0; k <2; k++)
printf("%c", 'A' +j);
return 0;
}
for文の上2つは理解できるんですが、最後の
for(k = 0; k <2; k++) これってどういう意味?
AABBCC って事だろ
同一の2文字がアルファベット順となる順列を3順しなさい?
AABBCC…ZZAABBCC…ZZAABBCC…ZZ こう出力せよ
問題文にするのは難しいな。
大文字小文字とかか
ttp://ideone.com/bgg21 こうだな
AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz
AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz
AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz
リッチエディットを使おうと思ってrichedit.hをインクルードしようとしたのですが下記のエラーが出てしまいます
どうすればインクルードできるようになるでしょうか?
プログラムは
#include <Richedit.h>
#include <Windows.h>
int main(void)
{
MessageBox(NULL, NULL, NULL, 0);
return 0;
}
だけです
richedit.h(309): error C2146: 構文エラー : ';' が、識別子 'cb' の前に必要です。
richedit.h(309): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
richedit.h(309): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
richedit.h(310): error C2146: 構文エラー : ';' が、識別子 'flags' の前に必要です。
richedit.h(310): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
richedit.h(310): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
richedit.h(476): error C2065: 'EDITWORDBREAKPROCEX' : 定義されていない識別子です。
richedit.h(476): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
richedit.h(476): error C2143: 構文エラー : ';' が '(' の前にありません。
richedit.h(476): error C2062: 型 'char' は不要です。
richedit.h(476): error C2059: 構文エラー : ')'
richedit.h(482): error C2146: 構文エラー : ';' が、識別子 'cbSize' の前に必要です。
・
・
・
以下続く
#include <Windows.h>
#include <Richedit.h>
出来ました。ありがとうございました
737 :
724:2012/07/10(火) 18:13:45.01
代行書き込みありがとうございました。
>>727 >>726 アドバイスありがとうございました。教えて頂いた通り、配列を初期化することで正常な数値になりました。
>>728 for文よりwhile文の方が見やすい?気がするので・・・。
この場合、for文の方がいいですか?
そりゃfor文って主にこーゆーとき使うためにあるもんだしなぁ
while文の方が…は慣れてないだけかと
カウンタに関する処理が1つのfor文で書けるメリットを感じ取ろう
10回数字を入力してそれを全て足してsum=で表示する作業がしたいです。
なかなかできないので教えていただきたいです。
main()
{
int i,a;
sum=0
for(i=1; i<=10; i++){
scanf("%d",&a);
sum=sum+a;
}
printf(sum="%d\n",sum)
}
forのカウンターを1からとかsum=sum+aとかCっぽくないな
BASIC出身者ではよくあること
awk出身者ではよくあること
配列の添え字ならともかく、ループの仕方にとくにCぽいとか無いな
配列の影響があるからか、N回ループのイディオムは
for (i = 0; i < N; i++) {
}
がよく使われると思う
じゃあなんで配列が0オリジンなのかというと
配列添え字は実装上、メモリアドレスのオフセットに相当するからで、
まあそこまで気にすれば一貫性があるのかもしれない
それに、n <= Const の判定はキャリーフラグ一発で jmp できるしね。
しつれい、
n < Const の判定はキャリーフラグ一発で jmp
だね。もっともキャリーもゼロも両方みるオペコードも普通はあるけどね。
DJNZが思い浮かんだがあれは
for (b = N; b; b--) {}
図形の描画を複数ページで行うプログラムを作っています。
構造体宣言(sample.h内)
struct page{
ページの大きさ;
struct page_item *item;
}
struct page_item{
struct point;
int type; ←図形の種類
色や線の種類等;
}
typedef struct point{
int Xmin;
int Ymin;
int Xmax;
int Ymax;
}
構造体変数宣言+初期化(page1.c内) ←page2.c、page3.c、…とページ毎にファイル作成
struct page page1 = {{0,0,500,500},page1_item};
struct page_item page1_item[] = {
{{0,0,10,10},直線,~},
{{50,50,200,200},四角形,~}, ←「直線」「四角形」は#defineでint型の値
…
{0}
}
このように表現してみました。
753 :
752:2012/07/11(水) 00:09:44.76
描画関数の処理(byoga.c内)
0.ページ数を引数として受け取る。(←例: 描画関数(&page1); )
1.図形の種類を調べる
2.1が直線だったら、座標を元に線を引く。1が四角形だったら座標を元に四角形を作る。
3.全ての図形(page_item1配列の最後まで)を描画し終わるまで1~2を続ける。
ここで質問です。
(byoga.c内で)描画関数の処理を記述する時、
if(○==直線){
MoveTo(×,×);
LineTo(×,×);
}
この○と×の記述の仕方はどのように書けば良いでしょうか?
構造体の中に構造体があって、さらに構造体配列になっていたりして、しかもソースファイルも別なので混乱しています。
もうダメ(×,×)
755 :
752:2012/07/11(水) 00:15:22.10
エディタ使ってプログラム書いたのに、全部左によっちゃっいました・・・
見づらくてすみません。
それでまずは実装しろよ
struct page_item の int type; が 0 の場合に具体的な図形を指さず終端を兼ねてるなら
(構造体全体が 0 かを比較するのめんどっちいので type で終端を判断)
foo(struct page * drowobj)
{
struct page_item *p = drowobj->item;
while (p->type) {
switch (p->type) {
case 直線: ....
case 四角形: ....
}
p++;
}
}
758 :
752:2012/07/11(水) 00:57:30.43
>>757 アドバイスありがとうございます。
○の記述の仕方、typeで終端を表現する方法は理解できました。
あとは×の記述の仕方なのですが、
case 直線:
MoveTo(~Xmin,~Ymin);
LineTo(~Xmax,~Ymax);
break;
case 四角形:
…
struct page_item内のtypeはp->typeで表現することは分かりましたが、
struct page_item内のstruct point内のXmin(Ymin、Xmax、Ymax)というのは、どのような記述になるのでしょうか?
先日、構造体というものを学習しましたが、未だに構造体を使うメリットが理解できません
メリットを感じないうちは、使わなくておk
>>759 関数は、構造体をかえせるよ!
構造体のなかに、文字列の配列とか、整数とか情報をいれとく。
やってみたいとおもわない?
構造体の配列は、便利かもしれない
構造体の要素として、次の要素にリンクするポインタを追加すると、Cでリストがつかえる
764 :
763:2012/07/11(水) 05:19:44.45
△ 構造体の要素として
○ 構造体の項目として
△ 次の要素
○ リストにおける次の要素
#include <stdio.h>
int series(void);
int main(void){
int i;
for (i = 0; i < 10; i++)
printf("%d ", series());
return 0;
}
/* これは正しくない */
int series(void)
{
int total;
total = (total + 1423) % 1422;
return total;
}
どうして正しくないんですか?
コンパイラの警告レベルは最高にしなさい
>>765 自動変数ってとこかな?
どうなったら正しいのか分からないと正しくないかどうか判定できないが
totalが未初期化
仕事で未初期化すると無職化するよ
さすが経験者の言葉は重い
デバッガでtotalを追ってみたら
スゲーw
776 :
デフォルトの名無しさん:2012/07/11(水) 19:55:05.09
ツール使わないwindowsにデフォである3d描画ツールってないかな?
コマンドプロンプトから呼び出したりできない?
HTML5
131 名前:uy ◆pdu1UZmweE [sage] 投稿日:2012/07/05(木) 19:43:52.94
お前らは何かに熱中してるか?
おそらく何も熱中してないだろう
俺は女子小学生のパンチラにハマっている
お前らも熱中するものを持つと人生が豊かになるぞ
779 :
デフォルトの名無しさん:2012/07/11(水) 22:23:38.97
システムコール系の関数がC言語の棚においてあるC言語の専門書に載ってないのは何故?
ネットワーク関連とかグラフィック関連とか。
普通にC言語の関数なのに載ってないリファレンスにも。
>>779 C言語にはネットワークもグラフィックもないだろ
C言語でなんて、ネットワークやグラフィックはできないだろ?
システムコールの関数はC言語の関数じゃないということでしょうか?
system
exec
fork
popen
くらいなら載ってるんじゃね
システムコールはOSの話だろ
それをCなりなんなりでラッピングしてるだけじゃんか
そんなんがCの棚にあったら腰抜かして屁こくぞ
>>779 何を言ってるのかわからんがこれ見ろ
詳解UNIXプログラミング
>>783 そうそう
systemとかいう関数です。
これはC言語の関数じゃないんですね。
C言語の規格で定めているのは標準関数まで。
システムコール系とやらの関数は、OS等の機能に依存しているからC言語の範疇ではない。
それ、専門の本を探せば良い。
>>787 #include<Windows.h>
とか
#idef
とかもC言語の関数じゃないんですか?
明らかにwindowsって書いてるしな.....
Cの規格上では定まって無い
開発環境(VC++ とか) や OS(Platform SDK) が提供してる方言
プリプロセッサへの指示であるところの「ディレクティブ」だよ。
あらためて確認してみると JIS の用語では「前処理指令」ってなってる。
このあたりはカタカナ語でいいんじゃね? とは思うし、実際に前処理指令なんて言う奴はいねーよなぁ。
796 :
793:2012/07/11(水) 23:39:29.29
>>794 おおぉ、指摘ありがとう。
そんな、キーワードもあったっけ(汗
めでたしめでたし
システムコール、API、ANSI Cの違いが分からんのだろうなー
わからんからこのスレに来てるんだろww
いやしくもスレタイが「入門編」だぞwwwwww
そういう質問じゃないし、わかったんだろう、いいじゃねーか
プリコンパイル済みヘッダーファイル
802 :
デフォルトの名無しさん:2012/07/12(木) 01:56:06.53
特定のWebページのなかで特定のワードの有無をチェックして、
存在する場合にはそれが含まれている文を取得したいんですが、
やり方がよく分かりません。
MacなのでCかObjective-Cで、どなたか書き方教えて下さい。
wgetしてgrepでいいじゃん
それか餅屋のperlなり使えよアホ
幾らで?
システムコール、APIとどう違うんだw
システムコールは呼び出し
APIはインターフェイス
システムコールはカーネルが提供するプリミティブなAPI
つまりフライドチキンって事?
ケンタッキーはカーネルが提供するプリミティブなフライドチキン
>>808が一般的。
例えばWin32で、CreateFileとlstrcpyは、どちらもAPIとして用意されているけど
lstrcpyはシステムコールとはいわない。
CreateFile や fopen はシステムコールですか?
ていうか、カーネルモードへの移行を必ず伴うもの、的な呼び方のほうが正しいのかな。
HeapAllocなんかは、時々カーネルに行くけど大抵はユーザーモードで済むので
システムコールとは言わないと思う。
あと、直接カーネルを呼び出すint80/2E(Linux/Win32)、それいsysenterやコールゲート呼び出し等の
方法のことをシステムコールと呼ぶ流儀もあるかも。
>>812 CreateFileはシステムコール。(A/Wで)
fopenは、Cの標準関数。
毎回カーネルに行くけど、パラメータの変換等の処理をしていて
ダイレクトに行くわけじゃないし、普通はシステムコールとは言わないはず。
ついでに、openはPOSIXの標準関数で、大抵のUnix系ではシステムコール。
Windows上ではエミュレーションで用意されている、いわゆる互換関数。
mallocやバークレーのソケットライブラリ(socket,connect,listen等)は
システムコールでない?
816 :
798:2012/07/12(木) 10:20:02.33
うん
Unixコマンドを組み合わせてプログラムが作れますよね?
なのにわざわざC言語でプログラムを作る必要ってあるんですか?
Hello Worldを出力するプログラムは
echo Hello Worldでいいですよね?
コマンドプログラムとCプログラムの違いって何ですか?
おおものだ
そのechoはどうやって実現されているか。
そんなプログラムを必要としているのか?
>>820 あーなるほど。
echoってCで作られたプログラムなんですね。
コマンド組み合わせだけじゃ作れないものってありますか?
Cじゃないとだめみたいな。
速度さえ気にしなければCである必要はない。
既に存在するものなら作る必要なんて無い
「無い」から作るんだよ
>>824 例えばファイル圧縮とか展開のコマンドもあるんですよね?
それなのに何故わざわざ言語でプログラムを作るんでしょうか?
作りたいからだよ。
ファイル圧縮展開ができさえすれば何でもいいなら有ることになるし
圧縮率や速度や使い勝手やライセンスが不満だったりその他の理由があるなら無い事になるし
>>825 それで満足できるなら作る必要は無いよね
全く同じものを作るのは馬鹿
煽りたくてレスしてるだけなら何も言わないけど、本心で言ってるなら
開発者向きじゃないから色々と諦めた方がいいよ
何かをしよう・こういうのが欲しいと思いついて
既存のモンの組み合わせで出来るならよし
スクリプト言語でチャッチャと書いてもよし
本当に速度なりが欲しいなら、ようやくCとかのお出ましになる
それでも、プログラミングといえども既存のモン(関数なりライブラリ)の
組み合わせに過ぎないから、
結局、どこまで行っても既存の部品を組み合わせるだけの作業になる
……はずだけど、その組み方が新しいから、
出来上がったモンも新しく見える
お前も向いてなさそうだな。
なら半田ごてで電子回路作るところからやれや
アメリカにも、ロシアにも日本にも打ち上げロケットはあるのに
なぜ韓国は自国で作ろうとするのでしょうか?
商売って分かる?
でた~仄めかすだけで全く説明する気が無い奴!
すれちて分かる?
いてて
とかちつくちて
ふっふっ
韓国国内の暴力発生件数、日本の12倍以上「はるかに高い」
韓国ソウルの警察庁で12日、「暴力から安全な社会を作るための学会-警察懇談会」が開催され、韓国国内で
発生している暴力発生件数が日本の12倍以上も高いことが明らかになった。複数の韓国メディアが報じた。
韓国治安行政学会のパク・ドンギュン会長が発表した内容によると、2010年基準の韓国国内の
暴力発生件数は10万人あたり609.2件で、日本(50.4件)や米国(252.3件)よりもはるかに高かった。
大韓犯罪学会のジャン・ジュンオ会長は、「1990年から2002年までに発生した殺人事件から401件を無作為で調査したところ、
40.9%が暴力犯罪の前科を持っていた」と明かし、日常的な暴力が暴力犯罪につながる可能性があると主張した。
http://news.searchina.ne.jp/disp.cgi?y=2012&d=0712&f=national_0712_043.shtml
ネトウヨ王に、俺はなる!まで読んだ。
cのコメント文って//使っていいのかなVC使ってるから余り意識してなかったけど。c99から導入された機能らしいじゃん
正式にはね
でも使える環境なら使っていいよ
JavaとC# はポインタなんでないんですか?
それはあなたがクズだからです
JavaとC# がクズとは?
>>841 Cなら99からだがC++では昔から標準だったかと
なのでVCみたいなC++ベースの環境ならまず使えるし
純C環境でも99準拠なら使える
純Cで旧規格準拠だとしても独自に持ってたりするから
無い処理系ってあんまり見かけないやね
Javaではポインタのことを参照と呼ぶ
C#ならunsafe、fixed、Marshalがある
P/Invokeは事実上これを使わないと無理
ってマジレスさせてどうする
ポインタと参照は別の概念
実装がポインタでも関係ない
うきき
↑このてがはっやてるな、発病したか
ポインタの日本語訳が参照
↑嘘
ポインタは猟犬
指標
参照ってよく分からん。別名って解説もあるけど。
C++の参照と、他の言語、例えばJava等の参照は別のもの。
C++の参照は、古くからある「参照渡し(call by reference)」等にも使われている
意味的には「alias」に近いものだった。
ここに、他の言語が、C++においてはオブジェクトのポインタとして扱われているものに、
同じreference variableの名前をつけた(ただしポインタ演算が不可等微妙に差はある)。
ポインタちゃうんちゃう?
組み込みです
他の板で質問したけど教えて欲しい
int a=-1;
char hour =0;
hour += (char)a;
でhourが-1にならないので
if(a<0){
//処理
}
else{
//処理
}
不細工すぎて泣いた
サイズ小さい整数に代入すると未定義だからだよ
エスパー呼んでるぞ
#if '\xFF' < 0
867 :
961:2012/07/13(金) 17:41:00.29
hour=10から-1引いていくと
hour +=(char)a;のhourは
10・・0、255・・250と変化します。
それでaが-1ならhour--;とifで処理しないといけないのかなと。
868 :
961:2012/07/13(金) 17:41:56.57
-1引いていくと→-1していくと
255になるなら char が unsigned char 扱いになってるんじゃないの?
signed char で宣言してみれば?
871 :
961:2012/07/13(金) 17:56:49.36
>865
これ知らないので調べてみます。
volatile char hour→
volatile singed char hourにしたらはぁ?
美味くいきまいた。
volatile信用すんなよ
OSのアトミック操作のシステムコール使え
なんだよ、0から1引いたら23じゃないのかって落ちかと思ってmktime()の使い方を書こうとしちまったよ。
874 :
961:2012/07/13(金) 18:29:19.42
>>873 目的は0→23なんです。
うあああああ
今までchar xって宣言してた。
今まで作ったの全部まちがってたかも
全部足し算にして24の余を求めればいいんだよ
char 自体が間違いと言うよりも
unsigned char として扱う処理系があるってだけ
コンパイルオプションで変わると思うけど他に影響が出る可能性が
あるから signed char にした方がいいかな
hour++;
hour%=24;
hour--;
hour+=24;
hour%=24;
質問させてください。
前置の++と後置の++では、「前者は値を増やしてから利用する、後者は値を利用してから増やす」という解説をよく見かけますが、
規格やK&Rをあたってみても「副作用がいつ発生するかは処理系による」というようなことしか書かれておらず、↑のような記述が見当たりません。
両者の説明はどちらが正しいのですか?それとも、どちらも正しく私が何か思い違いをしているだけなのでしょうか?
fuck (num, num++, num++);
こういうファックなことはするな
わからんなら二行でも三行でも分けてかけや
インクリメント演算子なんてコード減らさないといけなかった時代の負の遺産だ
>>879 ありがとうございます。「正しく用いた場合の動作の順序は決まっているが、間違った使い方をした場合には動作の順序が保証されなくなる」ということでしょうか?
値を利用してから(副作用完了点までの間のどこか:処理系による で)値を増やす
a[i++] = *p; /* 実は p = &i */ とかもやばい
動作が不定な例を示せ
>>884 単に実装依存なのに不定になるわけねーだろ
頭悪すぎるぞ
規格で処理系依存から不定に格上げされてなかったっけ?
>>883 本当にありがとうございます。
後置の++が「値を利用して→値を増やす」という順序は決まっているけれども、
この矢印の間のどこで値を増やすかが処理系によるということなんですね。
a[i++]=i; という式が未定義なのは、(左の)iを取り出すのは1加えるよりも先に行われるけれども、
その後(左の)iを1加えるか、(右の)iの値を取り出すか、どちらを先に行うかは処理系によるからだという解釈で良いのでしょうか。
888 :
デフォルトの名無しさん:2012/07/13(金) 22:08:36.07
rand以外で乱数出すプログラム作れないですか?
例えば掛け算の結果の真ん中の数だけ抜き出すみたいな。
掛け算の結果の真ん中を抜き出せ
OK牧場
ひゅーん、ころころ
この前システムコールについて質問した者です。
javaとかだとコマンドプロンプトからWindowsのFrameとかを呼び出せるのですが
あれはシステムコールで言えば何という関数を使っているのでしょうか?
またCではグラフィックに関係するシステムコールの関数はなんでしょうか?
一応Javaでは
java jav.c appletviwer で
画像やフレームを取得して表示できます。
win32api
>>888 外部からエントロピーをもらわない限り、
コンピュータプログラムは決定的な動作しかできない
シードをどうするかという問題を除けば、多くの場合、randで使われるような
擬似乱数生成アルゴリズムを使うことができる。もちろん真の乱数ではないけど
>例えば掛け算の結果の真ん中の数だけ抜き出すみたいな。
「二乗中抜き法」でぐぐる
>>891 理解できました。ここで質問してよかったです。ありがとうございました。
>>894 Cから呼び出すにはどうしたらいいでしょうか?
環境はVisual C++とコマンドプロンプトです。
#include<Window.h>でいいでしょうか?
C言語書棚の関連書物の索引を調べても
#include<Window.h>という語句はなかったので。
仮想機械を介して呼んでるだけで
Cでは処理系ごとにグラ関係の関数がある
>>887 一応補足
副作用完了点 ってのはここ以降であれば 値が増えていることを保障できる点
>>883 の例ならば 行末の ; が相当。
関数引数の , は該当しないので
>>879 の例はちとややっこしい
少なくとも ; では加算終了してるけど 関数引数をどの順で評価するのか という別のルールと複合するので
while ( *cp++ ){
処理;
}
みたな書き方はあまり推奨されないのでしょうか。
いえいえ
インクリメントは男の仕事!!
劇場版エヴァンゲリヲンC
来年夏公開決定!
劇場版エヴァンゲリヲンC
来年夏公開決定!
911 :
赤い牛:2012/07/13(金) 23:49:28.08
オロナミンC 元気溌剌?
この主張は辞めたん?
885 名前:デフォルトの名無しさん [sage] :2012/07/13(金) 21:56:28.30
>>884 単に実装依存なのに不定になるわけねーだろ
頭悪すぎるぞ
頭の悪い
>>912 が想像する不定とは何か?
それが問題
ぶひひ
妙なコメントに誤魔化されてるだけでしょ
俺の主張は不定
住所不定(ソルジャー派遣)
#include <stdio.h>
int main(void)
{
int i = 3;
printf("%d\n", (++i)*(++i) );
return 0;
}
/*
C:\>CD \Borland\Bcc55\bin
C:\Borland\bcc55\Bin>bcc32 ppi.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
ppi.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
C:\Borland\bcc55\Bin>ppi
20
*/
D:\work>gcc -Wall -o ppi ppi.c
ppi.c: In function `main':
ppi.c:7: warning: operation on `i' may be undefined
D:\work>ppi
25
D:\work>
implementation 実装、処理系
2つのライブラリを使っていて
あるライブラリで
struct a{
unsigned short a;
unsigned short b;
unsigned short c;
};
が定義されている
一方別のライブラリではstruct aに該当するものを配列として扱ってる
unsigned short d[3]でd[0]がa、d[1]がb、d[2]がc
で、void func(unsigned short *)が定義されている
この場合、struct a A[10]をキャストして
func((unsigned short *)A)として突っ込んでA[0].a~A[9].cを[0][0]~[9][2]として使うのって正しいですか?
気にしてるのはパディングされてずれたりしないかということです(処理系依存になっていないか)
構造体のサイズを測れば?
なんか、Cのコードで不定数の引数の関数を作る方法で、
fn(x, y, z, ...)としなければならないのを、zと...の間の,を入れていないコードが
コンパイルエラーにもならないし普通に動くんだけど、なんでだかわかる人います?
なんかわかりずれぇなー
お前が書いた2パタン
そのまま上げろよ
void f1(int x, int y, int z, ...); と
void f1(int x, int y, int z...); の
両方が通るって話だろ。
どんなコンパイラを使ってるのかは神のみぞ知るだけど。
927 :
922:2012/07/14(土) 11:46:20.65
>>923 それは言語仕様として決まっていない(処理系依存)ということでしょうか?
処理系によりずれる可能性があるのであれば代入してから使用するようにします
d[i][0] = A[i].a;
d[i][1] = A[i].b;
d[i][2] = A[i].c;
としてからからfunc(d)とする
>>926 MacやLinux上でg++
細かいバージョン番号は知らないけどそれなりに新しい
バージョンも書かないわgccじゃなくg++とか言い切るわクズだな
タイトル読め
>>931 そこ、C++部分じゃないんだが?
K&R読め
>>922 構造体中の先頭のメンバだけは言語仕様でパディングが無い事が保証されてる(6.7.2.1)
2番目以降のメンバはその保証が無い
>>934 C言語の話題をC言語のスレでふって何が悪い?
うるせー口くせーからしゃべんな
>>935 おめーだれ?いったい何者?何がしたいの?バカ?
キリッwwwwwwwwwwキリッwwwwwWWWW
吉里吉里
馬鹿のuyです(キリ)
ヒント
入門スレにはそれに相応しいレベルの回答者
ヒント
お前が答えろよ
ヒント
uy もひどいが QZ は最悪
131 名前:uy ◆pdu1UZmweE [sage] 投稿日:2012/07/05(木) 19:43:52.94
お前らは何かに熱中してるか?
おそらく何も熱中してないだろう
俺は女子小学生のパンチラにハマっている
お前らも熱中するものを持つと人生が豊かになるぞ
>>169 他のスタイルは知らないが、K&R では
1) 関数は
function(a, b, c);
void function(void);
と識別子と()の間にスペースをいれない
2) 制御文 for, while, do-while, switch では
for (i = 0; i < n; i++) { }
switch (b) {
while (n > 0) {
とスペースを入れる
ただ、ここで重要なのはスタイルを一定にしておくことかもしれない。
大事なことは馬鹿のいうことは聞かないことだ
もっと大事なのは
誰がヴァカなのかを見極めることだ。
ちなみにオレ様はヴァーーーカやろうじゃないからな、
安心して質問でもなんでもしてくれ給え 学生諸君。
↑馬鹿
大事なのはQがクズだという事だ
>>948 システムコールでコンテキストスイッチが何回おきるか分かりません
スレも最後の方になったんで気になっていたことを。
>>464 へー、そんなもんがあるんすね。単にググッてるだけ、という気もしますが。
で、どんな特徴があるのですか?ひとつお伺いしたいなあ。自分じゃ気づかないんですね。
QZ先生は何と戦ってるんですか
>>951 答える前に問おう、
なんで分からないんだ?
なんで貴様はその回数を知ることができないんだ?
>>953 ごめんなさい。小出裕章さんの映像に影響されすぎました。
Microsoftは学生優遇すぎんぞおおお!
僕もVisualStudio2010でインテリジェンスな開発環境を構築したい。
誰か釣られろ
次スレ立てます
スレ立て乙です
>>958 実際、visualstudioって高いお?
インテリジェンスww
開発環境www
構築wwww
知性のカケラもねぇなwwwwwwww
インテリジェンスは名詞だから
インテリジェントな の方が自然である
bizspark
Thisポ!
順列を作るプログラムを作っているのですが
重複しない場合のはできたのですが
重複を許す場合のプログラムが上手く作れません
下のプログラム改変でできないでしょうか?
970 :
デフォルトの名無しさん:2012/07/15(日) 22:02:01.45
#include<stdio.h>
int a[100];
int c[100];
void combi(int n,int r,int p,int q){
int i;
if(q>=r){
for(i=0;i<r;i++) printf("%3d",c[i]+1);
printf("\n");
return;
}
for(i=p;i<n;i++){
c[q]=a[i]; combi(n,r,i+1,q+1);
}
}
int main(void){
int i,n,r;
printf("nCr algo please input n,r ="); scanf("%d,%d",&n,&r);
for(i=0;i<n;i++){ a[i]=i; c[i] =0;}
combi(n,r,0,0);
return 0;
}
971 :
969:2012/07/15(日) 22:51:53.06
連投すみません
再起の
c[q]=a[i]; combi(n,r,i+1,q+1);をc[q]=a[i]; combi(n,r,0,q+1);
にしたらできたのですがプログラム的には問題ないでしょうか?
"メニュー画面に戻る"という処理はどのような流れでやればいいのでしょうか
今はswitch文で分岐して戻り値の無い関数に飛んでメニュー画面の関数を呼び出しているのですが、初回のような画面になりません
どうぞよろしくお願いいたします。
状態機械でやるといいよ
フラグでおk
>>974 赤上げて白下げて白上げないで赤下げない、状態になるんではないかな?