X



C言語なら俺に聞け 149
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ af9f-7TBo)
垢版 |
2018/10/28(日) 22:01:44.38ID:D9Gt7gmT0
!extend:checked:vvvvv:1000:512

次スレを作る時は上記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言語なら俺に聞け 148
https://mevius.5ch.net/test/read.cgi/tech/1537347410/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0302デフォルトの名無しさん (ワッチョイ 769f-C0zt)
垢版 |
2018/12/02(日) 00:55:37.62ID:twRH93OM0
https://ja.wikipedia.org/wiki/%E3%82%86%E3%81%A8%E3%82%8A%E4%B8%96%E4%BB%A3#%E5%AE%9A%E7%BE%A9%E3%83%BB%E7%AF%84%E5%9B%B2

ゆとり世代については明確な定義、範囲はなく諸説ある。

小中学校において2002年度施行(高等学校は2003年度)の学習指導要領による教育を受けた世代(1987年4月2日 - 2004年4月1日生まれ)。
小中学校において1980年度以降(高等学校は1982年度以降)の学習指導要領による教育を受けた世代。1966年度生まれ以降。

1966年度生まれ以降。
1966年度生まれ以降。
1966年度生まれ以降。
1966年度生まれ以降。
1966年度生まれ以降。
0303デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
垢版 |
2018/12/02(日) 01:01:50.46ID:Bx+z5yQP0
>>301
俺に言ってるのなら説明しても良いが、タダではやらん。
お前が説明に値するだけの頭があることを先に示せ。
具体的には、現状の議論について、何らかの進展があるレスをまずしろ。
0304デフォルトの名無しさん (ワッチョイ 9a2b-lzSb)
垢版 |
2018/12/02(日) 01:23:06.59ID:26H0WWJ10
>>291
まず、副作用という言葉は C が生まれる前から使われていたし意識されていたことですよ
Lisp をやってれば分かることだけど

C 全盛時にCプログラマが副作用という言葉を使わなかったのは当然でしょうね
C は副作用そのものであるノイマンアーキテクチャを素直に表現できる言語と
目されていたわけで (i++ とか)、それこそ最初はグローバル変数も使いまくりだったのでは
また、引数で文字列を渡すにもポインタを使わざるを得ないので、それが破壊されることを
防ぐ手立てがなかった (今でもないか)
引数経由でなくても、ポインタが使えるということは、そこに任意のアドレスを設定でき、
任意の場所に書き込めるということなので、C の関数で副作用を防ぐ手立てはないわけですよ
C 界隈で副作用うんぬんが取り沙汰されるようになったのは const 引数の導入や、
グローバル変数の弊害が意識されるようになって、むしろ民度が上がってきたと見るべきかと

あと、Oracle のストアドプロシジャ PL/SQL をやったことはないですか
あの文法は Ada そのものなんだけど
0305 ◆QZaw55cn4c (ワッチョイ ba60-4R1R)
垢版 |
2018/12/02(日) 01:24:03.02ID:xpb/M8Xl0
>>302
1966以前と1966以後では教育内容で変化があったのですか?数学に関する限り一時期は線形代数も微積分もやる、という過剰な状況だったと思っています
0306デフォルトの名無しさん (ワッチョイ a7c3-lF2n)
垢版 |
2018/12/02(日) 01:41:19.09ID:1UGGVPSQ0
>>291
オラクル社の第一言語は、Ada言語を借用したPL/SQLだぞ。

C言語が例外処理機能を受け入れなかったのは完全な失敗。
0307デフォルトの名無しさん (ワッチョイ a7c3-lF2n)
垢版 |
2018/12/02(日) 01:45:35.26ID:1UGGVPSQ0
>>305
そうですよね。いま働いている日本人のほとんどはゆとり教育です。

ただ昔は教科書に載っているだけでまともに教えていないと思います。

学年トップレベルだったという年配の多くが義務教育の範囲さえ、完全に忘れているか、知らなかったりします。
0308デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
垢版 |
2018/12/02(日) 01:46:50.51ID:Bx+z5yQP0
>>304
> 引数経由でなくても、ポインタが使えるということは、そこに任意のアドレスを設定でき、
> 任意の場所に書き込めるということなので、C の関数で副作用を防ぐ手立てはないわけですよ
それは「副作用」ではなく「バグ」と言うんだよJava以外では。

