!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
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言語なら俺に聞け 156
https://mevius.5ch.net/test/read.cgi/tech/1601271690/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 157
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0345-kMi9)
2021/06/28(月) 11:22:51.50ID:so+vl3vs0364はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 463e-cJil)
2021/08/15(日) 00:01:55.60ID:oR5NZ4bd0 いっそのこと単に byte とでもしておけばよかったのかもしれない。
365デフォルトの名無しさん (ワッチョイ 4201-VYeI)
2021/08/15(日) 00:05:31.44ID:U+FsjVqC0366デフォルトの名無しさん (ワッチョイ ed7c-BgPC)
2021/08/15(日) 00:25:17.76ID:ftNChFXo0367デフォルトの名無しさん (アウアウウー Saa5-PlbL)
2021/08/15(日) 01:04:08.98ID:lrNh9u+Sa 歴史的に char と byte はどっちが先なのかな
368デフォルトの名無しさん (ワッチョイ aebb-eplb)
2021/08/15(日) 04:44:19.93ID:Jy6PA5Os0 英語圏でもチャーだけどな
ググればすぐわかる
ググればすぐわかる
369デフォルトの名無しさん (アウアウウー Saa5-ZsKU)
2021/08/15(日) 06:15:17.61ID:FL52AdfHa370デフォルトの名無しさん (アウアウウー Saa5-ZsKU)
2021/08/15(日) 06:18:12.36ID:0d93Uofwa char siu
チャーシュー
チャーシュー
371デフォルトの名無しさん (アウアウウー Saa5-xe7r)
2021/08/15(日) 16:55:39.88ID:76TevYyAa372はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 463e-cJil)
2021/08/15(日) 17:59:18.88ID:oR5NZ4bd0373デフォルトの名無しさん (ワッチョイ aebb-eplb)
2021/08/15(日) 19:39:25.14ID:Jy6PA5Os0 >>371
英語設定でググってみるといいよ
チャー派とカー派がいてチャー派が優勢のように見える。
reddit見るとお前ガンダム見たことないんか?シャーーー!とかlisperが混乱するだろがってコメントがあってワロ
英語設定でググってみるといいよ
チャー派とカー派がいてチャー派が優勢のように見える。
reddit見るとお前ガンダム見たことないんか?シャーーー!とかlisperが混乱するだろがってコメントがあってワロ
374デフォルトの名無しさん (ワッチョイ 6eda-NTPF)
2021/08/15(日) 19:58:39.32ID:l+/QmNzh0 care派も結構いるっぽいが
375デフォルトの名無しさん (アウアウクー MMb1-9nCG)
2021/08/15(日) 21:05:49.36ID:g44nIVaSM プログラムを書くのに読み方なんて意味が通じればどっちでもいいやん
376デフォルトの名無しさん (ワッチョイ 4d36-pBez)
2021/08/16(月) 00:02:13.11ID:r0BCUeQy0 初心者です、stdio.hの保存場所が知りたいです
Visual Studio Communuty 2018を使っており、標準ライブラリはインクルードディレクトリに指定された場所にあるということでした
プロパティでインクルードディレクトリを確認したところ、以下のようになっていましたが意味が分かりません
$(VC_IncludePath);$(WindowsSDK_IncludePath);
変数になっているようですが、どこかで確認できるのでしょうか?
Visual Studio Communuty 2018を使っており、標準ライブラリはインクルードディレクトリに指定された場所にあるということでした
プロパティでインクルードディレクトリを確認したところ、以下のようになっていましたが意味が分かりません
$(VC_IncludePath);$(WindowsSDK_IncludePath);
変数になっているようですが、どこかで確認できるのでしょうか?
377デフォルトの名無しさん (アウアウウー Saa5-PlbL)
2021/08/16(月) 00:13:21.48ID:x3HJsFala 間違っていたらごめんなさい
その $() で囲まれた文字列をコマンドプロンプトから
echo %文字列%
として表示される文字列はどうでしょう
その $() で囲まれた文字列をコマンドプロンプトから
echo %文字列%
として表示される文字列はどうでしょう
378デフォルトの名無しさん (ワッチョイ 8101-pBez)
2021/08/16(月) 00:14:50.67ID:wg/zbZxl0 その値のところをクリックして<編集...>を選べば評価された値が見えると思う
その画面の右下の「マクロ>>」ってボタンを押せば使われてる変数の値も見える
上の構成がDebugかReleaseかで値が違う変数もあるけどIncludePathはたぶん同じ
2019で確認したから微妙に違うかもしれない
その画面の右下の「マクロ>>」ってボタンを押せば使われてる変数の値も見える
上の構成がDebugかReleaseかで値が違う変数もあるけどIncludePathはたぶん同じ
2019で確認したから微妙に違うかもしれない
379デフォルトの名無しさん (アウアウウー Saa5-PlbL)
2021/08/16(月) 00:19:13.32ID:x3HJsFala echo で確認する方法は、その環境下でなければ
なので、別にコマンドプロンプトを起動してではダメですね
なので、別にコマンドプロンプトを起動してではダメですね
380デフォルトの名無しさん (ワッチョイ 4d36-pBez)
2021/08/16(月) 00:21:12.34ID:r0BCUeQy0381デフォルトの名無しさん (アウアウウー Saa5-PlbL)
2021/08/16(月) 00:23:50.80ID:x3HJsFala そ
382デフォルトの名無しさん (ワッチョイ 3163-NTPF)
2021/08/16(月) 00:29:55.90ID:sQwoI9K70 VSインストールすると環境変数セットするバッチファイルが入って来たと思うが、今は違うのか?
古い知識で済まん
古い知識で済まん
383デフォルトの名無しさん (ワッチョイ 41e6-ipN5)
2021/08/16(月) 04:32:44.78ID:pMWrjH7B0 てすてす
384デフォルトの名無しさん (ワッチョイ 42ad-Iu++)
2021/08/16(月) 10:19:54.49ID:sZNsU9Vp0 すてすて
385デフォルトの名無しさん (エムゾネ FF62-/ojN)
2021/08/16(月) 14:57:58.88ID:Gh+OcB3lF 実は VisualStudio は初心者向けじゃない
386デフォルトの名無しさん (ワッチョイ e95f-/m/d)
2021/08/16(月) 20:10:17.02ID:BeGCPKkC0 visual studioが覇権取ってからプログラミングが嫌になりました・・・
プログラミングが嫌というかvisual studioの設定とか使い方とかそういうのを覚えるのが・・・
LSI C+メモ帳で良かったのに・・・
プログラミングが嫌というかvisual studioの設定とか使い方とかそういうのを覚えるのが・・・
LSI C+メモ帳で良かったのに・・・
387デフォルトの名無しさん (ワッチョイ 3163-NTPF)
2021/08/16(月) 20:17:22.96ID:sQwoI9K70 LSI C(試食版)は16ビットコンパイラでしかもSmodelしか作れないから
64ビットWindows環境で動かすのは無理じゃない?
64ビットWindows環境で動かすのは無理じゃない?
388デフォルトの名無しさん (ワッチョイ d2bd-IYZN)
2021/08/16(月) 20:37:48.81ID:4H+7uDzk0 ……Visual Studio Community 2018なんてあったっけ?
389デフォルトの名無しさん (ワッチョイ 2247-ipN5)
2021/08/16(月) 20:41:26.98ID:1MUZwyiI0 vs2019 と cuda の相性が悪かったが治ったのなら起こしてくだしあ
390デフォルトの名無しさん (ワッチョイ 4d36-pBez)
2021/08/16(月) 22:55:54.30ID:r0BCUeQy0 素朴な疑問でprintfでdouble型を表示させようとしたとき%lfでなく%fにする理由なんですが、
floatを引数とするとdouble型にキャストされるので、printfではfloat型もdouble型も同じ%fと記述すればいいことになっている
と言う理解で合ってますか?
floatを引数とするとdouble型にキャストされるので、printfではfloat型もdouble型も同じ%fと記述すればいいことになっている
と言う理解で合ってますか?
391デフォルトの名無しさん (ワッチョイ 49b0-jBWP)
2021/08/16(月) 23:08:54.14ID:GAZDNQn70 相性悪いって何かあったっけ?
392はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e23e-cJil)
2021/08/17(火) 03:49:27.19ID:yPn/BtRt0 >>390
あってる。
printf ではというか可変長引数では既定の実引数拡張のルールで float は double に拡張されるから区別しようがない。
よくわかってないやつが %lf って書いちゃうから C99 から仕様に入れることになったみたいな話だったはず。
(逆に言えばそれまでは無かった。)
でも引数に double を与えるつもりなら意味的にそれがわかるにこしたことはないので、
人間が読み書きする都合を考えるなら積極的に区別したほうがいいと思う。
あってる。
printf ではというか可変長引数では既定の実引数拡張のルールで float は double に拡張されるから区別しようがない。
よくわかってないやつが %lf って書いちゃうから C99 から仕様に入れることになったみたいな話だったはず。
(逆に言えばそれまでは無かった。)
でも引数に double を与えるつもりなら意味的にそれがわかるにこしたことはないので、
人間が読み書きする都合を考えるなら積極的に区別したほうがいいと思う。
393デフォルトの名無しさん (ワッチョイ 7145-/m/d)
2021/08/17(火) 05:49:50.95ID:bbuY4XG00 >>387
64で16bitモード使えないのは単なる嫌がらせ
技術的に本当はできるのに拒否してる
必要ならVM使うといい
過去バージョンは↓で入手できる
https://winworldpc.com/library/operating-systems
64で16bitモード使えないのは単なる嫌がらせ
技術的に本当はできるのに拒否してる
必要ならVM使うといい
過去バージョンは↓で入手できる
https://winworldpc.com/library/operating-systems
394ハノン ◆QZaw55cn4c
2021/08/17(火) 10:00:30.15395デフォルトの名無しさん (ワッチョイ 7145-/m/d)
2021/08/17(火) 10:22:58.26ID:bbuY4XG00396デフォルトの名無しさん (ガラプー KKd6-DrmD)
2021/08/17(火) 11:04:10.80ID:1ngtDSTVK397デフォルトの名無しさん (ワッチョイ 7145-/m/d)
2021/08/17(火) 11:14:12.12ID:bbuY4XG00 年代的に元々floatが標準のつもりだったんだろうな
398デフォルトの名無しさん (テテンテンテン MM26-VYeI)
2021/08/17(火) 11:56:57.33ID:4Ah+oX6mM 当たり前は時代と共に変わる
399デフォルトの名無しさん (ワッチョイ 42ad-Iu++)
2021/08/17(火) 16:52:28.09ID:5M+zf85m0 >>396
倍精度ってのを表したかったんだろうな。
倍精度ってのを表したかったんだろうな。
400デフォルトの名無しさん (ワッチョイ 49b0-jBWP)
2021/08/17(火) 21:48:20.20ID:G/OIjFk20401デフォルトの名無しさん (アウアウウー Saa5-PlbL)
2021/08/17(火) 22:05:20.16ID:SEkFORwja 計算自体は倍精度でやっていて、floatの場合結果を丸めてるの?
402デフォルトの名無しさん (ワッチョイ 4201-VYeI)
2021/08/17(火) 22:24:11.58ID:oC68rP2o0 そもそも
> 可変長引数では既定の実引数拡張のルールで float は double に拡張される
って言うのがよくわからん
普通にfloatはfloatのまま渡しゃいいじゃんと思うんだけどなんか理由あったのかな?
> 可変長引数では既定の実引数拡張のルールで float は double に拡張される
って言うのがよくわからん
普通にfloatはfloatのまま渡しゃいいじゃんと思うんだけどなんか理由あったのかな?
403はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e23e-cJil)
2021/08/17(火) 22:44:19.25ID:yPn/BtRt0 引数の受け渡しにスタックを使う場合でもレジスタを使う場合でも
ワードサイズより小さい型はどうせそのワードサイズに調整して積むことになるので切り詰める意味がない。
(ワードにたくさん情報を詰め込むことも出来るといえば出来るけどかえって非効率になる。)
だから int より小さい型を int に調整するというのはハードウェア的
な都合が反映されていると思う。
昔は浮動書数点演算ユニット (FPU) は CPU の外に持っているのが普通だったんだが
その時代でも FPU のレジスタは大きめなサイズを持っていた。
double が収まるレジスタがあるなら double で受け渡すほうが都合が良かったんだろう。
※ この場合の「ワード」は2バイトという意味ではなく各アーキテクチャにおける基本サイズという意味なので注意
ワードサイズより小さい型はどうせそのワードサイズに調整して積むことになるので切り詰める意味がない。
(ワードにたくさん情報を詰め込むことも出来るといえば出来るけどかえって非効率になる。)
だから int より小さい型を int に調整するというのはハードウェア的
な都合が反映されていると思う。
昔は浮動書数点演算ユニット (FPU) は CPU の外に持っているのが普通だったんだが
その時代でも FPU のレジスタは大きめなサイズを持っていた。
double が収まるレジスタがあるなら double で受け渡すほうが都合が良かったんだろう。
※ この場合の「ワード」は2バイトという意味ではなく各アーキテクチャにおける基本サイズという意味なので注意
404デフォルトの名無しさん (ワッチョイ 7145-/m/d)
2021/08/18(水) 09:07:55.01ID:a3KKdrJy0 ん、8087由来のサイズになってるのはlong doubleだろ
405デフォルトの名無しさん (ワッチョイ 46e7-/m/d)
2021/08/18(水) 09:53:36.78ID:AHN/ch/v0 long double って表現がもう頭悪いよね・・・
406デフォルトの名無しさん (ワッチョイ 7145-/m/d)
2021/08/18(水) 14:10:11.42ID:a3KKdrJy0 %lfはどう見てもlong floatだね
%dはint用にしちゃってるから仕方なかったのかな
%dはint用にしちゃってるから仕方なかったのかな
407デフォルトの名無しさん (ワッチョイ 4946-SBAK)
2021/08/18(水) 19:02:54.03ID:9oCYCOnk0 >>405
ダブロン って表現だとゲンが悪すぎるだろ・・
ダブロン って表現だとゲンが悪すぎるだろ・・
408ハノン ◆QZaw55cn4c
2021/08/18(水) 19:55:50.38409デフォルトの名無しさん (ワッチョイ 3163-NTPF)
2021/08/18(水) 20:09:35.86ID:Wv6HiLZZ0 符号部1ビット+指数部15ビット+仮数部64ビット
410デフォルトの名無しさん (ワッチョイ ff02-VfHF)
2021/08/22(日) 01:54:25.30ID:0Cz6ueFz0 Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
411デフォルトの名無しさん (ワッチョイ 9fda-I8u9)
2021/08/22(日) 11:26:19.76ID:D+A51yiS0 pythonを可読性高いという時点で眉唾だな・・・
412デフォルトの名無しさん (ワッチョイ ffe7-Awm0)
2021/08/23(月) 11:13:34.28ID:4N/X7GO90 char *b = "0123456";
printf("%x\n", 3[b]);
// 33
これって、どうしてこういう書き方 3[b] ができるんだっけか
シンタックスシュガーとかじゃなく、明確な理屈があって出来ちゃうんだよね?
printf("%x\n", 3[b]);
// 33
これって、どうしてこういう書き方 3[b] ができるんだっけか
シンタックスシュガーとかじゃなく、明確な理屈があって出来ちゃうんだよね?
413デフォルトの名無しさん (エムゾネ FF9f-tXhk)
2021/08/23(月) 11:39:17.23ID:JYwdk8yBF *(3 + b)
414デフォルトの名無しさん (ワッチョイ 7fad-WNkQ)
2021/08/23(月) 11:42:03.51ID:UaBHP8Yo0415デフォルトの名無しさん (ワッチョイ ffe7-Awm0)
2021/08/23(月) 11:52:16.18ID:4N/X7GO90416デフォルトの名無しさん (ワッチョイ 9fda-FcIJ)
2021/08/23(月) 22:51:00.15ID:qUWlnfUi0 標準でもそのまんまだなぁ
> A postfix expression followed by an expression in square brackets [] is a subscripted designation of an element of an array object.
> The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2))).
> Because of the conversion rules that apply to the binary + operator, if E1 is an array object (equivalently, a pointer to the initial element of an array object) and E2 is an integer, E1[E2] designates the E2-th element of E1 (counting from zero).
> A postfix expression followed by an expression in square brackets [] is a subscripted designation of an element of an array object.
> The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2))).
> Because of the conversion rules that apply to the binary + operator, if E1 is an array object (equivalently, a pointer to the initial element of an array object) and E2 is an integer, E1[E2] designates the E2-th element of E1 (counting from zero).
417デフォルトの名無しさん (ワッチョイ 9f63-FcIJ)
2021/08/23(月) 22:55:19.33ID:OjohHfKH0 余計なお世話になるが
printf("%x\n", 3["0123456"]);
これでもいいんだよな
printf("%x\n", 3["0123456"]);
これでもいいんだよな
419デフォルトの名無しさん (ワッチョイ ffe7-Awm0)
2021/08/24(火) 10:01:54.33ID:tBKv4I6S0 脱線するけど、そもそもCでこの書き方できたのか
printf("%x\n", "0123456"[3]);
なんかできないと思い込んでた。 Cはなんでもできるんだな
printf("%x\n", "0123456"[3]);
なんかできないと思い込んでた。 Cはなんでもできるんだな
420デフォルトの名無しさん (ワッチョイ 9f45-Awm0)
2021/08/24(火) 17:49:40.18ID:DexxKsi10 IOCCCの黎明期ならマウントとれたネタだね
今ドヤるやつはプークスクスされるだけ
今ドヤるやつはプークスクスされるだけ
421デフォルトの名無しさん (ワッチョイ 7f81-WQfa)
2021/08/24(火) 19:44:16.50ID:KCG/N/Sb0 stack領域で確保したポインタをfreeしたらどうなるんですか?
422デフォルトの名無しさん (テテンテンテン MM4f-9KvQ)
2021/08/24(火) 20:03:31.48ID:Y1wLIEKvM >>419
> printf("%x\n", 3["0123456"]);
はともかく
> printf("%x\n", "0123456"[3]);
は実用でもそこそこ使うだろ
4bitの数値を16進数に変換する時に
"0123456789abcdef"[i]
ってやるとかは定番
> printf("%x\n", 3["0123456"]);
はともかく
> printf("%x\n", "0123456"[3]);
は実用でもそこそこ使うだろ
4bitの数値を16進数に変換する時に
"0123456789abcdef"[i]
ってやるとかは定番
423デフォルトの名無しさん (テテンテンテン MM4f-9KvQ)
2021/08/24(火) 20:04:24.13ID:Y1wLIEKvM >>421
鼻から悪魔が出てくる
鼻から悪魔が出てくる
424デフォルトの名無しさん (ワッチョイ 7f81-WQfa)
2021/08/25(水) 01:30:07.26ID:6n+Di1sM0 >>423
どういうことですか?
どういうことですか?
425デフォルトの名無しさん (アウアウウー Sa63-wElo)
2021/08/25(水) 01:52:34.44ID:7J8MKXIfa >>421
酔ってるからかもしれないけど、質問の意味からして分からない
実装によるだろうけど、動的に確保されるオブジェクトはヒープに確保されるだろうし
黙ってれば確保したメモリへのアドレスを保持するポインタはスタックに置かれるし
実装によるけど
酔ってるからかもしれないけど、質問の意味からして分からない
実装によるだろうけど、動的に確保されるオブジェクトはヒープに確保されるだろうし
黙ってれば確保したメモリへのアドレスを保持するポインタはスタックに置かれるし
実装によるけど
426デフォルトの名無しさん (ワッチョイ 7fad-WNkQ)
2021/08/25(水) 02:58:06.66ID:kk6d2P3X0 >>422
定番って言えそうなほど使われているソースを見たことないなあ。
定番って言えそうなほど使われているソースを見たことないなあ。
427デフォルトの名無しさん (ワッチョイ 7fad-WNkQ)
2021/08/25(水) 03:01:55.29ID:kk6d2P3X0 >>421
alloca()でメモり確保した場合のことを言ってるの?だとすればfree()しちゃダメだよ。やってしまった場合にどうなるかは使っているライブラリによるんじゃないかな。そういう呼び出しを想定していないライブラリだと落ちるかも知れない。
alloca()でメモり確保した場合のことを言ってるの?だとすればfree()しちゃダメだよ。やってしまった場合にどうなるかは使っているライブラリによるんじゃないかな。そういう呼び出しを想定していないライブラリだと落ちるかも知れない。
428はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7f3e-T33Q)
2021/08/25(水) 03:30:51.31ID:BzERENYF0 >>424
未定義のこと。
C における未定義は何が起きても構わないことを意味する。
あるときネットニュース上でそれを説明するやりとりがあって、
あらゆることが起こりうるという例として鼻から悪魔が出てくる
ことも含まれるというような言い回しが使われた。
https://groups.google.com/g/comp.std.c/c/ycpVKxTZkgw/m/S2hHdTbv4d8J
それが定着して未定義のことを鼻から悪魔というのが通例になっている。
未定義のこと。
C における未定義は何が起きても構わないことを意味する。
あるときネットニュース上でそれを説明するやりとりがあって、
あらゆることが起こりうるという例として鼻から悪魔が出てくる
ことも含まれるというような言い回しが使われた。
https://groups.google.com/g/comp.std.c/c/ycpVKxTZkgw/m/S2hHdTbv4d8J
それが定着して未定義のことを鼻から悪魔というのが通例になっている。
429デフォルトの名無しさん (テテンテンテン MM4f-9KvQ)
2021/08/25(水) 05:56:16.97ID:oIlmdH3GM >>426
ちょっとググればすぐに出てくるぐらいには使われてる
char hex_from_nibble(unsigned char n){
return "0123456789ABCDEF"[n & 0xf];
}
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13162097918
ちょっとググればすぐに出てくるぐらいには使われてる
char hex_from_nibble(unsigned char n){
return "0123456789ABCDEF"[n & 0xf];
}
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13162097918
430デフォルトの名無しさん (エムゾネ FF9f-tXhk)
2021/08/25(水) 09:19:52.23ID:U8ZXR+0VF431デフォルトの名無しさん (ガラプー KK8f-qz4m)
2021/08/25(水) 09:57:31.74ID:U3t+QZRrK >>421
スタック…と言うかmalloc(calloc/realloc)で確保したポインタ以外をfreeすると何がおこるか判らない(鼻から悪魔)。
実際の話だと、大抵の実装ではmallocは確保した領域に管理情報を埋めて返し、freeはその管理情報を見て解放処理をする。この場合、管理情報がデタラメになるのでメモリアクセス違反でプログラムが落ちる事が多い。
スタック…と言うかmalloc(calloc/realloc)で確保したポインタ以外をfreeすると何がおこるか判らない(鼻から悪魔)。
実際の話だと、大抵の実装ではmallocは確保した領域に管理情報を埋めて返し、freeはその管理情報を見て解放処理をする。この場合、管理情報がデタラメになるのでメモリアクセス違反でプログラムが落ちる事が多い。
432デフォルトの名無しさん (ワッチョイ 9f45-Awm0)
2021/08/25(水) 10:00:41.38ID:VHSVWUHA0 freeは何もしないことも許される、なんて言って呼び出しそのものを否定するやついたな昔
433デフォルトの名無しさん (ワッチョイ 9f63-FcIJ)
2021/08/25(水) 11:31:20.70ID:hlr8Pa7o0 ほとんどの場合は、無人の荒野を爆撃するだけだろうが
いつかは住民が住んでいるところを攻撃するぞ
いつかは住民が住んでいるところを攻撃するぞ
434デフォルトの名無しさん (ワッチョイ 7f81-WQfa)
2021/08/25(水) 12:30:15.33ID:6n+Di1sM0 僕はc言語自体初心者だったのですが、stack領域で確保したポインタをfreeするというのは以下のコードを指すつもりで言ってました。
int a;
free(&a);
鼻から悪魔が出るというのは未定義動作になると言うのを言うんですね。また一つ勉強になりました。
int a;
free(&a);
鼻から悪魔が出るというのは未定義動作になると言うのを言うんですね。また一つ勉強になりました。
435デフォルトの名無しさん (ワッチョイ 9f63-FcIJ)
2021/08/25(水) 12:58:42.10ID:hlr8Pa7o0 ポインタでもないし、何をしたいかが分からん
この時空を破壊したいなら、もっと考えてからにして
この時空を破壊したいなら、もっと考えてからにして
436デフォルトの名無しさん (ワッチョイ ffe7-Awm0)
2021/08/25(水) 13:00:03.19ID:wz3i5qam0437デフォルトの名無しさん (ワッチョイ 7f81-WQfa)
2021/08/25(水) 13:41:27.53ID:6n+Di1sM0 >>435
ポインタとアドレス同じ意味で使ってます
ポインタとアドレス同じ意味で使ってます
438デフォルトの名無しさん (オッペケ Sr73-qjSG)
2021/08/25(水) 13:46:43.33ID:f+OmsRJCr >>434
ちなC++触りだすとスコープ{}内で宣言したものはスコープ出たところで
勝手に始末されるちゅー理屈で実装することも増えると思う。
でかい一時配列とかスタックに置きたくもないしいちいちfreeとかdeleteのこと考えたくないから。
変な所でreturnとかしたらfree忘れちゃう。C言語だとその辺は厳格にしないといけない。
あと、ローカル変数のアドレスをあまり気安く使ってると、そのうち関数抜けて廃棄された
アドレスを参照してしまうバグをだしちゃうかも。一度位は通る道かもね。
ちなC++触りだすとスコープ{}内で宣言したものはスコープ出たところで
勝手に始末されるちゅー理屈で実装することも増えると思う。
でかい一時配列とかスタックに置きたくもないしいちいちfreeとかdeleteのこと考えたくないから。
変な所でreturnとかしたらfree忘れちゃう。C言語だとその辺は厳格にしないといけない。
あと、ローカル変数のアドレスをあまり気安く使ってると、そのうち関数抜けて廃棄された
アドレスを参照してしまうバグをだしちゃうかも。一度位は通る道かもね。
439デフォルトの名無しさん (ワッチョイ 1f85-tXhk)
2021/08/25(水) 19:45:37.21ID:s4bO6YKI0 >>433
中國のロケットの落下騒ぎを思い出したわ
中國のロケットの落下騒ぎを思い出したわ
440デフォルトの名無しさん (ワッチョイ 9fb0-nscA)
2021/08/25(水) 22:01:22.70ID:ENQvEefU0441デフォルトの名無しさん (ワッチョイ 9f63-FcIJ)
2021/08/25(水) 22:22:45.99ID:hlr8Pa7o0 >>440
では、何をfreeしたのか、説明して
では、何をfreeしたのか、説明して
442デフォルトの名無しさん (ワッチョイ 7fbd-NTmZ)
2021/08/25(水) 22:46:23.25ID:SkXNk2uR0 ポインタはアドレスを格納する変数
&aはアドレスだが変数ではないのでポインタではない
&aはアドレスだが変数ではないのでポインタではない
443はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7f3e-T33Q)
2021/08/25(水) 23:25:02.44ID:/Q8zinJC0 >>442
いいえ。 ポインタ型の値がポインタです。 (See C99 6.2.5)
C の用語ではメモリ (ストレージ) を占めるものがはオブジェクトで、それを型で意味付けしたものを値 (value) と言います。
実体としては同じですがレイヤによって呼び方が変わる場合があり、アドレスとポインタの違いも同様のものと考えられます。
いいえ。 ポインタ型の値がポインタです。 (See C99 6.2.5)
C の用語ではメモリ (ストレージ) を占めるものがはオブジェクトで、それを型で意味付けしたものを値 (value) と言います。
実体としては同じですがレイヤによって呼び方が変わる場合があり、アドレスとポインタの違いも同様のものと考えられます。
444デフォルトの名無しさん (ワッチョイ ffe9-T33Q)
2021/08/25(水) 23:28:23.41ID:F2PvOiSs0 >>442
何年か前にも見た覚えのある言説だな。元は何だろう?
何年か前にも見た覚えのある言説だな。元は何だろう?
445デフォルトの名無しさん (ワッチョイ 1fbb-T33Q)
2021/08/26(木) 01:58:36.79ID:aNUIA15f0 int *p; // ポインタ変数またはポインタ
int a;
&a; // アドレスまたはポインタ
int b = &a; // bはアドレス値の入った整数
int *c = &a; // cはポインタ
こういうこと?
アドレスとポインタは明確に区別されてるの?
int a;
&a; // アドレスまたはポインタ
int b = &a; // bはアドレス値の入った整数
int *c = &a; // cはポインタ
こういうこと?
アドレスとポインタは明確に区別されてるの?
446デフォルトの名無しさん (ワッチョイ 9f63-FcIJ)
2021/08/26(木) 02:10:26.24ID:/WHSCxQr0 int a;
int *b;
b = &a;
&a = b;
int *b;
b = &a;
&a = b;
447デフォルトの名無しさん (ワッチョイ 1fbb-T33Q)
2021/08/26(木) 02:21:59.91ID:aNUIA15f0 >>446
なるほど?
なるほど?
448デフォルトの名無しさん (ワッチョイ 1fbb-T33Q)
2021/08/26(木) 02:37:50.30ID:aNUIA15f0 >6.5.3.2 アドレス及び間接演算子
>単項&演算子は,そのオペランドのアドレスを返す。オペランドが型“?型”をもっている場合,結果は,型“?型へのポインタ”をもつ。
だからアドレスとポインタどっちでも良いんじゃないの
>単項&演算子は,そのオペランドのアドレスを返す。オペランドが型“?型”をもっている場合,結果は,型“?型へのポインタ”をもつ。
だからアドレスとポインタどっちでも良いんじゃないの
449デフォルトの名無しさん (ワッチョイ 9f21-qjSG)
2021/08/26(木) 07:03:21.90ID:H9rsGF960 &aはint*型のアドレス値(右辺値)で、変数ではないから代入は出来ない。
言葉の厳密な定義は知らんが、自分はポインタは型に紐付いたアドレスと理解してる。
組み込みなんかで
uint32_t a = 0x4020000;
...
*(int*)a = 1;
とか書くけどa自体はただの整数値だしね。
言葉の厳密な定義は知らんが、自分はポインタは型に紐付いたアドレスと理解してる。
組み込みなんかで
uint32_t a = 0x4020000;
...
*(int*)a = 1;
とか書くけどa自体はただの整数値だしね。
450デフォルトの名無しさん (ワッチョイ ffe7-Awm0)
2021/08/26(木) 09:15:02.06ID:GExK9GsR0451デフォルトの名無しさん (ワッチョイ 9f45-Awm0)
2021/08/26(木) 09:25:24.33ID:IpfDe45b0 アドレスも年齢も表現の対象
ポインタとintが型の名前
ポインタとintが型の名前
452デフォルトの名無しさん (ワッチョイ 9f45-Awm0)
2021/08/26(木) 09:26:46.39ID:IpfDe45b0 ageMipoとioDirectionがアプリケーションハンガリアン
iMipoとpDirectionがシステムハンガリアン
iMipoとpDirectionがシステムハンガリアン
453デフォルトの名無しさん (ワッチョイ 7f81-WQfa)
2021/08/26(木) 14:51:44.03ID:BSY6c8/C0 >>441
みればわかりますよね?
みればわかりますよね?
454デフォルトの名無しさん (ワッチョイ 7f3e-T33Q)
2021/08/26(木) 16:05:40.12ID:oVdr9HnU0 言語仕様の文面の上ではアドレスとポインタの区別ははっきりしないので同一視してもかまわないとは思う。
少なくともポインタという用語がポインタ型の変数を指すという主張には賛成できないというだけ。
ただ、言語仕様の範囲内ではそれでいいんだけども言語仕様の範囲外というか実装上の理屈では区別している場合がある。
言語仕様上はポインタの比較は同一の配列 (または集成体オブジェクト) 内の要素を比較した場合や
ヌルポインタとの比較についてしか定義されておらず、それ以外は未定義であると明記 (C99 6.5.8 参照) されていて
関連のない場所のポインタの比較であることが静的に把握できるときは定数に置き換える最適化が適用されることもあるんで
アドレスを比較した通りの結果になるとは限らない。
https://wandbox.org/permlink/SqW5wzZM3fD912Nh
そんなわけでポインタが素朴なアドレス (実体が整数値) だと思っていると思わぬ結果を生むことも有る。
少なくともポインタという用語がポインタ型の変数を指すという主張には賛成できないというだけ。
ただ、言語仕様の範囲内ではそれでいいんだけども言語仕様の範囲外というか実装上の理屈では区別している場合がある。
言語仕様上はポインタの比較は同一の配列 (または集成体オブジェクト) 内の要素を比較した場合や
ヌルポインタとの比較についてしか定義されておらず、それ以外は未定義であると明記 (C99 6.5.8 参照) されていて
関連のない場所のポインタの比較であることが静的に把握できるときは定数に置き換える最適化が適用されることもあるんで
アドレスを比較した通りの結果になるとは限らない。
https://wandbox.org/permlink/SqW5wzZM3fD912Nh
そんなわけでポインタが素朴なアドレス (実体が整数値) だと思っていると思わぬ結果を生むことも有る。
455デフォルトの名無しさん (ワッチョイ 9f45-Awm0)
2021/08/26(木) 16:26:17.74ID:IpfDe45b0 気持ちだけは、俺も昔そう思いたかったことがあるけど
JIS X3010ではそうなっていないので、その気持ちはきっぱり捨てた
JIS X3010ではそうなっていないので、その気持ちはきっぱり捨てた
456デフォルトの名無しさん (ワッチョイ ffe7-Awm0)
2021/08/26(木) 16:56:32.08ID:GExK9GsR0 int a; のときに &a+1 とかやると sizeof(int) 進むのね!
マジかよ知らなかった!
じゃあこの &a はほぼポインタだと思っていいのかな? いいの?
マジかよ知らなかった!
じゃあこの &a はほぼポインタだと思っていいのかな? いいの?
457デフォルトの名無しさん (ワッチョイ 9f45-Awm0)
2021/08/26(木) 17:01:04.55ID:IpfDe45b0 「ほぼ」じゃなく明白にポインタ
458はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7f3e-T33Q)
2021/08/26(木) 17:09:18.58ID:oVdr9HnU0459デフォルトの名無しさん (ラクッペペ MM4f-2CIX)
2021/08/26(木) 18:57:41.72ID:B7a9vIltM aはint型の変数
&aは変数aをアドレス演算子&で評価した値
得られた値の型はintへのポインタ型int*
&aは変数aをアドレス演算子&で評価した値
得られた値の型はintへのポインタ型int*
460デフォルトの名無しさん (オッペケ Sr73-qjSG)
2021/08/26(木) 19:23:18.52ID:2RMrl6dxr >>456
例から少し外れるけど*(&a[0])に対して*(&a[0]+1)がおかしな場所指すと嫌だしな。
例から少し外れるけど*(&a[0])に対して*(&a[0]+1)がおかしな場所指すと嫌だしな。
461デフォルトの名無しさん (ワッチョイ 1fbb-T33Q)
2021/08/26(木) 19:47:54.06ID:aNUIA15f0 ポインタ型の変数→ポインタ、ポインタ変数
ポインタ型の値→ポインタ、アドレス
アドレス演算子の結果→ポインタ、アドレス
こういうことか
ポインタ型の値→ポインタ、アドレス
アドレス演算子の結果→ポインタ、アドレス
こういうことか
462デフォルトの名無しさん (ワッチョイ 9f01-Awm0)
2021/08/26(木) 22:07:08.65ID:cHqKnQ440 そして配列 int a[5] から a は何者? 引数に渡すとどーなる? という深淵な所へ
463デフォルトの名無しさん (ワッチョイ 5145-Ctl7)
2021/08/27(金) 07:17:43.92ID:5AM8fV7q0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★4 [蚤の市★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★5 [七波羅探題★]
- 【速報】 米トランプ政権声明 「中国が台湾を奪おうとする、いかなる試みも阻止する」 中国「レッドラインだ」 ★2 [お断り★]
- 元プロ野球選手・堂上隼人(43)を20代女性2人へのわいせつ未遂容疑で8回目の逮捕…これまでの被害者は10代・20代の女性11人に [Anonymous★]
- 【高校野球】なぜ『7回制』は反対多数でも止まらないか… 高野連が「全員の命」守るために貫く伝統より改革の姿勢 [冬月記者★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 日本人が再び飲食店で働くようになるために必要なことってなんだと思う? [663277603]
- 【高市悲報】自衛隊「実は事前に現場海域で中国軍から空母での発着訓練をすると通告がありました」え…?😨😨 [931948549]
- 【高市速報】中国「このままだと日本が先制攻撃してくる」 [583597859]
- AI「その画像AIだぞ」AIぼく「そうなんだ助かる」
- 【悲報】山里亮太(南海キャンディーズ)さん [329329848]
- 【なにここ】🏡👊😅👊🏡【すごいなこれ‼】
