X



C言語なら俺に聞け 150

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (アウアウクー MM57-IE4z)
垢版 |
2019/02/06(水) 13:39:03.21ID:c4bnQMl3M

次スレを作る時は上記1行をコピーして2行に増やして必ず1行目に入るようにしてください。

C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 149
https://mevius.5ch.net/test/read.cgi/tech/1540731704/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0549デフォルトの名無しさん (アウアウウー Sa9b-RuLt)
垢版 |
2019/03/05(火) 20:50:49.79ID:TQUHbSsoa
>>548
昼夜を問わず沢山のマウントありがとうございます。
0551デフォルトの名無しさん (ワッチョイ 9f01-dMaL)
垢版 |
2019/03/05(火) 22:33:03.94ID:QKmISP/B0
>>536
すげー昔の話だがメモリー側で論理演算できるようにして1アクセスでビット単位操作を可能にした特許があったな
元々はグラフィック用で図形の重なりの演算をメモリー側でやるようにしたものだったけど
特開昭61-264453
0552デフォルトの名無しさん (ワッチョイ 9fab-IBRN)
垢版 |
2019/03/05(火) 22:51:02.28ID:U66Q7+Ir0
>>551
前世紀の話だが液晶モニタ側にメモリ機能を有して
PCの電源落としても液晶モニタ側に必要な情報が画像として記録されてるから
再起動後すぐにデータを使えるようになる、なんてニュースが真面目に流れてたっけ
0556デフォルトの名無しさん (アークセー Sx0b-WeXs)
垢版 |
2019/03/06(水) 08:08:34.10ID:CUnnY/wEx
そういえばGRAM用にそういうRAMが何種類かあったね。
OpenGLとかで全画面書き換えが当たり前の今では役に立ちそうにないけど。
C言語とは関係ない話題ですまんかった。
0559デフォルトの名無しさん (ワッチョイ 5768-IBRN)
垢版 |
2019/03/06(水) 17:11:17.09ID:5bfpZyLy0
Cはコンパイラにより
型の変数の容量どころかポインターすら変わる
きれいに書くことなどできん!

Cの恐ろしいことは、標準っぽい関数が
リソース開放の事を考えてなかったりする所w
0562デフォルトの名無しさん (ワッチョイ b75f-tQZn)
垢版 |
2019/03/06(水) 18:17:51.07ID:t0mzyE2R0
>>559
標準っぽい関数とはなんですか?
0563 ◆QZaw55cn4c (ワッチョイ bfe9-IBRN)
垢版 |
2019/03/06(水) 18:30:39.79ID:pvc8mHD30
>>559
>Cの恐ろしいことは、標準っぽい関数がリソース開放の事を考えてなかったりする所w

それはどの標準関数ですか?具体的に指摘できますか?
0568 ◆QZaw55cn4c (ワッチョイ bfe9-IBRN)
垢版 |
2019/03/06(水) 18:45:49.69ID:pvc8mHD30
>>564
いえいえ、標準っぽい、というのだから、標準関数に近いという主観的判断があるのでしょう
それはそれで私は純粋に好奇心が湧いたのです
0572デフォルトの名無しさん (ワッチョイ ff8f-x13U)
垢版 |
2019/03/06(水) 22:53:39.41ID:s+f1BYLZ0
標準的な関数で痛い目にあったといえばlocaltime()
コイツがスレッドセーフじゃないせいでひどい目にあったよ……
まあ返り値がポインタな時点で疑うべきだったが。
0575デフォルトの名無しさん (アウアウウー Sac3-8zRT)
垢版 |
2019/03/07(木) 18:27:15.02ID:LVW4xgZwa
超*2 初心者です。
#include<studio.h>
int main(void){
int a,b;
b=3*a+4;
a=2*b+3;
printf("a=%d\n",a);
printf("b=%d",b);
return 0;
}
とプログラムして、
a=-2
b=-2
という出力を期待したんですが、
a=3
b=0
と出力されてしまいました。
何が間違っているのでしょうか??
長文スマソ
0579はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1e3e-/kwh)
垢版 |
2019/03/07(木) 18:40:34.01ID:fFrTWbSf0
>>575-576
まずプログラムとして完全に間違っているのは、
b=3*a+4; の評価時点で a は初期化されていない。
初期化されていない自動変数の中身は未規定で、
何が入っているかわからない。