その他諸々色々勘違いするのは自由だが、
さすがにそれだと話が通じなさすぎて煙たがられてるだろ。

> あと、Oracle のストアドプロシジャ PL/SQL をやったことはないですか
> あの文法は Ada そのものなんだけど
無いね。
ただ、Oracleがそうなら、Ada文法がまだ生き続けていることにはなる。この点は訂正しよう。

とはいえ、それが「参考にする意味があるか」とは別だよ。
本当に意味がある物は、「オブジェクト指向」や「クロージャ」のように、
ほぼ全ての言語でサポートされる事になる。
現状、procedure/function/Subを区別してない言語がメジャーで、
区別した言語(Ada/Pascal/VB)はことごとくマイナーだし、
最近のクロージャのようにC#/C++/Java等のメジャー言語が
相次いで方針を変更してサポートした、ということもない。
それは不要だった、ということで結論は出てる。
それを反例と持ち出してきても意味がないだろ。
0311デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
垢版 |
2018/12/02(日) 01:55:27.80ID:Bx+z5yQP0
>>306
Oracleについては308の通り。

例外についてはCで採用しなかったのはとりあえずは正解だろ。
未だに各言語で例外方式が安定しないのは、未だにいい解を見つけられてない、ってことだよ。
0312デフォルトの名無しさん (ワッチョイ 769f-C0zt)
垢版 |
2018/12/02(日) 02:36:57.19ID:twRH93OM0
自分がゆとりであることに気付かずにだからゆとりはと言い出すやつばかり。
それが今の時代。
0313デフォルトの名無しさん (ワッチョイ e3f2-r3MB)
垢版 |
2018/12/02(日) 07:38:01.21ID:3j0ioh6B0
>(当たり前だがグローバルは使わないとする)

副作用について議論するうえでこんな変な条件付ける人はいない。
あと当然だが、引数によって参照される関数スコープ外の値を変化させるのも副作用だ。
0314デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
垢版 |
2018/12/02(日) 10:14:19.71ID:Bx+z5yQP0
>>313
> こんな変な条件付ける人はいない
君がグローバルを普段から濫用している人だとは理解した。

> あと当然だが、引数によって参照される関数スコープ外の値を変化させるのも副作用だ。
勿論。

というか、まともに議論する気があるのなら、明確に条件を確定させなければならない。
何も言わないのなら、C言語での『標準的な』コーディングを各自が想定することになる。
君が普段からグローバルを濫用しているのは理解したが、それは俺の『標準』ではないし、
君みたいな馬鹿が出てきて無駄に議論が空回りするのが嫌だから、俺は明示的にそれを除外した。
そしてこの条件付けは『標準的』であり、問題ないと俺は考えている。

君がグローバルを含めて副作用を議論したいのならそうすればいい。
俺はその議論には意味が無いと思うから参加はしない。

君の言うように、俺は「参照透過」は以下の2種類に分けて考えるべきだと思っている。
・狭義の参照透過…sin()等
・広義の参照透過…qsort()等やthis
・参照透過でない…その他全部、つまりクロージャやbindやグローバルを用いるもの
通常の文脈で言われる『副作用』はおそらく関数型()言語から来ている。
それは上記「参照透過でない」物を濫用した結果だ。
Cの場合は最初からそれが出来ないから、その議論が発生することはなかっただけ。

それとは別に、意識高い系関数型()の「『狭義の参照透過』だけでプログラミングすべき」、
というのは当たってはいるが、実際の所それは多値を返せないと厳しい。
そして多値返しよりも参照を返してそこからアクセスしろ、というのがメインストリームの言語だろ。
それの方が楽だから。
0315デフォルトの名無しさん (ワッチョイ 9a33-o5Pc)
垢版 |
2018/12/02(日) 10:48:22.22ID:3LBO8TR+0
少なくともCにおける「副作用」はずっと昔からの規格で定義されている用語だから、
独自定義で話されるのは困る。
http://kikakurui.com/x3/X3010-2003-01.html#13
> ボラタイルオブジェクトへのアクセス,オブジェクトの変更,ファイルの変更,
> 又はこれらのいずれかの操作を行う関数の呼出しは,すべて副作用(side effect)と呼び,
> 実行環境の状態に変化を生じる。...
0316デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
垢版 |
2018/12/02(日) 11:25:56.48ID:Bx+z5yQP0
>>315
FPUのフラグか。なるほどそれは正しい『副』作用だ。

