1 :
デフォルトの名無しさん :
2011/02/06(日) 18:33:49
ここは俺ことイカ娘に聞け(上級編)Part 78でゲソ ,.__y⌒'ー---┐ ,.____ _へ、_、__,.ヘ、___ / \ , '´ `丶、 r´ } ( 聞 ど l / l _, -―― - ヽ、┌´ ナ丶 f´ ) こ う ヽ n⌒l/ l ,. .´: : : : ハ: : : : :`.ヽ'ヽ ├┬゛ tナ l ( え も } l |l |n l / : :/ j:/ーヘl: : :|: : : : | }. ノ / { ) ん 〉 | { j」_l /:l :/ |:/`}ノ!.:/ { ヽ / /へノ } ( で { _j /ヘ/: :l ミミ l/} 〈 ノ -‐ァ、、 . ) ! ゲ (: :´メ、_,.メ、|: : | , , ミミ./ :l . }. ┌─┐ (,__ └-、 ソ ,/ ヽ : : : : 丿」: : |、 /`¬ , , |: :| ) ┌┘ ゝ 、_,,,,,,,... -ゝ/ ̄/´,.__.|: : | >-| /_,ノ. : :\__l\ ・ . ,/ / ̄ヽ l!: : :ヽ、l 丶イ |.|ト、:.\: : : : : : : :>-、-、 __,,.、 ( ヾ \:_: :\__ ,‐//.| `l:\ ̄ ̄l/  ̄  ̄ ̄ ̄ヽr―ァ' \: : /、 // }/: : し\ /: :,L,. く ___/::/ \'/ { ヽ┬┐/ /: :/ /: ヾ¬ー'^ヽ ヽ 丶__ _,-、 __/: :/ /: :/ \ {、´ __ _l::::l⌒\ |: : : : / |: : i /:\ ` >'´ \`-´^ヽJ /: : | ̄ |: : レ /: :// \
914 :デフォルトの名無しさん:2011/02/06(日) 17:00:59 そんな話は聞いたことないけどしたいならそうすればいいんじゃない? それより、 i * 10 + 9 + ( i == 9 ) は意図したとおりに動かないね。 920 :デフォルトの名無しさん:2011/02/06(日) 17:34:11 問題ないように思える人はもう一度Cの規格票をよく読むんだ^^ 923 :デフォルトの名無しさん:2011/02/06(日) 17:38:32 …というのも不親切なので答えをいうと i == 9の部分はtrueの時1になることを想定しているけど (90-100の階級幅だけ11あるので、ここだけ特別処理にしている) Cの規格上はtrueは0以外の整数であればなんでもいいことになっているので 実装にっては「90-100」のような表示にならない可能性があるってことなのよ^^; ここは printf( "%d-%d %d人\n", i * 10, i == 9 ? 100 : i * 10 + 9, cv[ i ] ); のようにすべきでした。 924 :デフォルトの名無しさん:2011/02/06(日) 17:41:11 って、答えを書いているうちに即レスするんじゃない貴様ら^^ ちなみに、この「trueは0以外の整数」というのは Cではけっこう重要な落とし穴なので初学者は覚えておくといいよ^^ 929 :デフォルトの名無しさん:2011/02/06(日) 17:44:46 あれ?そうだっけ?すまんすまん^^ワラ 935 :デフォルトの名無しさん:2011/02/06(日) 17:49:37 こうして人は成長していくのであった^^;
4 :
デフォルトの名前無しさん :2011/02/06(日) 18:48:59
c言語を学びたいのですが、どこから始めたら いいか分からないので、教えていただけますか?
>>4 > どこから
まずはコンパイラを動かす所から。
使ってる OS は Windows?
6 :
デフォルトの名無しさん :2011/02/06(日) 19:43:00
いつも思うんだが、何でプログラミング言語を開発しようとしてる人っている のかな?C言語が一番高速なのは分かっているのだから、Cを使ってツールを 開発したらいいのに。
8 :
デフォルトの名無しさん :2011/02/06(日) 19:48:11
>>7 あなたは結構有益な回答くださるのに、何故このスレで嫌われ気味なのですか?
>>6 1. もっと開発効率が良い言語が欲しいから
2. もっと安全な言語が欲しいから
3. もっとプラットフォーム依存度が低い言語が欲しいから
4. もっと書いていて気持ちの良い言語が欲しいから
5. just for fun
>>8 基本的なスタンスが「あらし」ですからねえ。
◆QZaw55cn4cはなんで自分の巣でじっとしてられないの?
釣れたw
17 :
デフォルトの名無しさん :2011/02/06(日) 19:54:39
Win32APIとC言語って何の関係があるんですか? 本屋に行くと,WinAPIとCがそれぞれ別の言語としてコーナーに分かれていました。 WinAPIって言語なんですか?
>>17 親切に答えると怒られるスレで親切に答えてみるテスツ
APIの意味調べてみた?
「〜てみるテスト」ってまだ使う人いたんだ
>>17 win32api は Windows の話です。
Windows という OS が提供する機能を使用するときには、win32api と総称される関数群を所定の手続きを経て呼び出します。(正確には dll の エントリーを呼びだすことになります。)
win32api を呼び出すのは、C 以外の言語であっても処理系によっては可能です。(excel からでも可能だったりします。)だから厳密にいえば、c 言語であることと、win32api を呼び出すこととは直接の関係はありません。
◆QZaw55cn4c
23 :
デフォルトの名無しさん :2011/02/06(日) 20:11:25
>>21 へーそうなんですか。
確かwin32apiを呼び出すときは
#include<stdio.h>
int Winmain(Windows.h)
にしないとだめなんですよね?
24 :
デフォルトの名無しさん :2011/02/06(日) 20:12:33
RubyってC言語に比べてどの点で勝ってるの?
>>24 オブジェクト指向、それも純粋なオブジェクト指向であるところ。lisp の香りがするのも好き。
>>27 コピペキチガイに粘着されてるからコテ外せ
◆QZaw55cn4c氏ね
前スレ984です。 ご説明、ありがとうございました。 >SCI の値は 0x00808000 で、これは具体的にはアドレスと考えていいでしょう。 この説明は、わかりました。しかし、*を付けるのがよくわかりませんでした。 私にはまだ難しすぎるようです。 他のスレで、まったりと聞くことにしましたので、移動したいと思います。 どうもすみません。ありがとうございました。
>>30 ◆QZaw55cn4cみたいに、嫌われようがしつこく粘れよ
unsigned int *SCI = (volatile unsigned int *)0x00808000;
の前に
unsigned int a;
unsigned int *SCI;
SCI = &a;
が理解できるのか?
で
unsigned int *SCI = &a;
は理解できるのか?
◆QZaw55cn4cは糞
>>28 コピペ気狂いってなにを目的に人のレスをコピペするのですかね。コピペしてなにがいいたいのですかね。謎です。
>>34 氏ねカス
味方がいると思ってんじゃねーよクズ
>>34 このスレで必要とされてないからもう来ないでくれ。
荒れるだけだから。
このスレに必要なのは質問者と回答者のみ。 質問がないならスレ伸ばす必要もないし、微塵も笑えないネタなど不要である。
必要なのはスルー力
ここはキチガイの溜り場ですか?
45 :
デフォルトの名無しさん :2011/02/06(日) 21:17:37
このスレ伸びすぎワロタwww
◆QZaw55cn4cは自分のスレに篭ってればいいのに
◆QZaw55cn4c 一人だけがキチガイです
こいつ有料で宿題やる奴だっけ
たったったっ=з=з=з くるり∂ なにか!?
たったったっ=з=з=з くるり∂ なにか!?
>>48 今の所は一度もモリタポの授受はないようだが
一度でもモリタポの授受があった時点でアウト
2chで金儲けや宣伝をすると高額の宣伝料を取られます
52 :
デフォルトの名無しさん :2011/02/06(日) 23:56:50
二番目の文字を頭揃えしたい場合は\tを使うと習ったんですが、 揃う場合と揃わない場合があります。なぜでしょうか #include<stdio.h> int main(void) { printf("sakamoto\tkakitsubata\n"); printf("keiji\tkuriverzidy\n"); return 0; } ↑は揃いません。どなたか教えてください
>>52 タブ幅はたいてい8文字分。
sakamotoで8文字いっちゃってるから、タブで次の8文字にいっちゃう。
printfでやりたいなら%10sとかでできる。
>>52 揃う揃わないをどのように確認していますか?
コンソール画面やエディタなどでしたら
それらのタブ幅を9以上に設定すると揃いますよ
>>52 揃うか揃わないかは端末次第です。タブで揃わない場合は空白で調整するしかありません。
それとて、端末がプロポーショナルなレイアウトなら揃えられないかも知れません。
56 :
デフォルトの名無しさん :2011/02/07(月) 00:08:15
C言語にも変数(オブジェクト)という機能がありますよね? それなのにオブジェクト指向言語じゃないんですか?
57 :
デフォルトの名無しさん :2011/02/07(月) 00:10:49
オブジェクト指向のサポートが弱いからね。
59 :
デフォルトの名無しさん :2011/02/07(月) 00:17:38
オブジェクト指向にもできるが、一般的にオブジェクト指向言語とは言われない。
>>56 言語としてのサポートはないに等しい。
自分で作ればいくらでもできる。
int a; a=100; これはオブジェクト指向では?
>>56 変数を指す「オブジェクト」とオブジェクト指向の「オブジェクト」って意味違うよ
63 :
デフォルトの名無しさん :2011/02/07(月) 00:24:47
64 :
56 :2011/02/07(月) 00:27:19
ホントに皆さんよく釣れますねw
65 :
56 :2011/02/07(月) 00:29:20
よくわかりました。ありがとうございました。
#include<stdio.h> int main(void) { printf("%f\n",10+3); return 0;} だと正確な答えが出なくて、printf("%f\n",10.0+3.0)だと正確な答えが出るのはどうしてですか?
>>68 > printf("%f\n",10+3); 〜 だと正確な答えが出なくて
10+3 と言う int 型の値を printf("%f\n", ) が float 型とみなして表示しようと
するから。
ちなみに float f = 10 + 3; は、int から float に変換して正しく 13.0 が f に
入るけど、printf() の引数はその手の変換はしない。
(フォーマット文字列が可変なんていうケースもあるから。)
72 :
デフォルトの名無しさん :2011/02/07(月) 00:42:39
>>68 printf("%f\n", ...
とした以上、"%f\n" の次にくる引数は double 型でなければなりませんが、この引数を「10 + 3」と書くと、double 型にはなりません。
「10.0 + 3.0」
であれば、double 型になります。
C の文法では、"%f" を printf() の第一引数で指定したからといって、第二引数以下を適切に型変換してくれないのです。
>>71 >float 型とみなして
可変長引数では double 型に格上げされます。"%f" は double 型に対応する書式指定です。
75 :
デフォルトの名無しさん :2011/02/07(月) 00:47:11
初めまして。 ただいまC言語勉強中の者です。 行き詰ってしまったので教えてください。 1.テキストファイルからテキスト(複数行)を読み込み、別のテキストファイルへ1行(改行なし)で書き込む。 2.特定の文字列が含まれる行になった時に、改行する。 以上の事をやりたいのですが、どうしたらよいでしょうか?
>>74 %fはfloatも表示できるだろうが
とりあえず消えろ
77 :
デフォルトの名無しさん :2011/02/07(月) 00:51:42
>>75 1.strstrで特定の文字列を探す。
2.特定の文字列の前までgetcharで1文字ずつ読んで改行は読み飛ばし、改行以外はそのまま出力。
3.特定の文字列を出力して、改行。
4.特定文字列の後ろの文字から1.以降を繰り返し。
>>75 複数行と1行の関連性がわからん
例題的なのがあればまだ答えようがあるんだが
2については特定の文字列を探して
文字列を\nに交換して後ろのを前にずらしてくる
>>76 それは可変長引数においては、float は double に格上げされるから。これを default argument promotion と呼びます。
ISO/IEC 9899:1999 6.5.2.2.6
K&R2 A 7.3.2
84 :
75 :2011/02/07(月) 01:17:43
>>78 説明不足で申し訳ありません。
以下例文
====================
日曜日
月曜日
火曜日
水曜日
木曜日
金曜日
土曜日
日曜日
月曜日
====================
これを以下のような感じに1行に並べる(1)
「日曜日」と言う文言がきた時に改行する(2)
====================
日曜日 月曜日 火曜日 水曜日 木曜日 金曜日 土曜日
日曜日
====================
と言った感じです。
この例文でわかりますでしょうか?
◆QZaw55cn4c氏ね
◆QZaw55cn4c 消えろゴミクズ
>>84 それは困りました。
1) 「日曜日」をみつけたら「日曜日」を出力してから改行する
2) 「日曜日」をみつけたら「日曜日」を出力する前に改行する
のいずれにもあたりませんね。どうしましょうか?
関連レスを見てみると◆QZaw55cn4cはあまり良くないようですね あやうく変な人と交流をもつところでした
>>94 ◆QZaw55cn4c は明らかな人格障害だよ
こいつ精神科に行かなければならない
2chでも多くの人に迷惑を掛けてばかりだ
>>84 ====================
日曜日 月曜日 火曜日 水曜日 木曜日 金曜日 土曜日
日曜日
====================
ではなく
====================
日曜日 月曜日 火曜日 水曜日 木曜日 金曜日 土曜日
日曜日 月曜日
====================
じゃないのかい?
これなら、日曜日は改行でそれ以外はスペースと法則性は見える
>>84 a.ある程度の長さのバッファを用意する
b.1行ずつ読み込んでいく
c-1.読み込んだ中に特定の文字列が無ければファイルに書き込む
c-2.特定の文字列があれば改行文字を書き込んでから以下略
>>87 これがスレチならここは何をするんだ?
◆QZaw55cn4c
消えろゴミクズ
屁理屈並べて2chで商売しようって奴だ まともじゃない
最近ちょくちょく来る質問って全部同一人物の釣りに思えてきた 毎回◆QZaw55cn4cを誘発するし
>>96 申し訳ありません。
ご指摘のとおりです。
>>97 実行したい動作としては、その様な感じです。
http://akatan.cool.ne.jp/jinkaku.htm を見ると
◆QZaw55cn4c は「妄想性人格障害」と「無頓着性自己愛性人格障害」の混合タイプみたいだな
>人格障害とは
>その人の持っている「人格」が常道からはずれてしまって、社会生活に障害を来すものを言います。
>青年期や成人期早期に始まることが多く、長期にわたってその人格が安定しいて、苦痛を伴います。
>この中でその障害が他の精神障害に原因がないものを一般的に人格障害といいます。
もう人間のクズじゃん
>>75 1.
system("echo `cat file.txt`");
2.
system("awk '{printf(\"%s \", $0);} /pattern/ {print \"\";}' file.txt");
大事なことを書いていませんでした。 実行する環境はWindowsServer2008です。
データは後から追加したりしたいです。
>>106 自分で試行錯誤して
それでも出来なかったら聞けよゆとり君
どれでも構わないから書いてみろってwwwww
絡んでる人の頭悪すぎなのかピュア過ぎなのか知らんけど 絡み方が下手すぎて面白くない
留年の優越感は異常wwwww 夏と春休みで、理解できなかったプログラミング勉強しまくって ウハウハwwwwwwwもう職業レベルwwwwスロースターター過ぎ ワロタwww 後輩の女子にプログラミング教えまくって楽しすぎワロタwww 「先輩何で留年したの?」 "あのさ、俺仮面で東大目指そうとしてんだわ、私大だから授業料 たけーじゃん?でほとんど大学行ってなかったし、でももう諦めたわけ" 「ええ何でですか?」 "いやさ、東大行っても結局1人暮らしで生活費かかるじゃんw?" 「確かに!、かっこいいですね先輩!、先輩ここ教えてください」 "えぇよ、先輩って言わなくていいよ^-^" 可愛すぎワロタwww言い訳かっこよすぎワロタwww 留年してよかったwww 男同士固まって教えあって、必死こいて単位取ってる奴らバロスwwww そんな奴らが論文wwwwwww童貞wwww
留年して、頼れる先輩になって女子にもてもて、ついでに単位もオール優 よって飛び級決定wwww絵に描いたような勝ち組過ぎてさーせんww 留年=真の勝ち組は決定事項ww
おっぱい
ふ
このpartもキチガイ達の宴会場だな 楽しすぎる
傍観者のつもりでいるようだけど、君は既にキチガイに足を踏み入れている
かゆ…うま
き
くせえ
えせく
き
まう…ゆか
るいてれ入み踏を足にイガチキに既は君、どけだうよるいでりもつの者観傍
るぎすし楽 なだ場会宴の達イガチキもtrapのこ
VIPでやれクズ
133 :
デフォルトの名無しさん :2011/02/07(月) 22:39:40
今更だけど久しぶりにcをやろうかなと思いまして、フリーソフトで いいのないかな?なんか前使ってたボーランドが見当たらなくて
134 :
126 :2011/02/07(月) 22:40:17
ごめん 悪気はなかったんです 今度は邪魔しないから、ここからもう一度、がんばってみないか?
無理だ心折れた
ぐぐれかす
おまえは文字を逆に書いて何をしたかったんだ?
ググレカレーおいしお
>>1 までやろうと思ってたんだ
おまえさえいなければ…ぜったいにゆるさない…
どうすれば許してくれますか?
謝罪しろ
◆QZaw55cn4c を呼んできたら許す あいつ来ないとスレが面白くない
>>142 横レスだが、134で謝罪してるんじゃね?
反省の気持ちが伝わってこない 心が伝わってこないので許しません
146 :
デフォルトの名無しさん :2011/02/07(月) 22:57:00
147 :
134 :2011/02/07(月) 22:58:56
ダメだな 心が伝わってこない。むしろ怒りが増した
◆QZaw55cn4c はことごとく論破されてただいま発狂中です
うまい法律の抜け穴を探してるんですねwww
飽きたわ
つーかこれだけム板の住人に嫌われてんのに平然と書き込みをする ◆QZaw55cn4c の神経は本当にどうかしてると思う 普通だったら恥ずかしくてコテ外すぞ
>>152 お前らのことなど眼中に無いから気にならないにょ♪
お前らキチガイ好きだなw
おまえらまるで、ハンティングを楽しんでるライオンみたいだな!!
>>154 お前が眼中になくてもこっちが迷惑してると言ってんだよ
本当に頭おかしいなお前!
とっとと精神科逝け
キチとそれを馬鹿にしている馬鹿だろ
○○○ ○ ・ω・ ○ ○○○ .c(,_uuノ
とびかうブーメラン
162 :
デフォルトの名無しさん :2011/02/07(月) 23:34:15
他のスレの実況なんかどうでもいい 2ちゃんで顔が広いの自慢する奴とかキモすぎるし
急に◆QZaw55cn4cを擁護する人間が現れ始めたな ◆QZaw55cn4cのスレで◆QZaw55cn4cが論破されてからこの流れ はてさて^^
◆QZaw55cn4c はご覧のように極めて性格が悪く、リアルで友達が一人もいないので ここに構ってもらいに来ているのです しかもあまりの性格の悪さと耐久力の無さに、いい年をして未だに無職で、新しいPCを 買う金もないのでPenV800MHzという時代遅れもいいマシンを使っています
その証拠に◆QZaw55cn4cにSSE2ベンチマークについて質問してみるといいでしょう 答えられませんからwww
モリタポ貯めてオンボロパソコンの買い替えを夢見るおっさん かわいちょーwww
>>76 はfloatを引数に渡し、意図したとおりに出力される点において、なんら間違っちゃいない。
内部でdoubleに格上げされることを言及する場面でもないだろ。
Qなんとかがせっせとレスしてたみたいだが。
とおもったら格上げされることについて噛み付いてんのか。俺盲目ですまん
>>168 > ちなみに float f = 10 + 3; は、int から float に変換して正しく 13.0 が f に
> 入るけど、printf() の引数はその手の変換はしない。
> (フォーマット文字列が可変なんていうケースもあるから。)
イジメヨクナイ
なんだこの流れは?と思ったらQなんとかが偉そうに誤解等かよ printfの"%f"はdoubleにcastされるのか? こりゃ新しいコンパイラが必要だなw
↑こいつさいこーにばかw
printf()などの可変個数引き数の場合やプロトタイプ宣言がない場合、引き数の型は intよりも小さい整数型はintに、doubleより小さい実数型はdoubleにキャストされて詰まれる。 注意すべきは、intやdoubleよりも大きい型の場合。例えば、これは破綻する。 -- long double foo = 1; int bar = 2; printf("%g, %g", foo, bar); -- 前者はlong doubleをdoubleにキャストしてくれないし、後者は整数を実数にキャストしてくれない。 但し、プロトタイプ宣言がある場合は適切にキャストされる。従って、これも問題ない。 -- void func(float foo, long double bar); func(1.2, 3);
>>172 >>173 わざわざコテ外して暴言吐いてから書き込む◆QZaw55cn4cさんぱねぇッス!!!”!!!!!!!!
>>173 リーズナブルって、金も無いのに買えるの?出来もしない事を言っちゃいけませんよ^^
>>175 無理だろ。
MacBookAirの値段を500円で割ってみろよ…何年後になるんだよ
>>173 リーズナブルわろたw
無一文でそのセリフは完全にギャグだろw
乞食の見栄とか言うなよ。失礼だぞ!
哀れな中年ニート ◆QZaw55cn4c
182 :
デフォルトの名無しさん :2011/02/08(火) 11:39:39
◆QZaw55cn4c氏ね
>>182 データを転送する。
時間を計る。
おわり。
173 : ◆QZaw55cn4c :2011/02/08(火) 08:01:21
>>171 ちんちんシュッシュッ
って書くと、楽しんでいただけますか?
>>188 そうでしたか
どこで聞いたらいいですかね?
>>189 さん宿題をやってくださいって話ではないです
まさに自問自答
触らぬキチガイに祟り無しだよ
何かパタッと書き込みが止まったなw 自作自演してたのはほとんど◆QZaw55cn4cだったってオチ?
◆QZaw55cn4cを擁護する書き込みは◆QZaw55cn4c本人によるもの 普段トリップを外さないのは他人を装いやすくするため
Q、恥ずかしい過去(
>>71 >>76 )を消すにはどうしたらいいですか?
A、スレッドを流せばいい
Q、連投すると荒らし扱いされる危険もあるのでは?
A、◆QZaw55cn4cをダシに使えばいい
Q、さすがにバレバレでは? A、突っ込む奴=◆QZaw55cn4cでおk
インクリメントについて調べても理解できなかったので質問です #include<stdio.h> void main() { int a,b; a = 2; b = 2; printf("a=%d , a++=%d , ++a=%d\n",a,a++,++a); printf("a=%d \n",a); printf("b=%d , ++b=%d , b++=%d\n",b,++b,b++); printf("b=%d \n",b); } このプログラムで、aとbで数字が微妙に違うんですがなぜですか 順番が関係してるのはわかりますが詳細希望です
>>199 >printf("a=%d , a++=%d , ++a=%d\n",a,a++,++a);
>printf("b=%d , ++b=%d , b++=%d\n",b,++b,b++);
こんな風に変数呼び出しに複数の引数を指定した場合はその評価順序については
規定がないから
201 :
デフォルトの名無しさん :2011/02/08(火) 22:05:16
ぱぁぷぅ
共通の変数使うなよ未定義になるから
>>199 1行で複数の副作用が発生する場合、どの順番で処理するのかは環境依存。
その例で言えば、決まった結果になるのはaとbの最終的な値のみ。
>>200 規定がないってことは環境によってもでてくる数値が違ってくる可能性があるってことですか
>>203 で出てました失礼
ありがとうございました
206 :
デフォルトの名無しさん :2011/02/08(火) 22:11:38
1行って説明をそのまま額面どおりとっちまいそうな調子だな
これかな §6.5.2.2. 10 The order of evaluation of the function designator, the actual arguments, and subexpressions within the actual arguments is unspecified, but there is a sequence point before the actual call.
>>199 について
◆QZaw55cn4c、 コメントをどうぞ
要するに引数の評価順序に依存する部分は関数呼び出しの外に出せって事だな
197 :デフォルトの名無しさん:2011/02/08(火) 21:34:34
Q、恥ずかしい過去(
>>71 >>76 )を消すにはどうしたらいいですか?
A、スレッドを流せばいい
Q、連投すると荒らし扱いされる危険もあるのでは?
A、◆QZaw55cn4cをダシに使えばいい
198 :デフォルトの名無しさん:2011/02/08(火) 21:38:11
Q、さすがにバレバレでは?
A、突っ込む奴=◆QZaw55cn4cでおk
211 :
199 :2011/02/08(火) 22:47:06
>>206 「;」で区切るまでってことですかね?
>>209 関数呼び出しの外に出すっていうのは具体的にどう書くのですか
#include<stdio.h> int main(void) { int sum; printf("数字を入力してください\n"); scanf("%d",&sum); do { printf("%d",sum % 10); sum = sum/10; } while(sum > 0); return 0; } エラーでます・・・ parese error before"G" Gなんて言葉ありませんよ?どういうことでしょう
>>211 何怒ってんだよ。落ち着けってww
a++;
printf("%d",a);
みたいに分けろって事なんじゃね
どっちにしろprintf("%d %d\n",a++,a++);とかは
コンパイラによって評価の仕方が違うから理解する必要ない
というかやってはいけないと理解するべき
マジだわろたw
>>211 例えば
>printf("a=%d , a++=%d , ++a=%d\n",a,a++,++a);
↓
>int b = a++;
>int c = ++a;
>printf("a=%d , a++=%d , ++a=%d\n", a, b, c);
220 :
199 :2011/02/08(火) 23:00:14
>>213 ごめん全然怒ってないんだけど、
>>212 の間違いかな。
なるほど、変数が同じときは一個一個分けて書くってことですか。
「,」で続けるのはやってはいけないって覚えておくことにします。
>>219 あ、これじゃaの値が変わってしまうからaも保存しとかなきゃ
>int aa = a;
>int b = a++;
>a = aa;
>int c = ++a;
>printf("a=%d , a++=%d , ++a=%d\n", aa, b, c);
「国民諸君、同志諸君、最後まで戦い続ける諸君に敬意を表する。すでに戦況は……私はベルリンと運命をともに…… しかしナチスは不滅である……たとえ米ソがいったんは勝つように見えようとも……。 そうなのだ、それは砂の上の勝利だ。彼らは世界の真の支配者ではないからだ。彼らの背後で操る者……ユダヤ……イスラエル…… 世界的なユダヤ国際資本……。米ソは……おそらく1990年代ごろまで、対立と妥協を繰り返しつつ、世界を運営しようとする。 しかし所詮……ヨーロッパと日本、東アジア、イスラム諸国、インド……いずれ世界は米ソの手に負えなくなる。 そのときユダヤはみずから……に乗り出す。 哀れなアラブ4カ国……最終戦争。東西が激突するだろう。 ユダヤはそれに勝って全世界……なぜならそれが彼らの『旧約聖書』の約束だからだ。 黙っておけば必ずそうなる。しかし、私がそうはさせない。そのための手を、私は死ぬ前に打っておく。 それが最後の秘儀である。それによって人類はわれわれを受け継ぐことになる。 しかも見よ、そのあと、わがナチスの栄光、ラストバタリオン……。 それが真のハーケンクロイツの日だ。カギ十字の日だ。そのときラストバタリオンが現われる。ユダヤを倒す。 世界を支配する。永遠に……そしてナチスは甦る。真のヒトラーの時代が来る。必ずだ。 甦ったナチスの軍団とその強力な同盟がそのとき来る。宇宙からの復讐のカタストロフィとともに来るぞ。それからが真の究極だ。 真の終わりで真の始まり、真の淘汰、天国の地獄、21世紀のその年に、人類の驚くべき究極の姿……ではそれを明かそう。諸君、それは人類……」
>>212 while(sum > 0);
これ怖い。
>>224 マイナスの値を入力したら下手をすると永久ループに飛び込む
環境依存だけど
しかし-1を10で割ってマイナスになる環境はさすがにないだろ
永久ループになったときってコンソールターミナルどうしたらいいんですか?
>>227 OSによって全然違うからOSマニュアルみたら
Windows DOS窓ならCtrl+C
Windows GUIならタスクマネージャから落とす
>>220 関数の区切りの , (コンマ)はたしかに注意すべきということでそのとおりなのですが、
順次演算子のコンマ(というのもあります。)については、これは副作用完了点(sequence point) です。
順次演算子の左で発生した副作用(++ とか -- とか)は、順次演算子のところで確定します。
副作用完了点となるのは、&&, ||, ?:(三項演算子/条件式)と順次演算子のコンマです。
そういうものもあるということで、一応コメントしておきます。
>>227 そのターミナルで Ctrl-C するか、別のターミナルから
ps や top で プロセス ID を探して、kill -9 <PID> する。
229 : ◆QZaw55cn4c :2011/02/09(水) 00:02:56
>>220 関数の区切りの , (コンマ)はたしかに注意すべきということでそのとおりなのですが、
順次演算子のコンマ(というのもあります。)については、これは副作用完了点(sequence point) です。
順次演算子の左で発生した副作用(++ とか -- とか)は、順次演算子のところで確定します。
副作用完了点となるのは、&&, ||, ?:(三項演算子/条件式)と順次演算子のコンマです。
そういうものもあるということで、一応コメントしておきます。
◆QZaw55cn4cはやっぱり精神状態おかしいよこいつ 何か一言いちゃもんを付けなければ気が済まないアホだなこいつは
そんなに知識をひけらかしたいか と言いたいところだけど、その「知識」も常識レベルだからそんなドヤ顔で書かれても寒いだけ
おまいら本当に優しいんだなあ 単に暇なだけじゃこうまで突っ込みは出来ないよな
突っ込みは◆QZaw55cn4cの独断場
>>236 だって、大基地に群がるキチガイだからな
◆QZaw55cn4c糞すぎワロタ
わかりやすすぎる ◆QZaw55cn4cは頭に血が上ると見境が付かなくなる馬鹿ですね
◆QZaw55cn4cは自分のスレで引きこもって金儲けでもしてろよ
こいつ近い将来犯罪を犯しそうなタイプだよな おーこわ
基地外がいっぱい
衒学的ってことだな
正規分布にのっとった乱数がほしい
◆QZaw55cn4cは糞
void mem_cpy(void *dst,void *src,u_int size){ char *p1 = *dst; char *p2 = *src; while(size--){ *p1** = *p2++; } } 基本的なソースはこういう形として, こういう形で,エンディアンの問題を回避する方法ってある?
252 :
デフォルトの名無しさん :2011/02/09(水) 01:05:16
>>250 エンディアンの問題って、何を「問題」だと思ってるの?
それによって解答は変わる。
sscanf( str,"<hogehoge='111'><hogehoge=\"unkunk\">%I64</hogehoge><return type=\"string\">%s</return></result>",&did, buf); bufに何も入らないんだけど何が悪いんだ?
254 :
デフォルトの名無しさん :2011/02/09(水) 01:08:27
bufの型
255 :
253 :2011/02/09(水) 01:09:56
char buf[256];
>>253 sscanf のリターンコードを見るんだ
strの内容も見たいよ
>>253 その%sだと空白文字(' ', '\n', '\t')を含む文字列は取り込めないが大丈夫か?
逆に、</return>の前に空白がないとくっついてしまうが大丈夫か?
"%s"の代わりに"%255[^<]"にでもした方がいいかも試練。
261 :
デフォルトの名無しさん :2011/02/09(水) 01:20:20
263 :
250 :2011/02/09(水) 01:23:05
組み込みをするときに エンディアンの違うコンピュータで動作させることになって, エンディアンの違いによってコピー結果が変わる事象です
<hogehoge='111'><hogehoge=\"unkunk\">4503599628031276</hogehoge><return type="string">@Unk_dayo</return></result> ↑こんな感じのがポインタでくるから sscanf( str,"<hogehoge='111'><hogehoge=\"unkunk\">%I64</hogehoge><return type=\"string\">%s</return></result>",&did, buf); で@Unk_dayoをとりたいんです
面倒臭がらないで自分でstrtokで解析しろよ
やだ
じゃあ正規表現ライブラリでもリンクしろ
C#ならregex付いてるのになあ C使いは大変だな
明後日の方向で優越感に浸ってる人が居るw Cを知らないと大変だな
>>263 エスパーすると
#ifdef BO_UNIX
# define READ2LE ...
# define READ4LE ...
# define READ8LE ...
# define READ2BE ...
...
#elif defined BO_XINU
# define READ4LE ...
...
#endif
などのマクロを介せばいい
C言語プログラミングの初歩の初歩という本を読んでるんですが P.74でscanfは変数に値を読み込むときは変数名の先頭に&をつけると書いてあるんですが P.191をみるとscanf("%s",input);なんてかいてあるんですが &を書く場合と書かない場合について教えてください。
274 :
273 :2011/02/09(水) 02:40:20
ソースはこれです↓ //入力された英数字文字列に対して、小文字があればそれを大文字に置き換えるプログラム //ただし、英数字は1行最大80文字まで入力でき、日本語や空白等は入力しないものとする。 #include<stdio.h> int main() { char c[81]; int loop; for(loop=0;loop<81;loop++) //c[81]を\0で初期化 { c[loop] = '\0'; } printf("文字列を入力してください(英数字で)\n"); scanf("%s",c); //ここでscanf("%s",&c);と書いても同じになるよ for(loop=0;loop<81;loop++) { if(c[loop]>=97 && c[loop]<=122) { c[loop] -= 32 ; } } printf("小文字を大文字に変換しました\n%s\n",c); }
>>274 c
&c
&c[0]
&0[c]
どれも等価だから。
char c[81]; としたとき、cは&c[0]と同じ意味。 &cはちょっと特殊で、生み出されたポインタの型がちがうんだけど、 それを活用する場面はあまりないし、上記のいずれかを使えばいいよ。 &をつけるかどうかについては、引数にポインタを渡さなければならないという観点でみると 整理できるかも。
あら、レスついてた。スレ汚しスマソ。
あぁ、確かにそうだな スマン
280 :
デフォルトの名無しさん :2011/02/09(水) 03:13:32
一生懸命全部WCHARにして while (fgetws(data, 1000, fp) != NULL){したらここで1回はブレークポイントで止まるのですがその後落ちます。次の行では止まりません。(WCHAR data 次の行swscanf_s(data,L"%s ; %s ; %s ; %d ; %d ; %d",&変数〜 どうしてでしょうか?
開いてるファイルはunicodeで記述されてるの?
&cをインクリメントすると81バイト進むんですか?
283 :
273 :2011/02/09(水) 03:24:48
ポインタとか型とかを知らないと理解できないってことか…
>>283 関数に変数の値を変えてもらうには変数のアドレスを渡さないといけないんだよ。
ただ配列の場合はchar a[16]とするとaと書くだけで配列の先頭のアドレスを意味するからscanfでもaだけで良い。
>>283 しばらくポインタ型の変数を宣言する予定がないなら、
配列は配列名を渡す(&をつけない)
配列ではない場合は&をつける
でいいよ。
289 :
デフォルトの名無しさん :2011/02/09(水) 03:35:30
>>281 ありがとうございます
.txtのファイルを読み込んでいるので、読み込むテキストをメモ帳でunicodeで保存しなおしましたが
やはり同じ所で落ちます。
>>289 dataの宣言は?
というか再現できるコードもらったほうが早いかも。
>>282 インクリメントされるのでテストコードを書いてみる勉強をどうぞ
落ちた理由を調べるのが手っ取り早いと思うけどね。 なに、coreファイルが作成されていない?
293 :
デフォルトの名無しさん :2011/02/09(水) 03:52:03
>>290 すみません。
ファイルの読み込み時に
if ( (fp = fopen(readfile, "r") )== NULL){終了i}から
if ( _wfopen_s(&fp,readfile, L"r")== NULL){終了}に変えた時に!=としなかったので正常終了ならNULLが帰るため正常終了していないのに終了していませんでした
ありがとうございました
_wfopen_sの直後に終了してるならfgetwsの行にこないと思うが、まぁいいか。
296 :
273 :2011/02/09(水) 04:05:08
>>286-287 理解できそうでできない…
関数はint main(){}のことで
変数ってのはc[81]で
配列の先頭のアドレスってchar a[16]の場合はa[0]のことでしょ
その理論で行くとscanf("%s",a[0])でscanf("%s",a)と同じってことだよね
でもa[0]に文字列って入らないと思う…入るのって1文字だけ?
プログラミングは始めたばっかだけどポインタ型の変数ってやつは近いうちにやってみたいな
> 関数はint main(){}のことで
mainも関数だし、scanfも関数。もちろんprintfも。
>>286 が言った「関数」はここではscanfを指している。
> 配列の先頭のアドレスってchar a[16]の場合はa[0]のことでしょ
a[0]は配列の先頭要素であって、先頭のアドレスじゃないので
> その理論で行くとscanf("%s",a[0])でscanf("%s",a)と同じってことだよね
上記の間違いにより、これも間違い。
>>277 で書いたとおり、scanf("%s",&a[0])とscanf("%s",a)は同じ。
> でもa[0]に文字列って入らないと思う…入るのって1文字だけ?
そのとおり。
>>296 >その理論で行くとscanf("%s",a[0])でscanf("%s",a)と同じってことだよね
違うよ。
aと等価なのは&a[0]。
299 :
273 :2011/02/09(水) 04:40:34
>>297-298 なるほど、そういうのを全部関数っていうのか
要素とアドレスを間違えていたせいで変なことを言ってしまいました
この本340ページもあるのにアドレスなんて言葉ひとことも書いてない…
>>277 の文が理解できるまでネットで調べて頑張ってみます。
>>296 可能ならば、一番最初にポインタ(メモリアドレスの概念)を学んだ方がいい
実用的なCプログラムは、ほぼ全てがアドレスありきだから
頭の中でメモリをイメージ出来さえすればポインタなんて難しくもなんともなくなるよ
301 :
デフォルトの名無しさん :2011/02/09(水) 06:44:34
do while のwhileにはwhile(); ;がつくのに 普通のwhile(){}には while();とならない。 何故ですか?
>>301 while (条件) ; // 実行文がない。
この場合はセミコロンが必要です。同じことは
do {} while (条件) ;
とも書けます。やっぱりセミコロンが必要ですね。問題ありません。
303 :
デフォルトの名無しさん :2011/02/09(水) 08:59:36
do ; while (1);
ぷっぷー
ぷっぷー
直ったのか
直ったのか
直ってない
直ってない
直ってない
313 :
273 :2011/02/09(水) 20:20:45
結局メモリとアドレスについてよくわからないんだけど int a; a=5; とやるとメモリとかアドレスとかはどういう動きをするの? ポインタはアドレスを記憶するための変数って認識で合ってると思うけど。
メモリもアドレスも別に動きはしない
変数のサイズ分の領域を確保するだけ
>>313 こういう単純な問いが実は一番答えにくかったりする
ポインタについて聞かれた日にゃどう説明していいやら
318 :
デフォルトの名無しさん :2011/02/09(水) 20:57:45
メモリは運動しないが 信号に応答するという意味で「動く」ぞ
319 :
273 :2011/02/09(水) 21:06:16
int a;でまず0x65fdf4というアドレスが確保されて メモリの0x65fdf4というアドレスにaという変数が記憶される。 ここまでは合ってると思うんだけど a=5;ではさらに0x~~1というアドレスが確保されて メモリの0x~~1というアドレスに5という値が記憶されて 0x65fdf4と0x~~1が同じものをさしてますよという情報を 記憶するアドレス0x~~2があるってことですか
さらに確保されない 変数 a のアドレスが 0x65fdf4 なら、 a=5 はアドレス 0x65fdf4 のメモリ領域に数値 5 を記憶するだけ
321 :
273 :2011/02/09(水) 21:31:15
0x65fdf4のメモリ領域っていうのは変数 a 1文字だけじゃなく 変数aが5だという情報を記憶できるってことか
「a」とかいう変数の名前は、コンパイル後のプログラム(exeファイル)からは消え去っているので、それを覚える領域は要らない 値を記憶する領域だけが必要で、それが変数のアドレス
>>321 0x65fdf4は俺の家の住所
変数 aは俺の家名前
変数aが5は俺の家にいる奴
324 :
デフォルトの名無しさん :2011/02/09(水) 21:42:25
家に名前をつけるのって喩えになってるの?そんな奴、存在するの?
この辺はどうやって説明したら良いか難しいよね
326 :
デフォルトの名無しさん :2011/02/09(水) 21:57:22
コンピューターはメモリーを持っている。 メモリーはアドレスと値を対応付けて記憶できるようになっていて、アドレスを指定して対応する値を読み出すことが出来るようになっている。 アドレスは例えば0x0065fdf4(16進数)のような32ビットの数字で表されるが、人間には分かりにくいのでaとかという別名をつける。 ただ、aと書いてしまうと今度はコンピュータが理解できなくなるので、 人間がaに5を記憶させるつもりで、a = 5; と書いたもの(ソースコード)を、0x0065fdf4に5を記憶しろとコンピュータへの命令(機械語)に変換するのがコンパイラ。
>>321 自分でお絵かきすればすぐに理解できるからやってごらん。
メモリは1列に並んだ箱の集まり。
それぞれの箱に番号を振ると箱1や箱2となるが、その番号部分がアドレス。
そして箱の中には「数値」だけしか入れられない。
その箱の中の「数値」を機械に「どう解釈させるか?」を決めるのが型。
int aなら、箱の中身は符号付整数と機械は解釈する。
int *aなら、箱の中身は他の箱番号を指している、つまりint型へのポインタと機械は解釈する。
int a、int *aと箱の関係が分からない。
いい加減みんな釣られすぎw
ゲソ!
何でも釣りとか言われたら機能しないぞw
>>328 つまり、int aもint *aも、実際はどこかの箱(アドレス)を指しているにすぎない。
箱自体なのか中身なのか、その違いを識別させるのが型ってこと。
334 :
273 :2011/02/09(水) 22:24:46
>>326-327 なるほど、理解できたと思う
>>327 の最後の行と
>>326 の内容から察するに、
int a; int *p; p=&a; について int型変数aのアドレスが0x0065fdf4、int型ポインタpのアドレスが0x0065fdf8だとすると、
人間がpに0x0065fdf4を記憶させるつもりでp=&aと書いたものを、
コンパイラは0x0065fdf8に0x0065fdf4を記憶しろとコンピュータへ命令するってことだ
つまりメモリは0x0065fdf8にpと0x0065fdf4が同じだという情報を記憶するのではなく
0x0065fdf8というアドレスには0x0065fdf4という値が入った状態になるってことだな
Exactly!
箱wwwwwwwwwwwwwwwwwww
箱?
>>334 で
>>273 の話に戻ると、誰かに箱の中身を変えさせたいときに
中身だけを渡してもしょうがないわけで、箱自体を渡す必要がある。
だからscanf()では、「箱の中身を指している変数」ではそのアドレスを渡さなきゃならない。
配列の場合はもともと先頭のアドレスを指しているので、&は不要、というわけ。
339 :
273 :2011/02/09(水) 22:50:54
>>338 そういうことか
アドレスとメモリを理解したらわかるようになりました
みんなありがとう
マルチすんなボケ
許せんな
許せんよ
あわよくばそっちのスレで答えを得ようとしたんだな
うむ
348 :
デフォルトの名無しさん :2011/02/10(木) 01:18:17
基本挿入法のソートのステップについてお聞きしたいのですが 3 2 4 5 1を小さいものから並べる時に i j p ←コレ 3 2 4 5 1 ってなんですか?
エスパーさん出番です
>>324 俺の家、エグゼクティブあばら家って名前がついてるよ
351 :
デフォルトの名無しさん :2011/02/10(木) 01:55:56
マジレスでお願いしますが、C言語使ってると有利になる仕事ありませんか? どうせ技術だけもっていて知恵がないと何をやっても中途半端に終わるという 意見は無しでお願いします。 今は学生なんでアルバイトでもいいです、何か有利なことありますか? ゲーム作って売るとかどうでしょう?
え?
>>348 それ基本挿入法じゃないんじゃない?
挿入ソートなら変数は 3 つも要らないと思われ。
i : 調査対象となっている位置
j : 比較対象となっている位置
で十分かと。
>>351 Cを使う仕事でないとだめ?
Cをちゃんと理解できてるかどうかはその人の素養をみるためのいいバロメーターになるけれど。
だめ
C言語を使う仕事で、C言語を使えることは何も有利に働かないよ。
『C だけ知っている学生がお金を稼ぐ道はあるか』という命題で良いのかな Java だけ、JavaScript だけ、PHP だけ、Perl だけ、Objective-C だけ とかならありそうなんだけど、C かあ・・・
一番難しいCかあ
Cしかできないプログラマはいても Cすら出来ないプログラマはいないよ こんぴゅーたーの基礎だからね
そんなことないよ。 コンピュータの基礎でもないし、Cができないプログラマもいるよ。
362 :
デフォルトの名無しさん :2011/02/10(木) 02:26:57
>>354 ありがとうございます。何とかやってみます
>>361 新卒や派遣スクリプタさんは別として
畑違いの部署の若い子やおじちゃんでも
プログラマでCすら出来ない人は出会った事ないなー
間引きされてるのかな
一時期はVBしかできないプログラマが相当数量産されたが、彼らは今どうしているのだろうか
365 :
351 :2011/02/10(木) 02:52:53
気軽に出来るCでできるアルバイトないですか? 仕事だとハードル高くなるので、"能力主義"という 一般論で収まるんで。
Cだけとかアホだろ。 組み込みでもやってろ
>>364 VBで作られたプログラムがあまりにも多かったために保守要員が残されているらしい
らしいね
755 :まちがって名前消しちゃいました。:2011/02/10(木) 00:02:34 ID:???
線形リスト構造の使い方について質問です。
http://codepad.org/jwQMESxZ 1. mallocの使い方はあっていますか。
2. 解放はちゃんとできていますか。
どうぞよろしくお願いいたします。
756 : ◆QZaw55cn4c :2011/02/10(木) 04:46:12 ID:???
>>755 free()忘れはないですし、いいと思います。
念入りに書くのだったら、malloc() の返り値が NULL かどうかチェックして、
NULL, すなわち malloc() が失敗したときには、たとえばエラーメッセージを表示して中断する、とかするのもいいかもしれません。
757 :まちがって名前消しちゃいました。:2011/02/10(木) 09:49:04 ID:???
>>755 です。
mallocのエラー処理はあった方がいいんですね。
線形リスト構造はややこしくてこんがらがっていましたが
ちょっと自信つきました。添削アドバイスありがとうございました^^
位相空間と距離空間の違いを教えてください
俺みたいな高脳ならともかく、このスレの低脳どもに答えられるわけがないだろうw
位相空間とは位置の相をあらわす空間 距離空間とは距離の空間をあわらす
わかりやすく例えると位相空間はラーメン 距離空間はハンバーガーと思えばいい
377 :
デフォルトの名無しさん :2011/02/10(木) 17:30:01
井include<stdio.h> int main(void) { int i,t; scanf("%d\n",t) printf("%d\n",i+t); return 0; } エラーがでます・・・何故でしょうか?
頭悪い奴が頑張っても 面白くないよ
379 :
デフォルトの名無しさん :2011/02/10(木) 17:32:52
あ、すいません・・ scanf("%d\n",t); にしたら解決しました。エラー出ませんでした。 質問取り下げます。
面白いねー
面白い面白い
>>379 次の質問が出てくるものだと待ってたのに裏切られた気分
限られた範囲の数値をランダムに並べ替えたいのですが、 有効なアルゴリズムみたいなのありますか? int num[10] = {1, 2, 3 … 8, 9, 10}を 3 9 5 8…みたいに並べ替えたいです。
>>377 #include<stdio.h>
int main(void)
{
int i=0,t;
scanf("%d\n",&t);
printf("%d\n",i+t);
return 0;
}
一応こんな感じにね。
System.out.println("C言語");
1["OOO"]='A';
有吉は「イヤイヤイヤ、俺は別にそんなにキライじゃないからね。怖いなぁって思いつつ」とフォローしているが、確かにメディアでの発言のすべてを本気にされ、問題視して大袈裟に騒ぎたてられては、芸人たちはたまったものでもないだろう。 たとえば品川だけでなく、NON STYLEの井上裕介も「ナルシスト」「ウザい」などと叩かれがちだが、あくまでもネタであり、キャラだ。 品川の「ウザさ」も、山里の「キモさ」も、有吉の「毒舌」も、すべてを真剣に受け止めて批判に終始するような視聴者は、お笑いを楽しめていると言えないのではないだろうか。
お笑いを楽しめていると言えないのではないだろうか(キリッ
お笑い
>>383 for(i = 10; i > 1; ) {
j = rand() % i--;
tmp = num[j];
num[j] = num[i];
num[i] = tmp;
}
一周だけだと微妙な気がする
>>392 for(i = 0; i < 10; i++) {
j = rand() % (i + 1);
num[i] = num[j];
num[j] = i + 1;
}
ってやれば空の配列に数字を入れながらランダムにできる
>>393 確率計算すると1周でいいんじゃなかったか
>>394 ダウト
for(i = 0; i < 10; i++) {
/* ランダムに配置されている配列の最後に値を追加 */
num[i] = i + 1;
/* 最後の要素以外は全てランダムになっているので最後の要素のみ入れ替える */
j = rand() % (i + 1);
tmp = num[j];
num[j] = num[i];
num[i] = tmp;
}
いずれにしても糞コード
>>396 コードの意味が理解できなアホは引っ込んでろw
小手先にこだわる人っているよね 学生さんかな
無駄な入れ替えを省略することは小手先とは言わないw
401 :
デフォルトの名無しさん :2011/02/11(金) 03:29:55
>>398 >ってやれば空の配列に数字を入れながらランダムにできる
人に噛み付く前に、よく考えな
明らかに数字を入れる前にnum[j]を使ってる
404 :
デフォルトの名無しさん :2011/02/11(金) 03:38:33
>>403 >>394 は初期化前の変数を読み出している
で、その場合、C言語での動作は未定義
小手先に走る前に、基本をもっと身に着けろ
初期化されてない変数を使うのは未定義じゃねーだろw
406 :
デフォルトの名無しさん :2011/02/11(金) 03:44:05
未初期化変数の値は不定であって、未定義ではない
>>394 の場合
j < iの場合ならすでに内容があるし、i==jの場合なら不定の変数を代入してるが同じ場所だし、
直後にi+1を代入してるので問題ない
でも糞コードだよね
914 :デフォルトの名無しさん:2011/02/06(日) 17:00:59 そんな話は聞いたことないけどしたいならそうすればいいんじゃない? それより、 i * 10 + 9 + ( i == 9 ) は意図したとおりに動かないね。 920 :デフォルトの名無しさん:2011/02/06(日) 17:34:11 問題ないように思える人はもう一度Cの規格票をよく読むんだ^^ 923 :デフォルトの名無しさん:2011/02/06(日) 17:38:32 …というのも不親切なので答えをいうと i == 9の部分はtrueの時1になることを想定しているけど (90-100の階級幅だけ11あるので、ここだけ特別処理にしている) Cの規格上はtrueは0以外の整数であればなんでもいいことになっているので 実装にっては「90-100」のような表示にならない可能性があるってことなのよ^^; ここは printf( "%d-%d %d人\n", i * 10, i == 9 ? 100 : i * 10 + 9, cv[ i ] ); のようにすべきでした。 924 :デフォルトの名無しさん:2011/02/06(日) 17:41:11 って、答えを書いているうちに即レスするんじゃない貴様ら^^ ちなみに、この「trueは0以外の整数」というのは Cではけっこう重要な落とし穴なので初学者は覚えておくといいよ^^ 929 :デフォルトの名無しさん:2011/02/06(日) 17:44:46 あれ?そうだっけ?すまんすまん^^ワラ 935 :デフォルトの名無しさん:2011/02/06(日) 17:49:37 こうして人は成長していくのであった^^;
>>408 不定じゃなくて未定義だ
たまたま動いても、コンパイルエラーでも、実行時エラーでも構わない。
つーか、暫く2ch見てなかったけど、
テンプレから初心者用FAQはなくなったのか?
>>408 値は不定だけど未初期化領域へのアクセスは未定義
>>394 はこう書けばいいのかな
for(i = 0; i < 10; i++) {
j = rand() % (i + 1);
if(j != i) num[i] = num[j];
num[j] = i + 1;
}
最初にnum[10] = {0};ってやったほうが楽そうだ
>>415 条件分岐で処理速度が落ちるから小手先テクの意味ないじゃん
カキコしているランダムに並べ替えは、 限られた範囲の数値が10から20や、-20から-10や、-10から10 てかみたいに、intで表せる任意の(連続)範囲ならどこでもOKなの?
>>415 やるなら、こんな感じ。
for(i = 0; i < 10; i++) {
j = rand() % (i + 1);
num[i] = 0;
num[i] = num[j];
num[j] = i + 1;
}
でも、可読性が悪いため、他の人に
「num[i] = 0;」を消されるかも知れないので、お勧めできない。
>>414 おい、おまえ、限られた範囲の数値をランダムに並べ替えやってみそ
394 :デフォルトの名無しさん:2011/02/11(金) 00:48:34
>>392 for(i = 0; i < 10; i++) {
j = rand() % (i + 1);
num[i] = num[j];
num[j] = i + 1;
}
ってやれば空の配列に数字を入れながらランダムにできる
空の配列って書いてあるからもしかしたら、0で初期化してあるのかもしれないw
J.2 Undefined behavior 1 The behavior is undefined in the following circumstances: The value of an object with automatic storage duration is used while it is indeterminate (6.2.4, 6.7.8, 6.8).
行列演算ならまだしもただの並び替えなら、俺は読みやすい方を採用するかな
>>410 比較演算の結果は0か1になることが保障されてるって突っ込みが抜けてるから
「i * 10 + 9 + ( i == 9 ) は意図したとおりに動かないね。」が正しいように見えるわな
ここで再登場して、変数を宣言と同時に0で初期化しないアホがいるなんてwとか言ってくれたら面白いのに
>>425 そこは923で丁寧に説明されてるからおk
num[]はグローバル変数ですよ。 初期化する必要なんてありません。
Javaの質問ですけどいいですか?
◆QZaw55cn4cはこれだけ住人に嫌われているのにのうのうと平気な顔で 出てこれる神経が分からん アスペも混ざってるな
小型数列なら配置用の配列を使うかな static int sr[3][10]={{9,2,5,…}.{4,9,7,…},{0,5,4,…}}; #define F(a,b,c) (b[0]=a[0], b[1]=a[1],…,c=&sr[rand()%3],a[0]=b[*c[0]],…, a[9]=b[*c[9]],a) int num[10]={0,1,…},tmp[10],(*mxr)[10]; F(num,tmp,mxr);
「鬼は捕らえた娘をイヤーぶちぬいたんあぁ」ってなんですか
436 :
デフォルトの名無しさん :2011/02/11(金) 13:15:10
C/C++の配列について質問。 JavaやC#ではlengthでそれ自身の長さを取れますが、 C/C++では、配列それ自身のサイズを取得することは不可能なのですか? ある関数の引数として配列を渡す際に、それ自身のサイズの数値も渡さないとダメなのが不便に感じているのですが。
配列のサイズはsizeofで取得できるよ 取得できないのは、それが配列じゃないからだよ
>>436 C++なら
template <class T, int N>
int func(T (&)[N]) { return N; }
って取得できる
でも引数で配列受け取った側の関数からじゃ分からないよねw Cww
文字列なら問題ない
ターミネーター使えってことだな
std::vectorやstd::stringならsize()やlength()というメソッド(プロパティ)があるけどな だからC++では生の配列はあまり使わない 不便過ぎる
使う人間側が便利ってことは、どっかに余計な処理入ってるってことでもある そこらへんの兼ね合いでCは低レベルってだけの話だろ
そういう事 C++でも生配列は使うけど、クリティカルな部分やわざわざSTL使うほど 大げさじゃない部分だな 逆に言うと両方使えるというのは強み
長さゼロの配列含む構造体つこ struct X{size_t sz;char p[0]}; /* gcc or c99 ext */
447 :
デフォルトの名無しさん :2011/02/11(金) 14:12:04
パスワードを復号化時に省略したいのですが、正常に戻りません。 パスワードをファイルに格納して、復号化の時に取り出すという 方法を考えているのですが、何がいけないのでしょうか? printf("モード指定:e,d\n"); scanf("%c",&c); if(c=='e'){ if(argv[3]==NULL){ printf("パスワードが設定されてません\n"); exit(1); } code(argv[3]); init(c3); dd.dd[0]=c3[0]; dd.dd[1]=c3[1]; de.dd[0]=c3[2]; de.dd[1]=c3[3]; fwrite(c3,1,32,fp); } if(c=='d'){ fread(c3,1,32,fq); dd.dd[0]=c3[0]; dd.dd[1]=c3[1]; de.dd[0]=c3[2]; de.dd[1]=c3[3]; }
省略しすぎて何がなんだか
449 :
デフォルトの名無しさん :2011/02/11(金) 14:54:55
書き込む前にファイルの先頭に32バイトのパスワードを 書きこんでから本体の暗号化データを書き込み。復号化時には 32バイトを先に読み込んで、暗号化データ部を復元するという 処理をしたいです。 ちなみにパスワードはargv[3]で取り込みます。
450 :
デフォルトの名無しさん :2011/02/11(金) 15:08:36 BE:1608991946-2BP(0)
#include <stdio.h> int main(void) { int no; printf("整数を入力してください。:"); scanf("%a",&no); printf("貴方は%aと入力しました。/n",no); return(0); } これを実行すると、 整数を入力してください。: 貴方は0x1.010af0p-1019と入力しました。 何を入れても、この0x1.010af0p-1019しか表示されません。どこが間違っていますか?
scanf("%d",&no);
>>451 ・コンパイルできるコードを掲載してください。
453 :
デフォルトの名無しさん :2011/02/11(金) 16:23:16
169 : ◆QZaw55cn4c :2011/02/11(金) 15:47:08
>>168 おはようございます。よく眠れましたか?
つまり
>>452 =◆QZaw55cn4cってことかw
%aを全て%dにしやがれクソッタレ
>>455 「理路整然」という言葉を知らなそうな実に野蛮な顔つきをしてるな
ディスプレイに映るのはお前ら自身の顔だって、何度言ったらわかるんだよw
イケメンなjかおをしてるな
>>459 そんなマジレス期待してないんだけど…
まさか本気で煽り合いしてるとでも思ったのか
マジレスに見えるとは書いてない
1 : ◆QZaw55cn4c :2011/01/17(月) 23:17:42
あなたが解けないC言語/C++言語の問題を ◆QZaw55cn4c が有償で片付けるスレッドです。
・モリタポ(
http://moritapo.jp/ )により決済を行います。
・投稿にあたっては、トリップを使ってください。トリップがなければ決済の確認ができません。
◆QZaw55cn4c は、トリップ以外の質問者の情報を知ることができませんので安心です。
【回答掲示までの流れ】
1. 質問者がトリップを使って問題を投稿する。
2. ◆QZaw55cn4c が回答できる問題があれば、◆QZaw55cn4c が受諾レスを行う。
受諾レスには決済日を基点とした回答猶予期間が示される。
3. 質問者が ◆QZaw55cn4c にモリタポを進呈する。
進呈の際には、問題を投稿したときに表示されたトリップ(パスワードではない)をメッセージに記入する。
4. モリタポの進呈を確認したら、◆QZaw55cn4c は回答を掲示する。(
http://codepad.org/, http://ideone.com を使用します。)
【料金】
・一問あたり 500円(5000モリタポ・手数料込み)です。
・一つのレスに記述できる内容を一問とします。アップローダーを使用してもかまいません。
・◆QZaw55cn4c が受諾レスを行い、受諾レスに回答期日を示したにも関わらず、回答期日に間に合わなかった場合には、モリタポを返還します。
それ以外の場合にはモリタポの返還はいたしません。
【修正】
・◆QZaw55cn4c が一度示した回答に対しては、明白な錯誤があった場合を除いては、◆QZaw55cn4c は修正は基本的に行いません。
ただし、最大限ご希望に応じたいと考えていますので、修正希望があれば、トリップを使用して投稿してください。
修正希望回数は、最大3回を目安としてください。3回を超えて修正を希望する場合は、新規に質問を投稿しなおしてください。
いずれも場合も、修正に応じることを保障するものではありません。
◆QZaw55cn4cワロタw
遺伝的アルゴリズムのスレってある?
◆QZaw55cn4cファビョりまくりワロス
#define ROMC const far rom char 略 sprintf(gLcdBuf, (ROMC *)"CN%-2dCN%-2dCN%-2dCN%-2d", 1, 2, 3, 4); この場合、(ROMC *)はどのような意味があるのでしょうか?
(const far rom char *)
ふむ、どこのスレだ?
モリタポ儲けw
早く◆QZaw55cn4cが氏にますように
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cはなんでこんなに粘着されてるの? 燃料に対する粘着度のコスパが素晴らしいんだけど
日本語読めないから
しつこく粘着してるのは一人 嫌ってるのは数人 どうでもいいと思ってるのがほとんど
この板もID出るようにしたらいいのにね
トリなしで問題誤読や的外れな書き込みしてるのがバレて◆QZaw55cn4cも困るだろw
また◆QZaw55cn4cか
粘着一人じゃないけどね
嫌ってるの数人って、ほとんどの間違いだろw もしかして◆QZaw55cn4c本人かw
>>488 も粘着してる人間で、自分の他にも粘着してるのがいるのを把握してるってこと?
>>490 俺が氏ねって書く前には誰かが似たようなこと既に書いてることが多い
俺も気が向いたら叩くことにしてるよ 2chで金儲けを企むような奴だし
◆QZaw55cn4cは気違いへの対応が下手すぎなんだよ 軽く流したり逃げ道を作ってやればいいのに 一々対応して論破するから荒らし化する
◆QZaw55cn4cが現れたぞw キチガイ◆QZaw55cn4cが論破ってw
Dijkrtraの読み方が分かりません C言語で教えてください
496=◆QZaw55cn4c 話題替えですか?
モリタポ =◆QZaw55cn4c 他のパターンない?
は?
パターンに言及して余裕を装うパターン
なさそうだね
パターン少ないとか言い出すパターンも見慣れたなぁ
だいちが くさっていく・・・!
>>502 > 【レス抽出】
> 対象スレ:C言語なら俺に聞け(入門編)Part 78
> キーワード:少ない
> 検索方法:マルチワード(OR)
>
> 502 名前:デフォルトの名無しさん[sage] 投稿日:2011/02/12(土) 05:16:11
> パターン少ないとか言い出すパターンも見慣れたなぁ
>
>
>
> 抽出レス数:1
被害妄想じゃない?
誰もパターン少ないなんて言って無いよ?
必死ワロタw
506 :
デフォルトの名無しさん :2011/02/12(土) 05:34:07
あなたが解けないC言語/C++言語の問題を ◆QZaw55cn4c が有償で片付けるスレッドです。
・モリタポ(
http://moritapo.jp/ )により決済を行います。
・投稿にあたっては、トリップを使ってください。トリップがなければ決済の確認ができません。
◆QZaw55cn4c は、トリップ以外の質問者の情報を知ることができませんので安心です。
【回答掲示までの流れ】
1. 質問者がトリップを使って問題を投稿する。
2. ◆QZaw55cn4c が回答できる問題があれば、◆QZaw55cn4c が受諾レスを行う。
受諾レスには決済日を基点とした回答猶予期間が示される。
3. 質問者が ◆QZaw55cn4c にモリタポを進呈する。
進呈の際には、問題を投稿したときに表示されたトリップ(パスワードではない)をメッセージに記入する。
4. モリタポの進呈を確認したら、◆QZaw55cn4c は回答を掲示する。(
http://codepad.org/, http://ideone.com を使用します。)
【料金】
・一問あたり 500円(5000モリタポ・手数料込み)です。
・一つのレスに記述できる内容を一問とします。アップローダーを使用してもかまいません。
・◆QZaw55cn4c が受諾レスを行い、受諾レスに回答期日を示したにも関わらず、回答期日に間に合わなかった場合には、モリタポを返還します。
それ以外の場合にはモリタポの返還はいたしません。
【修正】
・◆QZaw55cn4c が一度示した回答に対しては、明白な錯誤があった場合を除いては、◆QZaw55cn4c は修正は基本的に行いません。
ただし、最大限ご希望に応じたいと考えていますので、修正希望があれば、トリップを使用して投稿してください。
修正希望回数は、最大3回を目安としてください。3回を超えて修正を希望する場合は、新規に質問を投稿しなおしてください。
いずれも場合も、修正に応じることを保障するものではありません。
他に無い人に対し 他にない? と聞いたら 少ないと言ってるのと同義だ そういうところが◆QZaw55cn4cのダメなところ
パターン少ないと言っておけば優位に立てるとか思ってそう
そうだね 思ってそうだね
あぁ、今度はそういうパターンか
次はどんなパターンかな?
あずにゃんペロペロ^^
よくもまぁこんな長々と自演を。 それにつられて数人書いてるっぽいけど、何でほっとかないかね。
はいはい自演自演
◆QZaw55cn4cおじちゃんは どーしてあたらしいパソコン買えないにょ?w
仕事してないから
518 :
デフォルトの名無しさん :2011/02/12(土) 09:59:50
ポインタに任意のアドレスを代入することは出来ますか? &a,&bといった感じではなくて、16進数でそのままアドレスを指定したいです。
>>518 char *a = (char *)0x12345678;
ただし、こんなところで質問してるやつには勧めない。
520 :
デフォルトの名無しさん :2011/02/12(土) 10:05:03
◆QZaw55cn4cおじちゃんは パソコンいっぱい知ってるのにどーして就職できないの?w
522 :
デフォルトの名無しさん :2011/02/12(土) 10:36:16
int/longなどの数値(10進数)からポインターを生成するにはどうすればいいですか? 色々試してみましたが無理でした。。 10進数 -> 16進数 -> ? 16進数の文字列を表すchar配列は作れましたが、そのchar配列をポインターに変換する方法が分かりません。 それとも、他にもっと簡単な方法があるのでしょうか。 アドバイスよろしくお願いいたします。 char *a = (char *)hensuNoAtai;
何でこんなに雰囲気悪いんだ?
>>522 ポインターの内部表現は unsigned int だからキャストさえ適切であれば代入は可能
char* a;
int b = 123;
a = (char*)b;
warning は出るかも知れんし、こんな事に何の意味が有るかも解らんが
527 :
デフォルトの名無しさん :2011/02/12(土) 12:06:24
>>525 ECMAみたいなハッキリした仕様書がないので、内部仕様を調べるのが難しいですね。。
ためになりました。ありがとうございました。
>>525 >ポインターの内部表現は unsigned int だから
しれっとウソ書くなよ。
>>525 さんは 64BitのWindows7を知らないようだ
LLP64
LP64
IP64
ILP64
SILP64
この5つの区別位付くようにしとけ
>>525
>>522 //10進
char dec_str[] = "12345678";
int dec_value;
sscanf(dec_str, "%d", &dec_value);
hogehoge* ptr1 = (hogehoge*)dec_value;
//16進
char hex_str[] = "abcd1234";
int hex_value;
sscanf(hex_str, "%x", &hex_value);
hogehoge* ptr2 = (hogehoge*)hex_value;
どうやら
>>525 は◆QZaw55cn4cだったようですねw
顔を真っ赤にして>
>>531 を書き込んだと思われる
こうして人は成長していくのであった^^;
ほんとドカタらしいスレで楽しいな ドカタのスレはこうでなければだめだな
>>528-530 64ビットマシンが出てから曖昧になってるけど、それ以前はCPUの語長 = intのサイズ = ポインタのサイズだったよ
本来ならば64ビットマシンの int は8Byte にすべきなんだけど、さすがにオーバースペックって事で4Byteのままにしたんでしょ
その事により
>>530 が書いた様に多種の規格が生まれたって話じゃないの?
俺は
>>531 じゃないよ
538 :
デフォルトの名無しさん :2011/02/12(土) 17:24:16
つ size_t
>>537 最近の子は far とか near なんて知らないんだろうな...。
まあ、知らないのは別にいいんだが、「それ以前はCPUの語長 = intのサイズ =
ポインタのサイズ」なんてドヤ顔で書いてるのみるとかわいそうになるな。
>>537 そうすることが都合いいからintのサイズとポインタのサイズがおなじだっただけで、
規格上はなんの関係もないんじゃ?
C言語でない話はスレ違い
542 :
デフォルトの名無しさん :2011/02/12(土) 17:43:37
>>530 525じゃないけど、IP64ってCの規格上でNGじゃん
覚える必要あるの?
必要ないと思うなら覚えなければいい。
>>543 じゃぁ、覚えない
ってか、LLP64とLP64以外は必要になった時に覚えれば十分じゃね?
そうだね。
>>539 その時代からコード書いてるけど、そんな時代の仇花の話は忘れた
>>540 うん、規格なんて話じゃなくて、一般論とか原則的って話だ
こんなに叩かれるなら符号無し整数って書けば良かったな
規格に基づかない、一般論や原則に何の意味があるのやら。 こういうバカが現場を混乱させるんだよ。
↑バカ
>>548 まぁ待て落ち着け
元々
>>522 自体が規格外の処理なのに、規格に合わせた回答に意味があるのか?
>>548 まぁ待て落ち着け
元々
>>522 自体が規格外の処理なのに、規格に合わせた回答に意味があるのか?
整数型からポインタ型への変換が規格外の処理だなんて言う奴は、この世に存在しないんだよ!
結論が出たな
C++のreinterpret_castに相当するキャストはCでは禁則で未定義動作になる 覚えておくように
また規格に基づかないデタラメか
ドライバとか作ったことないんだろうか?
整数型からポインタ型への変換は、規格で明確に許されている。
>>559 処理系依存だから、スレ違いであることは間違いない
561 :
デフォルトの名無しさん :2011/02/12(土) 19:49:06
友達がC言語の構造とポインタと配列の分野1日でマスターしたんだが これって異常?
562 :
560 :2011/02/12(土) 19:52:43
ごめん、嘘ついた 0からポインタ型への変換は明確に保証されてるから、 100%スレ違いと言う訳ではなかったな…
>>561 世間一般的には、C言語の構造体とポインタと配列っていうのが、関門になっているんですねえ。ふむ。
>>561 マスターしてることと、したつもりになってることじゃ別だからな…
それでも、アセンブラやってれば、1日でポインタと配列位は普通じゃなイカ
まぁ、C言語の構造ってのは良く分からんが
>>112 そりゃ頭が悪いからに決まっているでしょう。なにを自明なことを。
ひどい自演を見た
メ欄に言い訳仕込んでも、顔真っ赤にしてこのスレで暴れてる事実は否定できないのに いいから自分のクソスレに引っ込んでろよw
必死な奴ほど「燃料投下」とか言っちゃう
◆QZaw55cn4cを見てて沢村を思い出した 今となっては良い思い出だ
>>561 ,
>>564 マスターのレベルにもよるよね。
普通に配列使うだけなら、他の言語知ってりゃできて当然。
char *x;
char y
char a[] = "012345678";
*x = a - 1;
y = x[2];
で、x に何が入るかまでわかってるなら結構すごいと思う。
氏ねって書く方が明らかに楽な仕事だよねw ◆QZaw55cn4cは何を勘違いしてるんだかw
572 :当然未定義な。:2011/02/12(土) 20:27:07
>>561 ,
>>564 マスターのレベルにもよるよね。
普通に配列使うだけなら、他の言語知ってりゃできて当然。
char *x;
char y
char a[] = "012345678";
*x = a - 1;
y = x[2];
で、x に何が入るかまでわかってるなら結構すごいと思う。
>>572 xとyとaがメモリ上で連続してる保障はあるのか?
>>575 そんな保証はないし、そんな保障はいらないだろ。
◆QZaw55cn4cは日本語がちゃんと読めるようになるために、小学校からやり直せw
>>575 名前欄の逃げ口上を読んでからレスしろよなクズが
>>578 だから関係ないって言ってるだろ、ボケ。
# そっちで引っかかるやつがいるとは思わなんだ。(w
書き込めねぇ…
話の流れ、よく分かってないけど、 > *x = a - 1; 大体の処理系はここで落ちるんじゃないか?
>>572 二行目のtypoは誰も突っ込まないのか?
>>583 さすがだな。
俺は普通に見落としてた。
人に問題出せるレベルでもないのに、無理するから
>>572 みたいなことになる
587 :
デフォルトの名無しさん :2011/02/12(土) 20:53:45
最近の自分ならやりそうな大ボケで あきれるほど自分に返ってくる心境で言葉を飲んでいた
>>574 わかんないです。
てか、未初期化変数 x で *x = a - 1; なんて怖くて出来ません…
>>560 >>562 整数型をポインタ型に変換出来ることは規格で明確にされているよ。
すべての処理系で保証される。処理系に依存しない。
>>583 すまん typo だらけだった。
char *x;
char y;
char a[] = "012345678";
x = a - 1;
y = x[2];
のつもりだった。
>>588 だから、それを分かるならすごいって言ってるんだろ。人類の限界を越えている。
>>572 *x = a - 1;
出題としてこれあっているの?
>>591 >x = a - 1;
配列のアドレスより前のアドレスって保証されてないでしょ
配列のアドレス-1は保証されてなかったっけ? 比較に使っていいだけ?
>>589 規格をもう一回読んでみな
整数型からポインタ型へのキャストは処理系定義として規定されているから
どう処理しても、処理系依存の処理にしかならない
>>591 ソースもtypoなら質問もtypoじゃね?
「x に何が入るか」→「y に何が入るか」
>>596 An integer may be converted to any pointer type.
>>591 x に何が入るかは処理系依存じゃね? y なら '1' だけど
>>572 はもう少し落ち着いてから書くべきだったな
間違いだらけすぎる
おまけに知っていても役に立たない未定義動作だし
,〜〜〜〜〜〜 、 |\ ( 釣れたよ〜・・・) | \ `〜〜〜v〜〜〜´ し \ ゙'゙":"''"''':'';;':,':;.:.,., ヽ○ノ ~~~~~|~~~~~~~ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ト>゚++< ノ) まさにこれじゃないかw
>>595 加算は保証されている
減算は下記であれば保証される
p + n - m ( ただし n => m )
まぁ、要するに確保したメモリ以外にまたがらなければOK
>>596 そもそも、処理系依存がすれ違いだって、どこに定義されてるんだ?
>>595 アドレスとして有効(比較可能)なのは「配列要素を指すアドレスと配列の最後の要素を一つ越えたところを指すアドレス」
実際にアクセスしていいのは「配列要素を指すアドレス」
それ以外は未定義
>>597 すまん、その通りだ。
>>599 みたいなやつを釣るつもりだったけど、酔ってると駄目だな。(w
>>598 今JIS規格(日本語)しか読めんから分からんが、その直後に
規定されている場合を除いて、結果は処理系定義って書いてないか?
>>603 知らん
少なくとも、8年位前はスレ違いだった
最新の定義があれば教えてくれ
>>604 じゃぁ
char str[] = "abc", *p;
for(p = str; *p; p++);
while(p-- >= str) putchar(*p);
みたいに文字列逆順に表示するのは、ループの最後の比較は未定義ってこと?
while(--p >= str)だった
610 :
599 :2011/02/12(土) 21:22:29
>>607 いや俺みたいな奴が意味するところが判らないんだが....
x に y のアドレスが代入される処理系もそうでない処理系も有るし、y には '1' が代入される筈なので
間違ったことを書いたつもりは無いんだがね
>>608 手元にJISしかないけど、そういうこと
--pでpがstrの一つ前を指した時点でオーバフローが生じてもいい
>>611 オーバーフローが生じるケースってどんなだ?
>>606 > 規定されている場合を除いて、結果は処理系定義って書いてないか?
結果は処理系定義であっても、整数型からポインタ型への変換は認められている。
アドレス直指定なんて組み込みでは極一般的なんだけどな。
>>614 だから処理系依存の処理にしかならんって話なんだが?
>>616 ちがう。規格外か?って話。だから規格外じゃない。
処理系依存かどうかは関係ない。
>>610 引っ込みつかなくなってるとか釣りじゃないなら、規格書読み直せ。
x への代入からして未定義動作だ。
>>608 先頭より前のオブジェクトアドレスはダメだが
最後尾の次のオブジェクトアドレス(ぱすとえんど)はおk
覚えとくように
>>617 最初から処理系依存の話をしているのだが?
560 :デフォルトの名無しさん:2011/02/12(土) 19:47:09
>>559 処理系依存だから、スレ違いであることは間違いない
562 :560:2011/02/12(土) 19:52:43
ごめん、嘘ついた
0からポインタ型への変換は明確に保証されてるから、
100%スレ違いと言う訳ではなかったな…
589 :デフォルトの名無しさん:2011/02/12(土) 20:58:17
>>560 >>562 整数型をポインタ型に変換出来ることは規格で明確にされているよ。
すべての処理系で保証される。処理系に依存しない。
>>620 > 整数型をポインタ型に変換出来ることは規格で明確にされているよ。
> すべての処理系で保証される。処理系に依存しない。
結果は処理系依存だが、整数型からポインタ型への変換ができることは処理系に依存しない。
>>614 §6.3.2.2.
5 An integer may be converted to any pointer type. Except as previously specified, the
result is implementation-defined, might not be correctly aligned, might not point to an
entity of the referenced type, and might be a trap representation.56)
56)56) The mapping functions for converting a pointer to an integer or an integer to a pointer are intended to
be consistent with the addressing structure of the execution environment.
該当する部分JIS X3014
任意のポインタ型は整数型に型変換できる。これまでに規定されている場合を除き、
結果は処理系定義とする。結果が整数型で表現できなければ、その動作は未定義とする。
結果は何らかの整数型の値の範囲に含まれているとは限らない。
56)ポインタを整数型に変換する関数、又は整数をポインタに変換する関数は、実行環境に
おけるアドレス構造に関して一貫した動作をするように作られている。
--------------------------------------------------------------------
これのうち「結果が整数型で表現できなければ、その動作は未定義とする。」がこの場合は大事
LLP64LP64が未定義となるので注意
整数型をポインタ型に変換 int n = -1; char* p = n; この場合pが指すのどこ?
>>622 英語と日本語が対応していない件について
625 :
デフォルトの名無しさん :2011/02/12(土) 21:45:47
>>615 厳密にはアセンブラでやるべきことだが
「それだけのために?アホか」というのが主流
よーするに、自分がわかんねーことに上から目線でいたい奴に
逃げ道をあげる企画(≠規格)なんで、その趣旨を理解すべきってことさ
>>622 惜しい
今問題なのは、整数をポインタ型に変換する話なので、その前の項目
>>627 >>628 悪い
じゃこれか
整数は任意のポインタ型に型変換できる。これまで規定されている場合を除き、
結果は処理系定義とし、正しく境界調整されていないかもしれず、被参照型の
実体を指していないかもしれず、トラップ表現であるかもしれない(56)。
この「被参照型の実体を指していないかもしれず」という部分が気になるな
>>629 そう。
だから、
「整数は任意のポインタ型に型変換できる。」
以上。
結論が出たな。
>>613 さすがにJIS読めと言いたい
オーバフローはただの例で、それが生じなくても未定義であることには変わりない
>>623 「結果は処理系定義」なので処理系のマニュアルを読みましょう。
>>630 違うって。
foo() + bar() が規格として正しくても、結果は不定であることが変わらんように
結果が処理系定義にしかならんのだから、処理系依存にしかならんって話なんだって。
だから結果が処理系依存であることは誰も否定していないだろ。
>>636 おれも
>「整数は任意のポインタ型に型変換できる。」
は否定しとらんよ
最初から、処理系依存だって話をしてるだけだ
彡川川川三三三ミ〜 川|川/ \|〜 プゥ〜ン ‖|‖ ◎---◎|〜 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 川川‖ 3 ヽ〜 < ショリケーイゾン ショリケーイゾン 川川 ∴)д(∴)〜 \_______________ 川川 〜 /〜 カタカタカタ 川川‖ 〜 /‖ _____ 川川川川___/‖ | | ̄ ̄\ \ / \__| | | ̄ ̄| / \___ | | |__| | \ |つ |__|__/ / /  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕 | | ̄
>>632 JIS関係ないだろ、君がオーバーフローなんて的外れな例を出したから突っ込んだだけだ
ざっと流し読みすると 560が恥ずかしい人って事だな
>>642 つまり、
>>560 ってことか?
であるならば、
=========================
559 名前:デフォルトの名無しさん [sage] 投稿日:2011/02/12(土) 19:33:56
整数型からポインタ型への変換は、規格で明確に許されている。
560 名前:デフォルトの名無しさん [sage] 投稿日:2011/02/12(土) 19:47:09
>>559 処理系依存だから、スレ違いであることは間違いない
=========================
>>559 は「整数型からポインタ型への変換は、規格で明確に許されている。」と変換が規格上許されるかどうかの話をしている。
処理系依存の話なんてしてるのは
>>560 だけだ。
>>641 なんで例ごときにそんなつっかかってるのか分からないけど
君の気分を損ねたのなら謝るよ
俺の言い方も悪かった
ただ、重要なのはそこじゃなくて未定義になるってけとが言いたかっただけなんだ
そこは分かって欲しい
>>644 違う
処理系依存の話を始めたんじゃなくて、スレ違いじゃねーの話を始めたの
>>641 なんで未定義動作からオーバフローを除外するの?
それ相応の理由があるなら説明した方がいいよ
>>646 (1)整数型からポインタ型への変換ができることは、処理系依存ではない。
(2)処理系依存がスレ違いであるという根拠がない。
以上の2点で、
>>560 は筋違い。
>>647 ォィ、書いた本人が引こうとしてるっぽいから
俺が飲み込んだことをアッサリとwww
611 :デフォルトの名無しさん:2011/02/12(土) 21:22:38
>>608 手元にJISしかないけど、そういうこと
--pでpがstrの一つ前を指した時点でオーバフローが生じてもいい
613 :デフォルトの名無しさん:2011/02/12(土) 21:26:58
>>611 オーバーフローが生じるケースってどんなだ?
俺には613の方が的外れに見える
613はコイツなんだよ↓ 914 :デフォルトの名無しさん:2011/02/06(日) 17:00:59 そんな話は聞いたことないけどしたいならそうすればいいんじゃない? それより、 i * 10 + 9 + ( i == 9 ) は意図したとおりに動かないね。 920 :デフォルトの名無しさん:2011/02/06(日) 17:34:11 問題ないように思える人はもう一度Cの規格票をよく読むんだ^^ 923 :デフォルトの名無しさん:2011/02/06(日) 17:38:32 …というのも不親切なので答えをいうと i == 9の部分はtrueの時1になることを想定しているけど (90-100の階級幅だけ11あるので、ここだけ特別処理にしている) Cの規格上はtrueは0以外の整数であればなんでもいいことになっているので 実装にっては「90-100」のような表示にならない可能性があるってことなのよ^^; ここは printf( "%d-%d %d人\n", i * 10, i == 9 ? 100 : i * 10 + 9, cv[ i ] ); のようにすべきでした。 924 :デフォルトの名無しさん:2011/02/06(日) 17:41:11 って、答えを書いているうちに即レスするんじゃない貴様ら^^ ちなみに、この「trueは0以外の整数」というのは Cではけっこう重要な落とし穴なので初学者は覚えておくといいよ^^ 929 :デフォルトの名無しさん:2011/02/06(日) 17:44:46 あれ?そうだっけ?すまんすまん^^ワラ 935 :デフォルトの名無しさん:2011/02/06(日) 17:49:37 こうして人は成長していくのであった^^;
ここには恥ずかしい人しかいないから
>>648 もう最後にしようぜ
(1)整数型からポインタ型への変換ができることは、処理系依存ではない。
>>596 で答えてる
(2)処理系依存がスレ違いであるという根拠がない。
>>606 で書いたとおり、最新の定義があるなら教えてくれ
641 :デフォルトの名無しさん:2011/02/12(土) 22:07:24
>>632 JIS関係ないだろ、君がオーバーフローなんて的外れな例を出したから突っ込んだだけだ
6.5.6 加減演算子
ポインタオペランド及びその結果の両方が同じ配列オブジェクトの要素,又は配列オブジェクトの最後の要素を
一つ越えたところを指している場合,演算によって,オーバフローを生じさせてはならない。
それ以外の場合,動作は未定義とする。
それほど的外れにも見えないけど
> (2)処理系依存がスレ違いであるという根拠がない。
>
>>606 で書いたとおり、最新の定義があるなら教えてくれ
君がスレ違いだと主張しているんだから
君が証明してやらねばいかんよw
>>653 > (1)整数型からポインタ型への変換ができることは、処理系依存ではない。
>
>>596 で答えてる
答えているが、無関係。
整数型からポインタ型への変換ができることは、処理系依存ではない。
処理系依存なのは、変換の結果だ。
> (2)処理系依存がスレ違いであるという根拠がない。
>
>>606 で書いたとおり、最新の定義があるなら教えてくれ
>>1 が最新の定義。
そこに処理系依存がスレ違いであるという定義はない。
これ以上はこちらで
http://hibari.2ch.net/test/read.cgi/tech/1295273862/ あなたが解けないC言語/C++言語の問題を ◆QZaw55cn4c が有償で片付けるスレッドです。
・モリタポ(
http://moritapo.jp/ )により決済を行います。
・投稿にあたっては、トリップを使ってください。トリップがなければ決済の確認ができません。
◆QZaw55cn4c は、トリップ以外の質問者の情報を知ることができませんので安心です。
【回答掲示までの流れ】
1. 質問者がトリップを使って問題を投稿する。
2. ◆QZaw55cn4c が回答できる問題があれば、◆QZaw55cn4c が受諾レスを行う。
受諾レスには決済日を基点とした回答猶予期間が示される。
3. 質問者が ◆QZaw55cn4c にモリタポを進呈する。
進呈の際には、問題を投稿したときに表示されたトリップ(パスワードではない)をメッセージに記入する。
4. モリタポの進呈を確認したら、◆QZaw55cn4c は回答を掲示する。(
http://codepad.org/, http://ideone.com を使用します。)
【料金】
・一問あたり 500円(5000モリタポ・手数料込み)です。
・一つのレスに記述できる内容を一問とします。アップローダーを使用してもかまいません。
・◆QZaw55cn4c が受諾レスを行い、受諾レスに回答期日を示したにも関わらず、回答期日に間に合わなかった場合には、モリタポを返還します。
それ以外の場合にはモリタポの返還はいたしません。
【修正】
・◆QZaw55cn4c が一度示した回答に対しては、明白な錯誤があった場合を除いては、◆QZaw55cn4c は修正は基本的に行いません。
ただし、最大限ご希望に応じたいと考えていますので、修正希望があれば、トリップを使用して投稿してください。
修正希望回数は、最大3回を目安としてください。3回を超えて修正を希望する場合は、新規に質問を投稿しなおしてください。
いずれも場合も、修正に応じることを保障するものではありません。
>>645 そもそも未定義になるって話もよく判らんのよ
char a[] = "abc";
char* x;
x = a;
x--;
x の値は a のアドレス -1 でそのアドレスに何が有るかは不定だ、これは処理系依存ではない
では未定義という言葉は何処に適用するんだ?
>>658 x--; とすると鼻から悪魔が出るか、はたまたHDDがフォーマットされるかもしれないよって意味じゃね?
>>658 アクセスしたときの動作だよ
馬鹿じゃないの
ムバラク政権が崩壊したのもこのx--;のせいだしな。
>>654 その 6.5.6 って意味がよく判らん記述だなぁ、解りやすく解説できる?
そもオーバーフローとは加算・乗算によって桁あふれを起こす場合だろ
減算によって引き起こされるのはアンダーフローって呼ぶのでは?
規格ってのは、○○したら△△となる(ようにコンパイラ作れ)、という決め事なんだよ。 未定義ってのは、あなた(コンパイラ作る人)の自由にしてね、ってこと。
>>655 >君がスレ違いだと主張しているんだから
>君が証明してやらねばいかんよw
知らんよ。
間違ってれば、間違ってると指摘すれば良いだけ
それが2chだろ?
>>656 >答えているが、無関係。
>整数型からポインタ型への変換ができることは、処理系依存ではない。
>処理系依存なのは、変換の結果だ。
どうぞ結果を伴わない処理でもやっててください
>
>>1 が最新の定義。
>そこに処理系依存がスレ違いであるという定義はない。
それは知らんかったよ
FAQも消えてるし、甘くなったのかな?
>>663 抜き出しだから分かりにくいのはごめん
JISの該当箇所を読んでも分からないのか?
あとアンダーフローについての認識は間違ってるよ
>>664 >あなた(コンパイラ作る人)の自由にしてね、ってこと。
それ、処理系定義
未定義は、それ以前の問題で考慮する必要すらないこと
不定 未定義 処理系定義 文字通りそのままの意味だよね
>>666 JISが何処に有るかも知らんので該当箇所を読んだことも無いよ、何処に有るか教えて
確かにアンダーフローの認識は誤ってたな、減算によって生じるのはなんて呼ぶのが正しいんだろ
663 :デフォルトの名無しさん:2011/02/12(土) 22:47:08
>>654 その 6.5.6 って意味がよく判らん記述だなぁ、解りやすく解説できる?
そもオーバーフローとは加算・乗算によって桁あふれを起こす場合だろ
減算によって引き起こされるのはアンダーフローって呼ぶのでは?
釣りだろwwww
>>661 アクセスした時に未定義になるのは、初期化してない領域にアクセスした場合、
>>658 の未定義は、確保してない領域のポインタを作った場合の話
>>669 >JISが何処に有るかも知らんので該当箇所を読んだことも無いよ、何処に有るか教えて
JISのページ行けばPDFで見れるよ
>確かにアンダーフローの認識は誤ってたな、減算によって生じるのはなんて呼ぶのが正しいんだろ
減算でもオーバーフロー
673 :
デフォルトの名無しさん :2011/02/12(土) 23:03:04
> 減算によって引き起こされるのはアンダーフローって呼ぶのでは? おそらくキャリーとボローのことがいいたいんだろうけど ・・・痛いなw
>>667 違うよ。
処理系定義は「実装はあなたが決めてね」だが、何らかの結果を伴う必要がある「決め事」である。
未定義は考慮してもしなくてもいい、という意味。
>>672 見られないな、chrome ではダメなんだろうか、まぁどうでも良い話だから手間かけてまで読もうとも思わんけどね
>>675 どうでも良い割には食いつきよかったね^^
つ ポインタオペランド(a[i])及びその結果(a+i)の両方が 同じ配列オブジェクトの要素(0=<i,i<(sizeof(a)/sizeof(a[0]))), 又は配列オブジェクトの最後の要素を 一つ越えたところを指している場合, (i==(sizeof(a)/sizeof(a[0]))演算によって, オーバフローを生じさせてはならない。 それ以外の場合,動作は未定義とする。
>>675 そうか残念、でもCFAQでこんなの見つけた
6.17:
ほらこのトリック。下のように書けば
int realarray[10]; int *array = &realarray[-1];
"array"は1始まりの配列のように使える。
A:
このテクニックは魅力的だが(NUMERICAL RECIPES IN Cの古い版でも使われている)、
厳密にいえばC言語の規格に従っていない。ポインター演算は、一度に割り振られた領域と、
仮想的な"終端"を越えた1つめの要素にだけ定義されていて、それ以外では未定義である。
このことは、たとえポインターを参照に使っていないとしてもあてはまる。
上のコードはオフセットを引いた時に、とんでもないアドレスを作り出して(たぶんアドレスが
"ぐるっと回って"メモリセグメントの先頭を越えて他のセグメントと重なるからだろう)うまくいかなくなる可能性がある。
References:
K&R2 Sec. 5.3 p. 100, Sec. 5.4 pp. 102-3, Sec. A7.7 pp. 205-6; ANSI Sec. 3.3.6; ISO Sec. 6.3.6; Rationale Sec. 3.2.2.3.
>>678 ポインタオペランドはaじゃない?
前後見てないから何だけど
結局オーバーフローとアンダーフローの違いも分からない奴がJIS規格も知らずに 「減算で未定義動作の例がオーバーフローとか的外れワロスw」って騒いでただけかw
意外と◆QZaw55cn4cだったりしてなw
アクセスするならまだしも「演算も未定義動作を引き起こす」って割と罠だから いらんこと考えすぎるのも分かる気がする
なんかいろいろいわれているが
>>611 の、
> --pでpがstrの一つ前を指した時点で
これがすでにありえないコードなんだけど。
>>612 で終わらなかったことに驚いている。
ループを抜けた時点で配列の先頭よりも前を指すポインタが生まれることがアウトなんだよ
>>680 ここではaって見た方が意味が分かりやすいけど、全体を通してみると
ポインタオペランドって言葉が、ポインタに対する演算結果と言う意味で
使われているので多分a[i]で合ってると思う…
あとは、他の人にまかせた
ノ
>>684 >これがすでにありえないコードなんだけど。
なんで?
>>609 も未定義になるんでしょ?
ループ抜けるときのpの値はstr-1なんだし
>>685 「ループを抜けた時点で」←ダウト
配列の先頭よりも前を指すポインタと比較して、正しい結果が得られる保証がないため、ループを抜けないかもしれない
>>689 「配列の先頭よりも前を指すポインタと比較して」←ダウト
未定義の処理なので、比較すらされないかもしれない
え、配列の先頭よりも前を指すポインタを生んだ時点で未定義なの? それは知らなかった。 初期化されていないポインタとか大丈夫なの
>>691 >初期化されていないポインタとか大丈夫なの
不定値になるから大丈夫
そもそも「意図的な演算によって」不正なアドレスを生成するのと初期化で勝手に値が入るのは別
>>691 >え、配列の先頭よりも前を指すポインタを生んだ時点で未定義なの?
違います。
演算結果が、配列の先頭よりも前を指すポインタを生んだ時点で未定義になります
初期化されてないポインタは演算されてないので、無問題です。
>>692 不正なアドレスをポインタに代入することが未定義だってことなんだよね?
ついに規格を読む日が来たか
695 :
694 :2011/02/12(土) 23:56:31
>>693 そのポインタに対して、何かしらのポインタ演算を行った場合に未定義になるのかと思ってた
696 :
692 :2011/02/12(土) 23:59:56
>>694 >>693 が書いてる通りで、「演算によって有効でないアドレスを生成する」と未定義の動作を引き起こす
んで、配列に関する「有効なアドレス」は「要素を指すアドレス」か「最後の要素を一つ越えたところ」
初期化はそもそも関係ない話
>>695 初期化されてない変数等に対するアクセスと、ごっちゃになってない?
規格上のポインタに対する操作は厳しい
698 :
694 :2011/02/13(日) 00:03:59
>>696 つまり、C FAQの
> ポインター演算は、一度に割り振られた領域と、
> 仮想的な"終端"を越えた1つめの要素にだけ定義されていて、それ以外では未定義である。
> このことは、たとえポインターを参照に使っていないとしてもあてはまる。
> 上のコードはオフセットを引いた時に、とんでもないアドレスを作り出して
というくだりは、
オフセットを引いたときは未定義であるため、とんでもないアドレスを作り出す可能性があり
ということ?
>>697 そこはごっちゃになってないです
>>698 >オフセットを引いたときは未定義であるため、
未定義なのでアドレスを作り終える前に鼻から悪魔が出てくるかも知れない
>>698 JIS規格読んで。上の方にある引用でもいいから。未定義と書いてあるから未定義なの。
CFAQは一例としてそういうアーキテクチャを挙げているだけ。
っていうか未定義の原因をあれこれ考えるのは考えすぎだよ。
701 :
694 :2011/02/13(日) 00:15:17
>>700 ごめん、今引用されてることに気づかず、ちょうど6.5.6に到達してたところでした。
未定義になることを理解しました。
未定義の原因なんてものは考えてないです。なにをすることが未定義なのかを考えてました。
スレ汚しすみませんでしたー
>>701 あぁ、純粋に普通の質問だったのか
きつく言い過ぎたよ、ごめんな
ポインタ演算で配列の境界を越えてアクセスするような未定義の動作を行った場合、 それに続く比較の効果は未定義とする 比較されるかどうかもわからないのにわざわざ書いてるんだなぁ。
704 :
デフォルトの名無しさん :2011/02/13(日) 01:15:43
HSPの方がいいよね
testを一度閉じてまた開いてみたら?
自分の所では正常に実行出来たよ。環境は Mac OS X snow leopard。
環境はWindows 7です。 テキストの名前は「test」なのか、「test.txt」なのかどっちでしょうか?
test.txt だよ。プログラムに書いてある通り。
>>711 あ、ありがとうございます!
できました^^
とある配列のインデックス
スーパーハカーさまにはかないませんなw
715 :
デフォルトの名無しさん :2011/02/13(日) 13:25:41 BE:938579227-2BP(0)
この流れで質問出していいのかな?;; include <stdio.h> int main(void) { int vx, vy; printf("国語\n数学\n英語"); printf("整数vx:"); scanf("%d",&vx); printf("整数vy:"); scanf("%d",&vy); printf("vx + vy = %d/n", vx + vy); printf("vx - vy = %d/n", vx - vy); printf("vx * vy = %d/n", vx * vy); printf("vx / vy = %d/n", vx / vy); printf("vx %% vy = %d/n", vx % vy); return (0); } 読み込んだ整数の和 差 積 商 剰余を表示するプログラムのはずなのですが、 うまく動作しません。 指摘お願いします。
716 :
デフォルトの名無しさん :2011/02/13(日) 13:27:05 BE:2346446257-2BP(0)
include <stdio.h> int main(void) { int vx, vy; printf("国語\n数学\n英語"); printf("整数vx:"); scanf("%d",&vx); printf("整数vy:"); scanf("%d",&vy); printf("vx + vy = %d/n", vx + vy); printf("vx - vy = %d/n", vx - vy); printf("vx * vy = %d/n", vx * vy); printf("vx / vy = %d/n", vx / vy); printf("vx %% vy = %d/n", vx % vy); return (0); } 読み込んだ整数の和 差 積 商 剰余を表示するプログラムがうまく動作しません 指摘お願いします。
× /n ○ \n
719 :
デフォルトの名無しさん :2011/02/13(日) 14:09:55 BE:2011239656-2BP(0)
include <stdio.h> int main(void) { int vx, vy; printf("整数vx:"); scanf("%d",&vx); printf("整数vy:"); scanf("%d",&vy); printf("vx + vy = %d\n", vx + vy); printf("vx - vy = %d\n", vx - vy); printf("vx * vy = %d\n", vx * vy); printf("vx / vy = %d\n", vx / vy); printf("vx %% vy = %d\n", vx % vy); return (0); } これでもうまくいきません;
うまくって何なの?
include <stdio.h> #include <stdio.h>
>>718 よう人格障害
事件を起こす前に精神科逝け
吐いたエラー載せない奴ってなんなの?
>燃料さらに投下言いい放題 言いい放題って日本語じゃねーだろw
日本人じゃないから問題ない
>>718 超キチガイ、それがどうスレのC言語に関係はるんだ
関係ないことを書いてスレを荒らしまくろうってしてるんだろ
さすが超キチガイ、荒らすことしかしないんだな
すごくどうでもいい
728 :
デフォルトの名無しさん :2011/02/13(日) 17:28:56
あの質問なんですけど、C言語の習得スピードって人によって違うのでしょうか? 友達は、明快C言語入門編を一週間で読破、次の一週間で中級編も読破しました。 でその次の二週間でアルゴリズムなどの入門書を読破していました。 今ではコンソールプログラムの基礎的なものなら大抵書けるようになってます。 結局一ヶ月でC言語きわめてますよね?これって普通ですか?
>>728 >コンソールプログラムの基礎的なもの
これがおみくじプログラムとかテストの平均点を計算するプログラムとかなら
一ヶ月目としては普通じゃないの。
bc より高機能な電卓だったり、XML のパーサなんかだったらちょっと凄い。
>>728 #include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
char *str[] = {"普通","早い",遅い"}
1ヶ月なら独自コンパイラ開発するレベルだろ常考
普通より遅かったとして、一ヶ月目くらいで悲観的になる必要は全く無いよ。 プログラミングの分野なんて様々だから、半年もすれば得意分野・専門分野に別れて、 単純に能力の優劣を比較出来ないようになるもんだ。
>>718 なんでお前スレ荒らしてるの?w
そんなに悔しいの?w
自分が中学生で C 言語を勉強しようとした時は、 専門用語が読めなくて、一ヶ月を待たずして挫折したなあ 参考書高かったのに・・・
て言うか、なんで他人が一ヶ月で極めたとか気にしてんの?
#include<stdio.h> int dainyu(int); int main() { int a; dainyu(a); printf("aの値は%d",a); return 0; } int dainyu(int) { int a; scanf("a--%d",&a); return 0; } sample.c(12): error C2055: 型リストではなく、仮パラメーター リストが必要です。 ってエラーが出るんですけど関数からaの中身変えるにはどうすればいいんでしょうか?
>int dainyu(int) >{ >int a; >scanf("a--%d",&a); >return 0; >} ひどすぎるw
>>736 必要最低限の修正で
#include<stdio.h>
int dainyu(int *a);
int main()
{
int a;
dainyu(&a);
printf("aの値は%d",a);
return 0;
}
int dainyu(int *a)
{
scanf("a--%d",a);
return 0;
}
739 :
736 :2011/02/13(日) 18:48:34
修正しました。これでどうですか? #include<stdio.h> int dainyu(void); int main(void) { int a; a = dainyu(); printf("aの値は%d",a); return 0; } int dainyu() { int a; scanf("a--%d",&a); return return a; }
>>738 ありがとうございました、参考書読み直します
>>739 どなたですか?最後のreturnに式が必要ですとエラーが出ました
よく見たらreturnが重なってましたね、消したら正常に走りました。 勉強になります
すみません、ヒントでもいいので教えていただけると幸いです。 id = (year*100000) + (month*1000) + (day*10) + (jikan-8) 特定の入力した年月日と時間を関数化し、そのreturnとして、IDを発行することになりました。 時間は18時未満限定なので、これで通用するのですが、関数化する事になって復元化が必要になりました。 呼び出しも関数からなのですが、復元する方法、あるいは分けて表示する方法、 year 年 month 月 day 日 の jikan 時間としたいのですが、いい手はないでしょうか。 単純に割っていくことも考えましたが、いまいちでした。 参考になるような計算式や言葉などありましたら、よろしくお願いします。
10で割ったあまりとか1000で割ったあまりとか
ハッシュ関数、MD5 かける数値は素数がいいよ
>>742 年4桁
月2桁
日2桁
時2桁
分2桁
秒2桁
合計14桁なのでintに収まらない。
こういうのは構造体を使うとラク。
>>745 ああごめん、分秒までは要らないのか。
だったら大きい方から商と剰余を求めていけば出てくるよ。
747 :
◆QZaw55cn4c :2011/02/13(日) 23:02:07
ミスった struct hoge{ uint 64_t id; union{ uint16_t y; uint16_t m; uint16_t d; uint16_t h; }u; };
変数に '@@'とか、文字を二つ以上格納したいのですが、 切り捨てられました とか言って格納できません。 何かj方法はありませんか?
>>743-749 そんなに時間がたっていないのにありがとうございます。
構造体か、余りを使うかはこれから検証します。本当にありがとうございました。
>>744 復元したいんだからダメじゃね?更に復元以前にハッシュ値が衝突しない保障はある?
素数が良いとか言う前にハッシュ関数とかMD5が何者か勉強しなおせwww
>>750 もうチョットやりたい事とソースを晒したほうがいいと思う。
今のままだとあなたが期待していないことまで含めて100通りの答えが出てきそう…
減算で起こるのはアンダフローでしょ?
減算で起こるのかな。除算なら起こるけど。
じゃあ減算でオーバーフローが起こる場合を言ってみろよw
減算 オーバーフローでググれ
>>756 減算ではオーバーフローもアンダーフローも起きるが
デクリメントではオーバーフローなら起きるけどアンダーフローは起きない
ポインタ演算のオーバーフローだよ糞がw
つかさぁ、規格とかほざいてる奴実際実行して確かめてみろよ 配列の前だろうがアクセスしなければ無問題
それを「たまたま動いている」と表現するんだよ。 てか何で今になってまたこの話を?
>>763 だったらポインタを減算してオーバーフローする例を出してみろよ
的外れなこと言ってんじゃねーぞw
えw
配列の前のアドレスを指したからって変なことが起きる環境を作ることのほうが難しいけど、規格は規格だしなぁw
処理系の差異を吸収してくれるのが規格なのに なんでその規格を敵に回すんだろう? 学生時代の車輪作成のクセが抜けないのかな
アーキテクチャの壁の向こうをコンパイラで実現してるような環境で保護コードの適用漏れがあったりすれば破綻ありえるよな nearモードの無理からfarモデルでたまたま配列の先頭がセグメントゼロ番地とかさ
オーバーフローの例は的外れだったってことでおk?
int a[N], *p; p = (int*)((int)a - 1); これって未定義?
>>772 整数型からポインタ型への変換の話再来かw
1個前のアドレスなら p = (int*)((int)a - sizeof(int)); のほうがいいんじゃね?
>>770 お前まだそれ根にもってたのかw
オーバーフローにそこまで噛み付いてるのお前だけだぞw
>>777 初期化時を除いて、文字列を代入することはできない。
sprintf()かstrcpy()を使うべし。
インサーションしたい
イカ娘とはなんですか?
>>782 あなたそれ何処で知りました?
機密情報ですよ
みだりに口にすると射殺されますよ
面白いねーで勝った気になれるなら安いもんだ
俺がポインタだ
790 :
デフォルトの名無しさん :2011/02/14(月) 06:14:23
教えてエロい人 初期化してない変数へのアクセスってsizeofでも未定義なの? typedef xxx foo; foo *p; sizeof( *p ); /* pは初期化してない */
>>790 sizeof で変数にアクセスできるならそうだろうね。
789 :デフォルトの名無しさん:2011/02/14(月) 05:53:21
>>786 なんだか大変そうだね
頑張って
我慢できなくて釣られちゃうのはよくあることだ
なんだか大変そうだね 頑張って ↓
795 :
デフォルトの名無しさん :2011/02/14(月) 06:29:51
んじゃこれも未定義? #define MAX 10 int hoge[MAX]; int i; for( i=0; i<(sizeof(hoge)/sizeof(hoge[0])); i++) hoeg[i] = i;
sizeofはアクセスしないよ
798 :
◆QZaw55cn4c :2011/02/14(月) 06:37:42
>>790 sizeof のなかで *p をみているわけではないので、未定義ではなく、ちゃんと値が返ります。
#Administrator@KORP ~
$ cat noninit.01.c
#include <stdio.h>
typedef int foo;
int main() {
foo *p;
printf("sizeof(*p)=%d\n", sizeof(*p));
return 0;
}
/* end */
#Administrator@KORP ~
$ bcc32 noninit.01.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
noninit.01.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
#Administrator@KORP ~
$ ./a.exe
sizeof(*p)=4
#Administrator@KORP ~
頑張って釣られてるなぁ
801 :
◆QZaw55cn4c :2011/02/14(月) 06:42:49
>>799 今までの議論に例を出して異議を唱えているつもりです。
803 :
デフォルトの名無しさん :2011/02/14(月) 06:48:08
結局、何が正しいのか分からんのだが… sizeofは基本的にコンパイル時に評価されると思ってたから、 何をしても、アクセスしないだろうってタカを括ってたんだが 良く考えたらC99で可変サイズが可能になったよね? で、それに伴って、実行時に評価されることもあるよね? 実装を考えれば安全だとは思うのだが、規格上でも、本当に安全? int max=5; int hoge[max]; /* C99 */ for( i=0; i<(sizeof(hoge)/sizeof(hoge[0])); i++) hoeg[i] = i;
804 :
◆QZaw55cn4c :2011/02/14(月) 06:48:42
>>797 処理系依存とは変ですね。sizeof(*p) や sizeof(struct foo) がどうして処理系依存になるのでしょうか。
sizeof(int*) や sizeof(struct foo) の値自体は処理系依存としても、sizeof 演算子を適用して結果を出すという動作が行われることは間違いないと思いますが。
805 :
◆QZaw55cn4c :2011/02/14(月) 06:50:09
>>803 なるほど、
>C99で可変サイズが可能になった
ということですか。
>>797 >sizeof(struct foo);
>と同じで処理系依存
んなわけないだろ。
返る値の話じゃないよ。
>>803 後出しで可変長出して偉そうに吠えてんじゃねーよw
今度はsizeof君か
810 :
デフォルトの名無しさん :2011/02/14(月) 06:58:04
いや規格読めよ
812 :
◆QZaw55cn4c :2011/02/14(月) 07:00:54
813 :
デフォルトの名無しさん :2011/02/14(月) 07:01:59
◆QZaw55cn4cが今度はスレをあげて荒らし始めた
814 :
デフォルトの名無しさん :2011/02/14(月) 07:03:30
>>811 ネタを小出しに脹らませていけば、誰か調べてくれるかなと…
みんな興味あるでしょ?
816 :
デフォルトの名無しさん :2011/02/14(月) 07:06:36
817 :
デフォルトの名無しさん :2011/02/14(月) 07:08:32
>>816 まぁ、そう言わずに教えてくれ
手元に規格書なくて、JISも見れんのよ
>
>>803 が未定義だと、突き詰めて考えれば
>>790 も未定義なるから
ならねーよ馬鹿じゃねーの
そもそも
>>790 は可変長配列関係ないし、変数へのアクセスと型のサイズと静的動的がごっちゃになってるよ
これは低級な釣りだな
未初期化変数の話が可変長配列のサイズの話になってる時点で論外だわ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
822 :
デフォルトの名無しさん :2011/02/14(月) 07:22:00
>>8189 >>820 /* pは初期化してない */
ごめん、これtypo
/* *pは初期化してない */
が正しい
typedef xxx foo; foo *p;//未初期化のポ゚インタ sizeof(*p);//アクセスによって未定義動作を引き起こす
そして急に答えられなくなった◆QZaw55cn4c
827 :
デフォルトの名無しさん :2011/02/14(月) 07:38:31
一応
>>790 の質問で聞きたかったことを省略しないで正しく書いて置きまふ
typedef xxx foo; /* sizeof(型名) を使いたくない */
foo s, *p;
p = &s;
sizeof( *p ); /* *pは初期化してない */
>>823 あげられている例でいえば、どちらも未定義でも処理系依存でもないですよ。
#Administrator@KORP ~/2ch
$ cat noninit.02.c
#include <stdio.h>
int main() {
long long int *p;
printf("sizeof(p)=%d\n", sizeof(p));
printf("sizeof(*p)=%d\n", sizeof(*p));
return 0;
}
#Administrator@KORP ~/2ch
$ gcc -Wall noninit.02.c
#Administrator@KORP ~/2ch
$ ./a.exe
sizeof(p)=4
sizeof(*p)=8
#Administrator@KORP ~/2ch
$
829 :
デフォルトの名無しさん :2011/02/14(月) 07:42:19
はい釣れた
int a; sizeof(a);//aは初期化されてないため未定義動作
って思ったけど、使い道ないか
>>828 xxx次第でしょ
typedef struct hoge{...};
typedef struct hoge xxx;
とかだったら処理系依存だし。
何を処理系依存だと言ってるんだろう。
>>823 typedef xxx foo; /* sizeof(型名) を使いたくない */
foo s, *p;
p = &s;
1; /* 1は初期化してない */
2; /* 2は初期化してない */
3; /* 3は初期化してない */
4; /* 4は初期化してない */
836 :
デフォルトの名無しさん :2011/02/14(月) 16:10:19
スレ地かもだけど プログラムがどの様にメモリ上に展開され、動作するか、 ヒープやスタックがどのように確保されるか、レジスタについて などが解説されている本のオススメ教えてください。 Cの本にはプログラムがどう展開されるかとか載ってないし、 アセンブラの本にはヒープとかについてが載ってない。。
書籍スレにどうぞ。あー、「推薦図書/必読書」か。
ヒープやスタックはC言語がそういってるだけで、どちらも同じメモリ。
char w[5] = 'a,b,c,d,e' となっている配列からeだけを除去して、 w[5] = 'a,b,c,d' にすることが出来ますか?
出来ますん
841 :
デフォルトの名無しさん :2011/02/14(月) 18:12:35
餌でか
そもそも構文エラーです。
>>843 すみません
わかりやすいように例をあげただけです。
>>844 では言い換えましょう。
そもそも構文エラーです。
>>845 char w[5] = {'a,b,c,d,e'}
こうですか?
w[4]='\0'でおk
>>847 あなたは神ですね!
他のクズどもとは違いますね
>>847 以外の糞たちはこのスレに必要ない気がしますが、どうでしょう
>>836 MS-DOS 時代は C とアセンブラをリンクしたりすることも多く、書籍も多かったのですが、たとえばWindows 上でアセンブラ由来のオブジェクトをリンクするような
書籍はみたことがないですね。cl にソースを吐かせて眺めることから着手するしかないかなあ。
>>853 と無職の中年ジジイが申しております
使ってるソフトも多分全部割れ
855 :
デフォルトの名無しさん :2011/02/14(月) 18:54:19
リンクでずっこけたときアセンブラの知識ないと詰みだろ
ズッコケ三人組 コンパイラ、アセンブラ、リンカ
↑サドルマン
文字列の置き換えさえも簡単にできないC哀れ
↑Perl忍者
callocの使い方忘れちゃったんだけど見直したら思い出すレベルだったらおk?
>>861 おk。環境にもよるけど、manを読めればますますおk。
863 :
836 :2011/02/14(月) 20:06:46
864 :
836 :2011/02/14(月) 20:09:12
>>838 ヒープは低位メモリから、スタックは高位メモリから
確保されるらしいです。
そのあたりの違いを知りたくて。
865 :
デフォルトの名無しさん :2011/02/14(月) 21:23:11
>>864 メモリの確保方法はコンパイラを作る人の自由
>>864 heap grows up & stack grows down になるよう作れば
そのようになるってだけの話。
アーキテクチャのマニュアルに必ず明記されてるので
それを確認すればいいよ。
>>830-832 いや、それ未定義だったら
int a[10];
int i;
for(i = 0; i < sizeof(a)/sizeof(a[0]); i++){
...
}
も未定義になるんじゃないか。
そうだったら困るよ、この手のコード山ほど書いてきたから。
>>867 俺も困る
下記のコードがNGだから、sizeof演算子はアクセスしないって信じてます
sizeof(i++)
>>867 大丈夫、ネタだって
GCCではARRAY_SIZEってマクロが同じ手法でlibiberty.hに定義されてるよ
>>869 規格を語る時にgccを引き合いに出されても…
◆QZaw55cn4cがまたやらかしたぞw
407 名前:404 ◆QZaw55cn4c [sage] 投稿日:2011/02/14(月) 22:15:20
>>406 C99 です。
codepad.org も gcc を C99 として使っているようで、だから、
>>400 でもコンパイル時のエラーが表示されていません。
C99 の新仕様は、手近のここを参照しました。
http://seclan.dll.jp/c99d/c99d07.htm#dt19990927 の 7-7
権威のある規格を教えていただけるとうれしいです。
C99でCの宿題をあくまでもやると言い出したww
高卒低学歴のくせにこんなことを言い出す◆QZaw55cn4c
236 : ◆QZaw55cn4c :2011/02/14(月) 21:47:30
>>234 そうですか?「学食大盛り一杯分」あたりを狙ってみたんですが。
415 名前:デフォルトの名無しさん[sage] 投稿日:2011/02/14(月) 22:27:10
おまいら細かいだろ、
ここは学校の課題をこなすところだぞ
416 名前:デフォルトの名無しさん[sage] 投稿日:2011/02/14(月) 22:27:56
>>415 ==◆QZaw55cn4c
通らないソースを呈示されても学生はかえって迷惑するだけなんですけど
417 名前:デフォルトの名無しさん[sage] 投稿日:2011/02/14(月) 22:28:06
>>412 それは流石に言いがかり
難癖つけたい気持ちは分かるが
>>392 の環境がgccなんだからgccで通ればOK
やるなら、gccのver xxで動きませんとか言わないと
>[3] 環境
> [3.1] OS:Linux
> [3.2] コンパイラ名とバージョン:gcc
> [3.3] 言語:C
418 名前:デフォルトの名無しさん[sage] 投稿日:2011/02/14(月) 22:29:38
>>417 ==◆QZaw55cn4c
419 名前:415[sage] 投稿日:2011/02/14(月) 22:29:44
おれ、ちがうぞ。学生だし
420 名前:デフォルトの名無しさん[sage] 投稿日:2011/02/14(月) 22:30:40
>>419 ==◆QZaw55cn4c
もうね、、、
421 名前:415[sage] 投稿日:2011/02/14(月) 22:32:20
>>420 ==◆QZaw55cn4c
おこったぞー、やりかえしてやるー
>>870 あっゴメン、そういう流れだったのか
以下、JIS X3010:2003(ISO/IEC 9899:1999) 6.5.3.4 sizeof演算子 辺りより抜粋
オペランドの型が可変長配列型である場合は、オペランドを評価する。そうでない場合、
オペランドは評価せず、その結果は、整数定数とする。
例2. sizeof演算子のもう一つの用途は、次のようにして配列の要素の個数を求めることである。
sizeof array / sizeof array[0]
でいいかな?
>>875 なるほど、今までのコードは安全だけど、可変長は駄目ってことだな。
ってことは、その例もarrayが可変長だと評価されてしまってNGになるってことか。
当然
初心者ですが質問します。 型は基本的にはint,double,charのみでいいんでしょうか もちろんサイズなどもあるとおもいますが 解答よろしくお願いします。
はいそれでいいです
教えてエロい人 初期化してない変数へのアクセスってsizeofでも未定義なの? typedef xxx foo; foo *p; sizeof( *p ); /* pは初期化してない */
ホントくどいね
恥ずかしい過去w
「sizeofでアクセス」に突っ込まれる ↓ 「は?可変長配列も含む話だしw」 で、その話はまだ続いてるようだが
888 :
デフォルトの名無しさん :2011/02/14(月) 23:13:31
餌でかすぎ つーか、しつこい!
で、結局sizeofは未定義なの?
890 :
デフォルトの名無しさん :2011/02/14(月) 23:14:59
>>888 うんうん、恥ずかしいよね^^
餌デカイけど我慢してね^^
教えてエロい人
初期化してない変数へのアクセスってsizeofでも未定義なの?
typedef xxx foo;
foo *p;
sizeof( *p ); /* pは初期化してない */
あぁ、可変長配列という逃げがあったわけね
893 :
デフォルトの名無しさん :2011/02/14(月) 23:17:27
ISOれks
1時間でも2時間でもクンニし続けるタイプ
>>892 あぁ、あれね。可変長配列を後出しにするんでしょ?分かってるよw
897 :
デフォルトの名無しさん :2011/02/14(月) 23:20:56
>>894 頑張って餌に食らい付けよsizeof君
>>876 確信ないけど、可変長配列でも大丈夫なような気がする。
「オペランドを評価する」というのは、静的=コンパイル時決定ではなく
動的=実行時決定のこと言ってるんだと思う。
もう一度言っておくと確信ないからね。
誰か原文(ISO/IEC 9899:1999)読んでフォローしてくれ。
>>898 sizeof array
↑って実行時評価だろ
sizeof array[0]
問題は↑が実行時評価になるかどうかだ
実装する上では素直にコンパイル時評価のはずだが、
規格を読むだけでは、どちらとでも取れるからな…
面白いねー
904 :
デフォルトの名無しさん :2011/02/14(月) 23:28:49
あなたが解けないC言語/C++言語の問題を ◆QZaw55cn4c が有償で片付けるスレッドです。
・モリタポ(
http://moritapo.jp/ )により決済を行います。
・投稿にあたっては、トリップを使ってください。トリップがなければ決済の確認ができません。
◆QZaw55cn4c は、トリップ以外の質問者の情報を知ることができませんので安心です。
【回答掲示までの流れ】
1. 質問者がトリップを使って問題を投稿する。
2. ◆QZaw55cn4c が回答できる問題があれば、◆QZaw55cn4c が受諾レスを行う。
受諾レスには決済日を基点とした回答猶予期間が示される。
3. 質問者が ◆QZaw55cn4c にモリタポを進呈する。
進呈の際には、問題を投稿したときに表示されたトリップ(パスワードではない)をメッセージに記入する。
4. モリタポの進呈を確認したら、◆QZaw55cn4c は回答を掲示する。(
http://codepad.org/, http://ideone.com を使用します。)
【料金】
・一問あたり 500円(5000モリタポ・手数料込み)です。
・一つのレスに記述できる内容を一問とします。アップローダーを使用してもかまいません。
・◆QZaw55cn4c が受諾レスを行い、受諾レスに回答期日を示したにも関わらず、回答期日に間に合わなかった場合には、モリタポを返還します。
それ以外の場合にはモリタポの返還はいたしません。
【修正】
・◆QZaw55cn4c が一度示した回答に対しては、明白な錯誤があった場合を除いては、◆QZaw55cn4c は修正は基本的に行いません。
ただし、最大限ご希望に応じたいと考えていますので、修正希望があれば、トリップを使用して投稿してください。
修正希望回数は、最大3回を目安としてください。3回を超えて修正を希望する場合は、新規に質問を投稿しなおしてください。
いずれも場合も、修正に応じることを保障するものではありません。
sizeof演算子不要説
908 :
905 :2011/02/14(月) 23:34:26
>>906 ごめん、ネタで書いただけなんだけど、気分を害してしまったようですね。
sizeofは私も使ってるので、不要だと思ったことは一度もないです。
>>901 >規格を読むだけでは、どちらとでも取れるからな…
には同意
>sizeof array[0]
>問題は↑が実行時評価になるかどうかだ
これはいみふ。
例え可変長配列であろうともarray要素の型が動的に変化することはないので。
従って、静的決定だろうが動的決定だろうが結果は同じ。
sizeof演算子はあくまでもオペランドの記憶領域サイズを結果として返すのみ。
っていうのは、なんか勘違いしてるかな?
い、いぐっ
920 :
デフォルトの名無しさん :2011/02/14(月) 23:58:08
この流れから答えを拾えない奴に ISO れks は酷だったか
893 :デフォルトの名無しさん:2011/02/14(月) 23:17:27 ISOれks これがスルーされて涙目ってとこか
これは流行らないな
>>912 俺も原文を、どう読めば良いのか分からんが
オペランドを評価するって言葉の意味は、下記の意味だと思った
int i=5;
int array[i];
sizeof(i-1); // 意味のない例だけど、i-1を評価して未定義になる
>>923 なんか書き間違えてない?
その例だとsizeof(i-1)は普通にコンパイル時に評価される
925 :
デフォルトの名無しさん :2011/02/15(火) 00:07:45
最悪時間考慮杞憂説
>>924 だね…orz
int i=5;
int array[i];
sizeof(array-1); // 意味のない例だけど、i-1を評価して未定義になる
927 :
926 :2011/02/15(火) 00:11:51
コメントを修正してなかった…orz 寝る
>>923 sizeofはオペランドの記憶領域サイズを返すんだから、
sizeof(i-1) sizeof(i) sizeof(int) sizeof(1)
は全て同じ値に静的にコンパイル時決定される。
sizeof(array)は動的に実行時決定される。
但し、この例の場合にはコンパイラの最適化により静的にコンパイル時決定されるかもね。
で、キチガイが湧いてきたのでこれで終りにします。ゴメン
オペランドの型が可変長配列型である場合,オペランドを評価する。 そうでない場合,オペランドは評価せず,その結果は,整数定数とする。
C言語ってC++みたいにコンパイルするとき、ライブラリ関数の コードのリンクみたいな処理必要ないんですか?
この「評価」は実行時の話だから、
>>926 の例(最適化しないとして)は未定義と見なしていいということかな
真面目に回答してるところアレだけど 現時点で分からないと言ってるのは ぺろぺろしたいだけの舐め達磨だけだと思うのだが。
舐め達磨とか言ってるのも一人だけだな はてさて
なめ達磨流行らそうとしてたのかw ISOれksもこいつかw
>>935 そのクドさ
お前舐め達磨だろw
これでも食らえ
ぺろぺろぺろぺろ
938 :
デフォルトの名無しさん :2011/02/15(火) 00:30:24
アセンブリブリザエモン!!!
902 :デフォルトの名無しさん:2011/02/14(月) 23:26:12
>>897 よう、なめ達磨
903 :デフォルトの名無しさん:2011/02/14(月) 23:27:19
面白いねー
907 :デフォルトの名無しさん:2011/02/14(月) 23:34:02
>>903 ぺろぺろぺろぺろ
なんだ、なめ達磨って自分のことじゃん
>>937 流行らなかったからって荒らしは良くないよ
941 :
デフォルトの名無しさん :2011/02/15(火) 00:32:53
気持ち悪いやつと2人きりになっちまった(おえ
943 :
デフォルトの名無しさん :2011/02/15(火) 00:34:11
あげ
>>942 舐められるのには弱い舐め達磨w
ぺろぺろぺろぺろ
ぺろぺろぺろぺろ
やっぱホンマモノはクドさが半端ねぇわ 舐め達磨さん ぺろぺろしてすいませんでした
◆QZaw55cn4c
あずにゃんペロペロ^^
973 :
デフォルトの名無しさん :2011/02/15(火) 01:05:43
初期化してない変数へのアクセスってsizeofでも未定義なの? typedef xxx foo; foo *p; sizeof( *p ); /* pは初期化してない */
あ
976 :
デフォルトの名無しさん :2011/02/15(火) 01:10:54
サンプルの取り方からなってねえんだよ そこが論点なら sizeof p だろうがよ低脳
俺は高脳だけどな
aho
C言語でフィルターは可能ですか
可能
コーヒーフィルターか
>>973 たぶん正当なコード
sizeofはちょっと特殊な挙動をする演算子で、
(いくつか変なケースを除いて)オペランドは実行されない
pが指す先にアクセスしなくても、コンパイル時に型は決定できるからね
else ifの使い道がわかりません else ifって必要なくないですか?
if (...) /* ... */ else if (...) /* ... */ else if (...) 深くなってる気がします!
そんな風にはならねーよw
if (...) /* ... */ else if (...) /* ... */ else if (...) /* ... */
インデントが深く? ネストじゃ?
if (...) /* ぺろ */ else if (...) /* ぺろぺろ */ else if (...) /* ぺろぺろぺろ */ else if (...) /* ぺろぺろぺろぺろ */
でもさぁ、else ifなくてもそこまで困らないでしょ?
いや困る
す
お
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。