そして第二の間違いとして、
C は二次方程式を解いたりしない。
b=3*a+4; は a の中身に 3 を書けて 4 を足すという処理をしたものを b に入れ
その次に a=2*b+3; の処理、すなわち b に 2 を書けて 3 を足したものを a に入れる。
そんだけ。
これはもう、質問以前の話で、完全に C のごくごく初歩をわかってないので、
普通に入門書を最初から読んで。
0598デフォルトの名無しさん (アウアウウー Sac3-hLQV)
垢版 |
2019/03/08(金) 09:39:25.02ID:pv8HlopZa
代入を =: にしている言語あるな。
0599デフォルトの名無しさん (ワッチョイ 335f-LDqw)
垢版 |
2019/03/08(金) 09:50:55.62ID:dZ4sYt+j0
>>598
:=
0600デフォルトの名無しさん (ワッチョイ 335f-LDqw)
垢版 |
2019/03/08(金) 09:51:39.55ID:dZ4sYt+j0
数学用語を使うやつは馬鹿っぽい
0601デフォルトの名無しさん (アウアウウー Sac3-hLQV)
垢版 |
2019/03/08(金) 10:43:26.56ID:pv8HlopZa
>>599
あ、そうだったか。すまん。
0606デフォルトの名無しさん (アークセー Sxc7-BB1s)
垢版 |
2019/03/08(金) 16:00:54.92ID:iK4gPhWEx
はるかの昔からそういったGUIプログラミングツールやCASEツールがあったけど、どれも決定版にはなってないよね。
唯一、車業界でMatlab+Simulinkと自動コードが標準的に使われてるけど、あれはモデル化して徹底的にシミュレーションする目的がメインなのでちょっと汎用的には使いにくい。
実際吐き出されたコードはロジックに問題はなくてもソフト技術者から見ると目も当てられないぐらい悲惨なコードだし。
0623デフォルトの名無しさん (ワッチョイ 1f02-O5uf)
垢版 |
2019/03/09(土) 10:05:30.78ID:UpidnITW0
返り値がポインタの関数って
int *func() {...}
↑みたいに関数名にアスタリスクが付いてるのが違和感あるんだけど何か理由あるの?
意味を考えればint* func()もしくはint * func()にするべきなんじゃないのかな
0624デフォルトの名無しさん (ワッチョイ 168f-P8NU)
垢版 |
2019/03/09(土) 10:44:22.53ID:1jBEzlrN0
複数のポインタ変数を宣言するとき

int *a, *b →OK
int* a, b  →NG

ということがあるので前者の記述にする。
関数についてもそれに揃えてるだけ。

だと思ってるんだが違うかもしれん。
0626デフォルトの名無しさん (ワッチョイ df01-BB1s)
垢版 |
2019/03/09(土) 10:57:28.35ID:MFivwnzo0
昔、*をどこに付けるべきか議論あったね。
「int *」も型なのでスペース空けるのはおかしい、「int*」と書くべきだと主張してる人も結構いて、今もまれによく見かける。
統一してれば良いんじゃね?
0627デフォルトの名無しさん (ワッチョイ de8c-OG2p)
垢版 |
2019/03/09(土) 11:42:25.92ID:TwFYMaY40
>>624
int *a, *b は *aと書くと整数。
0629デフォルトの名無しさん (アウアウクー MM07-LDqw)
垢版 |
2019/03/09(土) 12:13:21.98ID:MaTZH59sM
>>623
それC言語の初期はそっちの方が普通だったんたよ。
0643 ◆QZaw55cn4c (ワッチョイ 1ee9-ouaW)
垢版 |
2019/03/09(土) 14:36:13.79ID:Hu0eNkce0
変数宣言のときと式の評価のときとでは、働きが間逆になる、ときいていますが、私も馬鹿になったので、そういわれていることをそう理解できなくなりました…
0644デフォルトの名無しさん (ワッチョイ 975f-YS+u)
垢版 |
2019/03/09(土) 14:39:16.30ID:Q2jRdDZx0
宣言は演算子とは別じゃなかったっけ?
typedefもできるし規格はpointer typeって書いてるからポインタ型って認識も間違いじゃないと思ってたけど違うんかな
確かに一行での複数宣言だと確かにおかしなことにはなるけども
0647はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1e3e-/kwh)
垢版 |
2019/03/09(土) 15:12:58.76ID:2TgeLAXH0
>>640
意味的には int* は型。
でも文法的には * は変数名と優先的に結合するので、
変なことになってんだよ……。

C++ だと設計者 (stroustrup) が * を型名に寄せる書き方をしてるので、
近頃はそれが C にも流入してる感じ。
■ このスレッドは過去ログ倉庫に格納されています

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