というか、『副』作用というからには当然「作用」(『主』作用)と対比されるべきで、
「printfが副作用」(>>293)というのはHaskellの定義だからな。
スレチというのはごもっとも。
0317デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
垢版 |
2018/12/02(日) 12:58:23.54ID:mXB0v2zh0
C言語使う人ってアドレスって言ったほうがわかりやすい場合でもポインタっていうよね
ポインタの意味が多くて混乱する
0318デフォルトの名無しさん (ワッチョイ 4e80-gjgg)
垢版 |
2018/12/02(日) 14:18:51.99ID:uIlAasYL0
副作用は、volatile とか、何かの状態を変えること

関数型のmonad とか、
Vuex, Nuxt.js みたいに、1方向のライフサイクルを作って、
状態は、Mutation からしか変えられないとか

どこかのタイミングに、絶対に変化していない、ポイントを作る

WEB+DB 106号に載っている、Flux。
状態管理のデザインパターン、単一方向のデータフロー
0320デフォルトの名無しさん (ワッチョイ 4e61-45aa)
垢版 |
2018/12/03(月) 06:04:46.06ID:9nl14toh0
C言語はファイルポインターを配列を指すようにして同じように扱うことはできませんよね。
それなので同じように扱うにはファイルポインターと配列のラッパーを自分で作らなければいけませんよね。
0325デフォルトの名無しさん (アウアウウー Sa47-2q9Y)
垢版 |
2018/12/03(月) 10:44:00.29ID:7ySpxLkda
>>323
FILE * 経由の入力や出力をするように書かれているプログラムで使うと便利な場合があると思う。
0326デフォルトの名無しさん (ワッチョイ 0e3f-C0zt)
垢版 |
2018/12/03(月) 12:19:30.10ID:dfidJp1A0
>>324
晒しage
0327デフォルトの名無しさん (アウアウウー Sa47-2q9Y)
垢版 |
2018/12/03(月) 12:27:39.88ID:7ySpxLkda
>>326
それはC言語を知らない初心者が前スレだったかで残した名言
0330デフォルトの名無しさん (ワッチョイ 4e80-gjgg)
垢版 |
2018/12/03(月) 14:06:18.11ID:xHLM582p0
Ruby には、StringIO と言う、メモリ上だけに存在する仮想ファイルがある。
これは、IO クラスの派生クラスではなく、
文字列クラスに、IO にある関数をDuck Typing したもの(インターフェース)

StringIOインスタンス.read, puts など、ファイル操作と同名の関数を使える

テストの際に、本当のファイルを作らなくても、
メモリ上だけでファイルの振りができるので、楽
0333デフォルトの名無しさん (アウアウウー Sa47-2q9Y)
垢版 |
2018/12/03(月) 16:07:39.69ID:7ySpxLkda
ノーベル仮装ファイル賞
0337デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
垢版 |
2018/12/03(月) 21:56:42.64ID:r8O+Z3hZ0
>>329
プロセスメモリエディタを知ってる=Cを知ってる、になるのか。
さすがゆとり、だな。
お前らはそんなことばかりするから、お前らの居場所を無くして行ってるんだぜ。
自覚出来てないんだろうけど。

まあ、ゆとりに付ける薬はないって事だな。
三つ子の魂百まで、と同様、ゆとりの魂百まで、なのだろう。
0339デフォルトの名無しさん (ワッチョイ 769f-C0zt)
垢版 |
2018/12/04(火) 22:17:29.21ID:YeiHZFGw0
彼は自分がゆとりであることに気付かない。超ゆとりである。
0340デフォルトの名無しさん (ワッチョイ 9164-5svG)
垢版 |
2018/12/06(木) 08:22:58.33ID:cC0kDT7D0
勉強始めて半年くらいの初学者だけどenumの便利さに今日気が付いて震えてる
case文がシェルスクリプトとかのと比べてあんなに使いにくいものになってるのはそういうことだったのね……。
0346デフォルトの名無しさん (アウアウウー Sa05-MnXc)
垢版 |
2018/12/06(木) 12:25:09.83ID:nzH90qpKa
まあ今となってはコンパイラが軽く最適化してくれれば全く同じコードになってしまうかも知れず、どちらで書くかは見易さの問題だけかも知れない。
ま、switchはbreakなしで下に抜けるっていうifとの違いがあるからそれ利用してたら別だけどな。
0347デフォルトの名無しさん (ワッチョイ b3eb-u+MK)
垢版 |
2018/12/06(木) 14:08:22.67ID:CZHWXsyR0
switch〜caseで、char 値の比較の場合、昔のコンパイラでも最適化した時、
条件分岐じゃなくて、テーブルジャンプにしてくれるものがあったなあ。
最近のコンパイラが if〜else if〜 で記述した時、どう最適化してくれるのかは知らない。
0351デフォルトの名無しさん (アウアウウー Sa05-MnXc)
垢版 |
2018/12/06(木) 15:27:35.39ID:nzH90qpKa
そういやswitchのブロックの先頭でも変数宣言できるんだよな。
今はどこでもできるから関係ないとは思うが昔は驚いた。
0354デフォルトの名無しさん (アウアウウー Sa05-MnXc)
垢版 |
2018/12/06(木) 18:06:57.01ID:nzH90qpKa
それは普通にできるのでは?
0358デフォルトの名無しさん (アウアウウー Sa05-MnXc)
垢版 |
2018/12/06(木) 20:25:38.15ID:nzH90qpKa
のようなもの
0359デフォルトの名無しさん (ワッチョイ 31b3-EBCi)
垢版 |
2018/12/06(木) 20:45:48.14ID:TUEVaed40
構文やや変数キャプチャの問題はさておき、関数ポインタは原始的なクロージャっぽく使えるよね。
こんなん書いたらクロージャ原理主義者が反論しそうだけど。
0360デフォルトの名無しさん (アウアウウー Sa05-MnXc)
垢版 |
2018/12/06(木) 20:49:35.87ID:nzH90qpKa
苦労者
0363デフォルトの名無しさん (ワッチョイ db9f-ZeM3)
垢版 |
2018/12/07(金) 02:34:07.16ID:4kVuFzeP0
bcpadって、懐かしい響きだな。
古すぎてなにか特別な理由がない限り使われなくなってるようなものだと思うんだが、なんでそれ使って勉強しようと思った?
0366デフォルトの名無しさん (アウアウウー Sa05-/enL)
垢版 |
2018/12/07(金) 20:32:40.15ID:F84vPdIda
MSのVisual Stdioに入ってるVC++か、gcc か、clangだね。

bcpad使った事ないけど、それで使えるbccも地味に生き残ってて進化してた。
(久しぶりに見に行ったらフリーのは最新じゃないけど、地味に進化してた)

エンバカデロがまだインプレス(買収される前)だったり、ボーランド(社名変更前)だったりしてた時代のbccコンパイラ環境設定記事がまんま使えるはず。
0367デフォルトの名無しさん (アウアウウー Sa05-MnXc)
垢版 |
2018/12/07(金) 20:55:30.39ID:qRyaIDL9a
LinuxまたはWindowsのWSLのUbuntu等やCygwinの中でもgccが動く。Macでも中はUNIXなので動く。
0368デフォルトの名無しさん (ワッチョイ 899e-ZtDu)
垢版 |
2018/12/07(金) 21:34:48.53ID:0/x3pMw+0
windowsならmsvc
unix、unixクローンならgcc

コレで十分

windowsでいちいちgccでコンパイルする必要なんかない
たまに確認に使う程度
0371デフォルトの名無しさん (アウアウウー Sa05-/enL)
垢版 |
2018/12/08(土) 02:14:28.50ID:5PBkTMHJa
Winならmsvc(VC++)かなぁ。。。速いしVS入れれば個人用途に限りMFC(MSのC++ライブラリ)付きで無料で使える。
ただ、最新のC/C++への対応状況は多分一番対応が悪い。

つい先月見た限りでは、bccは地味に対応状況は良いので、Win32APIが付いてて最新のC/C++使いたいってのには一番環境整え易い。(setbccで一発)

Linux/Unix系はclangかな。
gccにはconio.hが無い。(msvc、bcc、clangにはある)

最新のC/C++対応状況じゃclangとgccが2強だけど、Win用にWin32APIは最初から付いてたか分からない。
WinでGUIするのに情報少なかったから、最新のC/C++の勉強にしか使ってない。
0372デフォルトの名無しさん (ワッチョイ db9f-n9Ol)
垢版 |
2018/12/08(土) 05:48:44.85ID:xmV4OmOO0
conio ライブラリの ncurses を使った Linux 用の互換ライブラリはあるよ(多分UNIX系OSならLinux以外でも動くような気がするが)。
https://ja.osdn.net/projects/sfnet_linux-conioh/
ていうか conio と curses ライブラリの両方が存在する状態になってから30年ぐらい経ってるので既に世界中で互換ライブラリは作られてると思う。

UNIX系OSでconioが標準的なものとして取り入れられない理由はもっと昔から curses や termios があって根付いていたからだと思う。
後から出てきた MS-DOS 画面専用ライブラリを組み込む気になる人はあまりいなかったんだろう。
0373デフォルトの名無しさん (アウアウウー Sa05-/enL)
垢版 |
2018/12/08(土) 08:04:27.69ID:5PBkTMHJa
助かった。
昔読んだ入門書に環境依存と書いてたけど、互換ライブラリあるんだね。
getch関数地味に使うのよ。

調べたらバッファオフしてから普通のgetchar使ってるのか。
そのままLinux流を覚えても良いかな。

どっちにしても良い機会だった。
有り難う。
0374デフォルトの名無しさん (ワッチョイ f14f-ZtDu)
垢版 |
2018/12/08(土) 10:14:50.43ID:+xxwdKok0
>>371
> WinでGUIするのに情報少なかったから、最新のC/C++の勉強にしか使ってない。
MFCなんて言ってるから少ないんだよ。それ、20年前の話だし。
MFC -> .NET(Forms) -> .NET(WPF) -> UWPか?もう一つくらい有った気もしたが。

『標準』への対応という意味では遅いけど、
そもそも標準が糞な所はMS独自拡張が行われているからそれなりには困らない。
最新のならC++11にはほぼ対応してたはずだし、「どれがいいですか?」なんて聞く奴には問題にならない。
まあ、お前らは最新の文法を使えることが腕前だと勘違いしているようだから、大問題なのだろうけど。
それも含めて自由にやればいいが。

Borland Builderは一時期Cをリードしたのは事実だが、今だに開発が継続されていたのは俺も今知ったレベル。
Borland信者でなければ普通は地雷扱いで使わない。
というか、win環境ならVS以外を考える意味がない。
無料でGUIのIDEなら第一選択肢がVSで、実際それで十分で終わり、のはず。
無駄なところで苦労したくなければ、とりあえずみんなが使ってる物を使っておけ。
0378デフォルトの名無しさん (ワッチョイ 99cb-n9Ol)
垢版 |
2018/12/08(土) 11:51:32.86ID:PBftE5qw0
>>371
bccって揃えやすいか?
ダウンロードするのに個人的なことを根掘り葉掘り聞かれるのが
たとえば俺なんかウゼーと思うが

対応状況が良いって、C++98だぜ?
テンプレート実引数にメンバポインタを渡すとコケるあたり致命的だろ
0381デフォルトの名無しさん (ワッチョイ f14f-ZtDu)
垢版 |
2018/12/08(土) 13:05:07.00ID:+xxwdKok0
一応訂正(補完)しておく。

× > Clang標準のGUI環境としてはありなのか?
○ Clang標準のGUI環境『のIDE』としてはありなのか?

今更CでGUIアプリを作る意味はないし、Qtも流行らないよ。
やれば分かるが、GUIに関しては今現在はHTML/CSS/JavaScriptが最強だ。
マジでそれ以前のGUIなんて全部ゴミ。
だから全部の環境がHTML/CSS/JavaScriptを追いかけているのではないかな。
WPFもGtkもまだCSS部分が出来てない。Qtも見た目その辺の感じ。
Qtはそもそも今時珍しく仕様を開示してない.。この辺が超絶イケてない。
(例:QMLのビデオを試しにみようとしたが目隠しが出る)
0384デフォルトの名無しさん (ワッチョイ f14f-ZtDu)
垢版 |
2018/12/08(土) 15:59:03.07ID:+xxwdKok0
>>382
WebGLはGUIではなくグラ(フィックス)だし、
それ主体ならMFCでも大して変わらないと思うが。
Canvas自体はむしろ旧インタフェースをHTML側に輸入したものだし。

ただ、GUIやるならマジでHTML/CSSのお手軽さは一度試した方がいい。
今のところ他プラットフォームも同様の場所を目指しているから、無駄にはならんし。
CanvasでGUIやる気なら、背景にjpg貼ったなんちゃって仕様のHTMLの方が楽だし、見た目だけなら同じに出来る。
もちろんCanvasの上や下にHTMLを重ねてそっちでイベントだけ取り扱うことも出来る。
これらは旧来のインタフェース(Forms等)でも出来るが、それ用に設計されてないからいろいろ話が面倒になる。

が、まあ、CでGUIアプリを作ろうとすること自体が若干間違いで、
ビュワー等大きなデータを扱う(=速度がそれなりに必要)でなければ、
60fpsさえ出れば何でもいいし、Cでやる意味はないよ。

>>383
他環境と比べての話だぞ。
以前ドキュメント探してもろくなのが無かったし、
今日チュートリアルビデオを見ようとしても登録しないと目隠しが出るし。
こんなのでQtが流行るわけがないね。考え方が15年以上遅れてる。
それでもQtと心中するのも自由だけど。
0387デフォルトの名無しさん (ワッチョイ 4bbe-5svG)
垢版 |
2018/12/08(土) 18:40:20.20ID:hIfZgykd0
ほとんどC言語関係ないけどQtは最初,マルチプラットフォームで使えてC++バインディングが公式で提供されているっていう理由で
かなーり期待したんだけどね……。結局今はGTK+に戻ってしまった。
0389デフォルトの名無しさん (ワッチョイ 9312-ZtDu)
垢版 |
2018/12/09(日) 11:07:31.14ID:dkLieERx0
・C言語自体が単純で低水準、変換しやすい
・コンパイラの最適化とそこに投入された人月

というわけでC言語そのものじゃなくてコンパイラで生成された機械語が早い
0391デフォルトの名無しさん (ワッチョイ 93bd-xVWz)
垢版 |
2018/12/09(日) 15:56:34.95ID:LXVWu9Mt0
>>311
よくもまあPL/SQLを知らないのに批判できるよな。

PL/SQLの例外処理はOracle DatabaseがSQL、ビルトインパッケージの結果をうまく例外として伝播してくれる。

あなたは単に例外を作り出す方の実装が悪いものを見ているだけ。
0392デフォルトの名無しさん (ワッチョイ 93bd-xVWz)
垢版 |
2018/12/09(日) 15:58:53.53ID:LXVWu9Mt0
>>317
アドレスを指しているアドレスがポインタ。

ポインタが指しているアドレスにポインタがあるわけではない。
0393デフォルトの名無しさん (ワッチョイ 93bd-xVWz)
垢版 |
2018/12/09(日) 16:03:51.04ID:LXVWu9Mt0
>>388
C言語は低水準言語であるから、うまくやれば速いマシン語になるが、ちょっとしたことでむしろ遅くなるマシン語を生みやすい。

アーキテクチャの知識がない場合は、誤解したアーキテクチャを想定したコードを書いてしまい、実行速度が遅いものができあがる。
0398デフォルトの名無しさん (ワッチョイ 13d4-n9Ol)
垢版 |
2018/12/10(月) 15:44:39.90ID:Yf20pj4f0
あーそうか、
4byte(32bit)だと0x00000000から0xFFFFFFFFまでの?4294967296通りのアドレスが保存できるんですね。
なので処理系?によって変わるってことなんですね。
ありがとうございます。
0399デフォルトの名無しさん (アウアウウー Sa05-MnXc)
垢版 |
2018/12/10(月) 15:58:27.14ID:4x6+51xya
この頃の64bit環境だとアドレスも64bitだと思う。
クロスコンパイルする場合や意図的に32bit用のバイナリを作るようにコンパイルする場合を除く。
■ このスレッドは過去ログ倉庫に格納されています

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