21/05/19 02:46:32.09 iywlut5a.net
糸冬
3:デフォルトの名無しさん
21/05/19 07:05:58.55 arAgfqcT.net
#include<stdio.h>
void funcB(void)
{
int b = 20;
printf("b-address: %ld\n", (long)&b);
}
void funcA(void)
{
int a = 10;
printf("a-address: %ld\n", (long)&a);
funcB();
}
int main(void)
{
funcA();
return 0;
}
(1)変数aとbはメモリ内の特に何という領域に確保されますか。
(2)変数aとbはどちらのほうがより小さい番地にメモリが確保されましたか。
(3)(2)から(1)の領域は前と後ろのどちらの方向へ向かって利用されていくと推測できますか。
スッキリ分かるCの問題なのですが
これの(3)が意味分からないので解説してほしいです
(2)も何でそうなるのかよく分からんですが、。
4:デフォルトの名無しさん
21/05/19 07:34:36.87 dkgz9ZJm.net
無理しないでPythonでもやっとけ
5:デフォルトの名無しさん
21/05/19 11:41:19.87 psqzmlBB.net
&p
6:デフォルトの名無しさん
21/05/19 11:41:41.86 psqzmlBB.net
もとい
%p
7:デフォルトの名無しさん
21/05/19 11:51:21.02 AeilwxT4.net
どっかの宿題か
URLリンク(brain.cc.kogakuin.ac.jp)
URLリンク(www.atmarkit.co.jp)
URLリンク(qiita.com)
URLリンク(qiita.com)
8:デフォルトの名無しさん
21/05/19 16:59:00.40 ZyjXFBY0.net
>>4
pythonでもid(obj)で番地見れるからおんなじだよ
変なのpythonスレに誘導するような言動は謹んで頂きたい
9:はちみつ餃子
21/05/19 17:43:06.29 ONEwpJm5.net
>>3
(1) 一般にはスタックと呼ばれるが言語仕様にはそのような規定はないので、
実行環境によっては違うこともあるかもね。
(言語仕様ではオブジェクトの寿命が決められているだけ。)
(2) 主流の CPU では b の方が小さい番地の可能性が高い。
(3) スタックはメモリの上位番地から下位番地に向かって使われる。
なんでそうなるかっていうのは結局のところそう決めたから
そうなっているってだけなんで、逆でもかまわないし、
実際に逆にデザインされたアーキテクチャは存在する。
URLリンク(ja.wikipedia.org)
これらはコンピュータアーキテクチャの話。
言語の仕様とそれがどのように実装されているか (機械語を生成するか) は別物なんで、
そこらへんのレイヤを区別して考えないとわけわからんと思う。
10:デフォルトの名無しさん
21/05/19 18:47:16.00 SmvgsauD.net
>>9
ありがとうございます!
本に書いてない内容だったのでスッキリしました。
11:デフォルトの名無しさん
21/06/09 14:13:39.99 3Qpbsqp/.net
strstr で文字列を検索出来ますが'\0'が含まれているともちろん正常に動作しませんね
メモリ中の'\0'を含むバイトパターンの現れる位置を調べる関数は何ていう名前?
12:はちみつ餃子
21/06/09 16:35:20.50 Ih94CWHU.net
>>11
標準には無い。 POSIX にも無い。
glibc には memmem があるので場合によってはそれが使えることもあるかもね。
13:デフォルトの名無しさん
21/06/10 10:48:32.40 ZbfFyHii.net
memchr を使って memmem 相当の関数を造りました
ありがとうございました
ところで memmem の引数や戻り値ってどうして void * なんですか?
char * になってないと使いにくくないですか?
memory 用だからですか?
void * の場合 size_t が各要素の size の倍数なのか char の size の倍数なのか
特別考慮してくれる訳でもないですよね?
14:はちみつ餃子
21/06/10 14:11:49.95 MOYAWABe.net
>>13
> memory 用だからですか?
そう。 バイト列を扱う場合というのは色んな型のメモリブロックである可能性がある。
`void*` の特徴として、他のポインタとの間で暗黙の型変換の対象になるという特別扱いがある。
(C++ ではこの特徴は廃止されているので注意!)
だから
int a=114514;
unsigned char b=0xbf;
memmem(&a, sizeof(a), &b, 1);
といったように何のポインタを渡した場合でも型が違うとかいったエラーにはならない。
いちいちキャストしなくてよいから楽だからこうなってる。
15:はちみつ餃子
21/06/10 14:20:26.59 MOYAWABe.net
ちょっと間違えた。
C++ でも void* への暗黙の型変換はアリだけど
void* からの暗黙の型変換はないんだった。
16:デフォルトの名無しさん
21/06/11 16:56:51.54 hP01Bt9y.net
環境
unix系でxterm系のコンソール
less vi emacs等の
現在のプロンプト位置でプログラムを実行し(全画面表示し)終了すると
元のプロンプト位置(の次の行)に戻ってくる処理をできる限りの低レベルで知りたい
例えば
3行目でvi起動
編集
終了
プロンプトが4行目に復帰する
起動時のコマンドが直上にある状態
エスケープシーケンスでのクリアは内部的に
エコーしないで改行してるだけ?なのかそのまま空行が出来てしまう
17:デフォルトの名無しさん
21/06/20 10:08:07.54 vSSpHRy4.net
char a[4]; で確保したときって
strncpy(a, "abc", sizeof(a)); で良いんですか?
char a[4+1]; で確保する書き方もあれば
strncpy(a, "abc", sizeof(a) - 1); で少なめに指定する書き方もあるようですが
どちらが一般的ですか?
strncpy(a, "abcd", sizeof(a)); ならメモリ壊れますか?
18:デフォルトの名無しさん
21/06/20 18:24:48.63 a10qQPc9.net
char s[4]
strncpy(a, "abcd", sizeof(s));
はnul文字がコピーされないし
strncpy(a, "abc", sizoef(s)-1);
もnul文字がコピーされない
唯一動作するのは
strncpy(a, "abc", sizeof(s));
だがこれも abc が abcd になったらnul文字がコピーされなくなる
結論:strncpyは使うな
19:デフォルトの名無しさん
21/06/20 19:07:42.24 Q3V/e/tw.net
×使うな
◯仕様を理解して適切な場面で適切に使え
20:デフォルトの名無しさん
21/06/21 00:42:00.03 zJyyyGxF.net
正直標準ライブラリは諦めた方がいいと思うんだが
安全な文字列や数値型ライブラリはあるけど、特にどれがメジャーというわけでもないから、チームでやると最大公約数の標準ライブラリ使わざるを得ないっていう
21:デフォルトの名無しさん
21/06/26 05:41:35.82 64gC9b2h.net
>>16
printf("\e[?1049h"); // これで代替スクリーンバッファを有効にする
printf("\e[?1049l"); // これで代替スクリーンバッファを無効にする
22:デフォルトの名無しさん
21/06/29 14:18:16.44 q4QzgdjF.net
default:
URLリンク(www.mbs.jp)
■「日本が財政破綻する確率は100%」と大前研一氏。
私に言わせれば、税金を払える生産年齢人口が減り続けている以上、破綻確率は「100%」である。
今の日本は、いわば“裸の王様”のようなもので、すでに国の財政は破綻している状態だから、いつ国債が暴落して債務不履行になってもおかしくない。
ただ、それは1年後かもしれないし、10年後かもしれない、という話なのである。
そういう事態が起きないように財政運営戦略を作っていくのが、国を預かる為政者がやるべきことだ。
ところが日本は、日本銀行が「異次元金融緩和」を8年以上も継続して財務省が紙幣を刷りまくり、大量発行する国債の消化資金を民間金融機関に提供してきた。
そして、その国債を日銀が民間金融機関から買い取って自ら貯め込み、“禁じ手”とされている事実上の財政ファイナンス(中央銀行が通貨を発行して国債を直接引き受けること)を続けている。
23:デフォルトの名無しさん
21/06/29 14:18:32.64 q4QzgdjF.net
FRBやECBも日銀と同じように金融緩和を行なっているが、むしろ日銀を先行指標として注視している。
一方、日本人の多くは、自分は国債と関係ないと思っている。
だが実際は、郵便貯金や銀行預金が金融機関を通じて国債に流れ、さらに日銀とGPIFという「2頭の鯨」が国債と株を爆買いしている。
つまり、個人金融資産は国債に化け、年金積立金も国債と株に形を変えているわけで、政府が財政破綻したら国民も一蓮托生なのだ。
だが、今の日本は政治家に政府債務に対する危機感がなく、今後も少子化と生産年齢人口の減少が続く。GAFAMのような巨大IT企業もなければ、アメリカや中国などで続々と誕生しているユニコーンも全く出てこない。このような状況では、巨額の政府債務を返せるわけがない。
では、国民はどうすればよいのか?
資金に余裕があれば、政府が財政破綻しても影響が少ない「不動産」や「金」を買っておいたほうがよいだろう。
利息が付く預貯金は元本1000万円までとその利息しか保護されないし、「株」や「投資信託」や「債券」も国が破綻すれば「国債」と同じく紙屑同然になるからだ。
ただし、最も有効な対策は、自分に投資して世界のどこに行っても稼げる人間になることだ。
もし日本が破綻したとしても、世界のどこかに繁栄しているところはあるはずだから、そこで稼げる力を磨いておくことが唯一の安全・安心・有望な投資先なのである。
24:デフォルトの名無しさん
21/07/05 11:47:38.56 c503ASju.net
4899774451
4899775067
4046019557
489977463X
25:デフォルトの名無しさん
21/09/12 04:36:58.26 a7tYNi4V.net
#include<stdio.h>
#include<string.h>
int main()
{
char str1[] = "Pointers are fun to use.";
char str2[80], * p1, * p2;
p1 = str1 + strlen(str1) - 1;
p2 = str2;
while (p1 >= str1)
*p2++ = *p1--;
*p2 = '\0';
printf("%s %s", str1, str2);
}
26:デフォルトの名無しさん
21/09/12 04:40:02.79 a7tYNi4V.net
p1 = str1 + strlen(str1) - 1;の部分と*p2++ = *p1--;この部分の意味がよく分かってない可能性が高いので解説してほしいです
str1の先頭アドレス+str1の文字数-1…でつまり何処をさしてるのでしょうか?
p1 >= str1は先頭アドレスより大きい間はって意味ですか?
27:デフォルトの名無しさん
21/09/12 05:25:12.94 cHe5vqGk.net
>str1の先頭アドレス+str1の文字数-1…でつまり何処をさしてるのでしょうか?
str1の最後の文字(0終端の一個前)
>p1 >= str1は先頭アドレスより大きい間はって意味ですか?
惜しい
「より大きい」ではなく「以上」、=があるから
VisualStudio等のIDEのデバッガでステップ実行して、
各変数の変化・ポインタの指す先を見てればすぐわかるよ
28:デフォルトの名無しさん
21/09/12 07:15:26.26 jZMYjdNi.net
*p2++ = *p1--
こういのは、意味が分からないしバグるから、MISRA-C で禁止している
Ruby には、++/-- 演算子はない。
Go では単独文扱いで、他の式と組み合わせることは出来ない
MISRA-C でも同様
29:デフォルトの名無しさん
21/09/12 09:32:13.18 x3+6FKDq.net
>意味が分からないしバグる
馬鹿自慢乙
30:デフォルトの名無しさん
21/09/12 19:32:07.65 0tQ1ubt9.net
*p2++=*p1--
これは参照してるオブジェクトの値に化けてからアドレスを進めてるんですね。
なんとなく分かりました。ありがとうございます!
>>p1 = str1 + strlen(str1) - 1;
ここがなんかモヤモヤするんですけど
数字で表すとどんな感じになってるか教えてほしいです。お願いします。
31:蟻人間
21/09/12 19:38:22.89 G4gOb8CM.net
str1が文字列の戦闘アドレスを刺している。それに文字列の長さマイナスいちを足すと文字列の最後の文字へのアドレスが得られる。
32:デフォルトの名無しさん
21/09/12 20:18:52.41 0tQ1ubt9.net
>>31
0+25-1って感じでしょうか?今回のケースの場合
33:蟻人間
21/09/12 20:37:03.69 G4gOb8CM.net
>>32
Visual C++を使ってるならデバッグ厨二、ウォッチ死期で実際に確認で切るはずだ。
34:Mb
21/09/12 20:42:24.21 eZoXy3gP.net
C言語というのは、unix の記述言語としてスタートした言語という経緯があって、
システム記述言語だから「基本的になんでもあり」みたいな危険な言語では
あるのですよ。
それを踏まえて向かいあうんだったら、ニモニックとかアセンブラとか
マクロアセンブラとか、そのあたりまで含めて勉強してほしいと思う。
C++ だって、C に一皮被せただけのマクロ
35:言語だしね。 そこは、アセンブラとの関係まで含めて、勉強しておくといいかもしれない。 ツー手も、昨今の言語だと、「そういうところは気にしなくていい」というのが 潮流ではあるんだけどね。
36:デフォルトの名無しさん
21/09/12 20:54:09.14 0tQ1ubt9.net
>>33
すいませんVCステップイン実行のやり方調べときます。
ありがとうございました。
アセンブラも覚えてみたいんですがCよりさらに難しそうなので…
37:はちみつ餃子
21/09/13 00:44:43.40 b2LY5t5P.net
アセンブラの詳細を理解する必要はないんだけれど、
C で書いたものがどういう機械語に対応付けられているのかおおよそにでも
知っておくと C の仕様が腑に落ちることは結構あるとは思う。
(現代的なコンパイラは超強力な最適化があるので一対一に対応付けられるようなもんではなくなってしまっているけど……。)
38:デフォルトの名無しさん
21/09/15 10:15:40.95 v8RKbjHW.net
>>9
亀だけど、マイコン触ってるとスタック上から、下からはグローバル変数など固定配置のメモリ、
その上にヒープまたはそれに類するものがスタック間際までって割当になっててなるほどって思った。
スタックが伸びすぎても下がそこまで使ってなければぶっ飛ぶこともない的な。
スタックオーバーフローの割り込みとかありますしデバッガで様子はわかりますから気にすべきですが。
39:デフォルトの名無しさん
21/09/15 10:28:04.04 JucPjPcF.net
>>37
むかーし買った秋月のH8キットだったかな
ペラ1枚の説明書しかなかったけどちゃんとメモリマップは載っていてなるほどそういうことか、って思った
40:デフォルトの名無しさん
21/09/17 20:49:49.30 inv44Tua.net
ラズパイ pico \500
41:デフォルトの名無しさん
21/09/18 08:22:38.19 bA/qQPAi.net
STM32
42:デフォルトの名無しさん
21/09/22 02:00:31.84 T3iMh7Ht.net
char p[]="12345";
char *p="12345";
const char *p="12345";
先生、この違いをおしえてください。
43:はちみつ餃子
21/09/22 04:32:30.60 1hd+XsHu.net
>>41
char p[]="12345"; は
char p[6]; としたのと同じように領域が確保されてその内容が "12345" で初期化される。
たとえば p[2]=6; といったように内容を書き換えていい。
char *p="12345"; は
どこかの領域に "12345" という内容の文字列が存在して
p はそれを「指す」という状態。
文字列リテラルは書き換えてはいけない (書き換えたらその結果がどうなるかは保証されない)
というルールなので p[2]=6; というように書き換えるのは (型システム的に禁止されないにもかかわらず!) やるべきではない。
三つの例の内でこれが一番クソな仕様。
(余談だが現在の C++ では文字列リテラルは const 付きなので const を剥がして変数に代入することは出来ないように型システム的に保護されている)
const char *p="12345"; は char *p="12345"; と理屈は同じだが、
p が指している領域を書き換えることは (型システム的に) 出来ない。
44:デフォルトの名無しさん
21/09/22 10:30:17.08 T3iMh7Ht.net
ロボット制御に使いたいんですが、
アドレスaのchar領域cのnビット目(0-7)をon/offするマクロはどう書いたらいいですか?
関数ではなくマクロにしたいです。
#define BitOn(a,c,n) ???????
#define BitOff(a,c,n) ???????
45:デフォルトの名無しさん
21/09/22 10:51:34.30 jJoskI2c.net
>>43
とりあえず自分で書いたやつがどうなるのか出してほしいなぁ。
a はアドレス n はビット位置っていうのはわかるんだけどだ c は何の指定なの?
46:デフォルトの名無しさん
21/09/22 12:09:08.97 T3iMh7Ht.net
>>44
ad1バイトのcharです
47:デフォルトの名無しさん
21/09/22 12:10:01.22 T3iMh7Ht.net
aで指定される1バイトのcharです
48:デフォルトの名無しさん
21/09/22 12:37:28.88 T3iMh7Ht.net
1バイト限定にすればcなしでもいいですね。
49:デフォルトの名無しさん
21/09/22 12:48:28.66 jJoskI2c.net
>>47
やっぱそうだよね。
unsigned char ) ~ * << |= ( 1 &=
パーツを教えてやるよ。あとは自分で考えな。
50:デフォルトの名無しさん
21/09/22 15:58:45.17 KzVGjGnL.net
そんなにたくさんパーツいらんやろ
51:デフォルトの名無しさん
21/09/22 16:10:13.68 jJoskI2c.net
>>49
ん?要らないのどれ?
52:デフォルトの名無しさん
21/09/22 18:02:02.01 T3iMh7Ht.net
すみません、質問した立場でアレですが、|=と&=は要らないと思いますw
53:デフォルトの名無しさん
21/09/22 19:14:02.21 jJoskI2c.net
>>51
そうなのか。気になるから解決してたら結果教えて。
54:デフォルトの名無しさん
21/09/22 19:37:07.36 u8cZI69m.net
&、| なしか、興味あるな…
55:デフォルトの名無しさん
21/09/23 16:53:43.78 lZOUN/j/.net
漏れはヘタレだから、ビットフィールド使ってRAM上で更新してバイト単位でポートに書けば良いやなんて考えちゃう。
56:デフォルトの名無しさん
21/09/23 17:55:47.84 T47aXDe3.net
>>51
なぜそう思ったw
57:デフォルトの名無しさん
21/09/23 18:30:20.38 KLbp/g+2.net
上位ワード下位ワードを取り出すって意味がよくわからないのですが
int main()
{
int a=77778888;
}
とあったら7777が上位ワードって事でしょうか?
58:蟻人間
21/09/23 18:45:44.45 WyFAZLWz.net
>>56
それは10進だから、まずはウィンドウズのプログラマ電卓で16進数に直して。
59:デフォルトの名無しさん
21/09/23 19:09:52.18 KLbp/g+2.net
>>57
4A2 CFC8
となりました。あんまりWORDって意味を分かってないんですが
アドレスとかの事じゃなくて符号なしshortの生の数値って意味と捉えていいんでしょうか?
60:デフォルトの名無しさん
21/09/23 19:29:25.98 h/5qm19B.net
>>58
コンピュータの中のデータはすべてビット(0か1)の集まり
int は32ビットだったり16ビットだったりするが、とにかく0や1がいくつもならべてある
だけだ。
表示するのに、0111100010111101 とかだと長くてわかりづらい。
それを手短にわかりやすく表現しようと 4ビットづつまとめて表示したのが16進数
61:デフォルトの名無しさん
21/09/23 20:15:26.01 KLbp/g+2.net
>>59
なるほど。でも取り出すって意味がよくわからないです
ROWORDとHIWORDって関数は何をしてるんでしょうか
62:蟻人間
21/09/23 20:25:44.38 WyFAZLWz.net
>>60
LOWORD/HIWORDは、ビットシフトと型キャストをしている。Visual C++なら定義を確認できるはずだ。
63:デフォルトの名無しさん
21/09/23 21:05:22.52 KLbp/g+2.net
>>>61
難しいのでまた型サイズやビット演算復習してからWIN32やってみます。。
解答ありがとうございました。
64:デフォルトの名無しさん
21/09/24 08:02:57.39 eotJkoo2.net
#define BitOn(a,c,n) ( a[c] |= 1<<c )
#define BitOff(a,c,n) ( a[c] &= ~(1<<c) )
65:デフォルトの名無しさん
21/09/24 08:06:02.22 eotJkoo2.net
間違えた
#define BitOn(a,c,n) ( a[c] |= 0x01<<n )
#define BitOff(a,c,n) ( a[c] &= ~(0x01<<n) )
よく使うよ
66:デフォルトの名無しさん
21/09/24 08:12:56.68 eotJkoo2.net
8ビット=1バイト
1ワード=2バイト=16ビット
32ビットCPUなら、通常int は32ビットで2ワード。
67:デフォルトの名無しさん
21/09/24 14:39:54.44 6iUyOY+3.net
CPUがBEかLEか判定するのに使うマクロを
#defineで描くとどんなのがありますか
68:はちみつ餃子
21/09/24 15:04:20.65 hNucDJal.net
>>66
完全に仕様の範囲内かつ人が一切のヒントを与えずに結果が定数式になる形で自動判定するのはたぶん無理だと思う。
69:デフォルトの名無しさん
21/09/24 15:43:32.44 zyC2bCW7.net
#define LE ( (1&0x00000001)!=0)?true:false)
#define BE ( (1&0x01000000)!=0)?true:false)
70:デフォルトの名無しさん
21/09/24 15:47:22.20 U2st4CQ0.net
>>66
そんなこと考えるより環境のエンディアンに依存しないコードの書き方を学んだほうが良い。
71:デフォルトの名無しさん
21/09/24 15:55:16.30 6iUyOY+3.net
htonsですか?ωωω
72:デフォルトの名無しさん
21/09/24 21:07:09.60 naX2jA4f.net
?true:false
って、意味あるの?
73:デフォルトの名無しさん
21/09/24 22:00:46.33 eotJkoo2.net
意味ないよ
74:デフォルトの名無しさん
21/09/24 22:25:06.12 Dq17+3pv.net
gcc拡張なら
#define LE ({ int a = 1; ((const char *)&a)[0]; })
うごくかどうかはしらん
75:デフォルトの名無しさん
21/09/25 11:13:09.39 lBxoEpbF.net
!=0 って意味あるの?
76:はちみつ餃子
21/09/25 11:44:02.46 ToKIzbmV.net
>>74
有るよ。
77:デフォルトの名無しさん
21/09/26 21:10:08.57 0u8JLN98.net
!!って意味あるの?
78:デフォルトの名無しさん
21/09/27 00:30:15.47 qCKTTnQF.net
意味なくもないよ。
79:デフォルトの名無しさん
21/09/27 01:12:22.69 lw6R4pVu.net
!!は静的解析やコンパイラの警告黙らせる時に使える場合もあるよ
80:デフォルトの名無しさん
21/10/25 12:19:02.96 hesMamgg.net
char a[3]とした場合 aとa[0]は同じ←分かる
struct A a[3]とした場合 aとa[0]は違うんか?
81:デフォルトの名無しさん
21/10/25 12:33:40.14 Rm/sO20O.net
>>79
aが配列でa[0]はその先頭要素。これらは同じじゃないよ。
この関係はchar a[3]でもstruct A a[3]でも同じだけど。
82:デフォルトの名無しさん
21/10/25 12:37:22.98 vmRZrQEp.net
同じじゃない
83:デフォルトの名無しさん
21/10/25 13:34:18.40 dRHq7DJG.net
「*a と a[0] は同じ」あるいは「a と &a[0] は同じ」と言いたかったのかな?
a の型はあくまで配列型、つまりこの場合は char[3] という型を持つ。
ただし配列が式中に現れた場合には配列の先頭要素を指すポインタに型変換するという規則によって
a と書いたら型 char* の値として解釈される。
先頭要素を指していることになるので a==&a[0] が満たされる。
で、この a[0] という表記もクセモノで、定義上はポインタ演算の構文糖であるという扱いになっている。
a[0] とは *(a+0) のこと。
&a[0] は &*(a+0) と同じということになるんだが、
演算子 & のオペランドが * の適用結果であるときはどちらの適用も無かったことになるというルールがあるので
&*(a+0) から &* は消去されて a+0 が残り、 0 を足しても結果は変わらないからこれも消去すると a が残る。
故に &a[0] == a
84:デフォルトの名無しさん
21/10/26 03:12:03.00 7iLVX7OB.net
VisualStudioでWin32APIの入門したいんですが
どのプロジェクトテンプレートを使えば良いのでしょうか?
85:デフォルトの名無しさん
21/10/26 15:39:42.99 4xSLwudN.net
Console Application
86:デフォルトの名無しさん
21/11/10 17:51:26.04 TeMjyUmY.net
if elseから学びたいのですが、余計な習っていない文がついたサイトばかり出てきます。
どこを見ればいいのでしょうか
87:デフォルトの名無しさん
21/11/10 19:04:16.39 TeMjyUmY.net
この際、本でもいいです。買います。
88:蟻人間
21/11/10 19:05:31.96 Ibdkkh+M.net
普通にリファレンスを読めば?
89:デフォルトの名無しさん
21/11/10 19:45:30.62 TeMjyUmY.net
出来が悪すぎて
90:蟻人間
21/11/10 19:50:39.71 Ibdkkh+M.net
おむつ? おつむ?
91:デフォルトの名無しさん
21/11/11 18:53:34.61 N0+2xiNh.net
今、リファレンスなんてまともなの売ってない
頼んでもいない文が山盛りついていて、一からやりたい奴は苦労している
とほほのhtmlみたいなのは売ってないんだよ
92:デフォルトの名無しさん
21/11/11 18:54:29.97 N0+2xiNh.net
つまりリファレンス足り得てない本ばっか
いま、プログラムを始めるのは独学では不可能と言ってもいい
93:デフォルトの名無しさん
21/11/11 18:57:09.08 N0+2xiNh.net
ちなみにオクにも出なくなったので手に入らない
94:デフォルトの名無しさん
21/11/11 18:58:20.42 N0+2xiNh.net
分かりづらい言い方しなければ、今はif elseから始める本は売ってない
95:蟻人間
21/11/11 19:02:41.41 CgY0hHY1.net
紙のリファレンスを読むという発想で生き残れるとは思えない。そこはもうデジタルファイルかウェブだよ。
96:蟻人間
21/11/11 19:07:22.97 CgY0hHY1.net
ほれ
URLリンク(cpprefjp.github.io)
URLリンク(en.cppreference.com)
97:蟻人間
21/11/11 19:16:03.47 CgY0hHY1.net
君等の政府を見てみよ。教科書すらデジタル化できない。日本語入力の標準化すらままならない。紙ベース、電話ベースの考えなんかデジタル化で吹っ飛ぶ時代なんだ。
98:デフォルトの名無しさん
21/11/11 19:17:19.43 N0+2xiNh.net
>>95
これをどう初心者が読むんだ???読めないよ
基本的な構文はこうします、ああします、がなにもない
99:蟻人間
21/11/11 19:24:27.07 CgY0hHY1.net
>>97
残念だが、C言語はC++に飲み込まれたんだ。だから今C言語のみを参照するのは時代遅れ。目次からC言語の部分を参照:
URLリンク(cpprefjp.github.io)
100:デフォルトの名無しさん
21/11/11 19:26:45.46 N0+2xiNh.net
簡素な実例を使って一個づつ説明しないんじゃ、初心者は誰も読めん
101:蟻人間
21/11/11 19:27:19.47 CgY0hHY1.net
たとえば、C言語のprintf関数を見たいのであればC++のstd::printfを参照しないといけない。
102:デフォルトの名無しさん
21/11/11 19:32:26.99 N0+2xiNh.net
elseをさもなくば、とか訳すのな、それは合ってる
しかし
n>10とかifに入ってたのなら初心者には、さもなくばではなく
10より小さければ、という意味になります。と書かんといかん。
なんだかねえ、わざとやってんのか
全てを伝えづともそれくらい書かないとダメだろと言いたい
103:はちみつ餃子
21/11/12 00:56:45.47 r8IM8kKp.net
>>98
そんなことはない。
C 由来の関数は C++ の規格では C の規格を参照していて、詳細は C の規格を見ないと書いてない。
C と C++ は付かず離れず平行して存続すると D&E でも言及されている。
だいたい C のほとんどの関数はそのまま使うには C++ では行儀が悪いことが多いだろ。
互換性の都合で仕方なく入ってるだけで、 C++ に取り込みたくなんてないと思う。
104:はちみつ餃子
21/11/12 01:19:39.87 r8IM8kKp.net
入門書というのは必ずしも簡単ではないということは知っておいて欲しい。
その分野でまず必要な知識を書いてあるのが入門書というもので、専門書の一種には違いないわけで。
ハードルを下げようと思えばいくらでも下げられるし、
実際に絵本に毛の生えたような説明の仕方をしているものもあるのだけれど、
きちんとした知識にするにはそれなりに難解な部分だって最終的には避けられない。
入門書なのに難しすぎる! と思うこともあるかもしれないけど、実際にそれは入門に必要なんだってば。
105:デフォルトの名無しさん
21/11/12 18:39:10.54 Ln6Hv7ms.net
必要ない
106:デフォルトの名無しさん
21/11/12 18:39:46.26 Ln6Hv7ms.net
そんな難解な教え方している専門学校ですらどこにもない
107:蟻人間
21/11/12 19:13:06.89 BtQklgip.net
アスキーとかナツメとか技術評論社あたりを当たると入門書が見つかると思うぜ。
108:デフォルトの名無しさん
21/11/12 19:24:06.67 Ln6Hv7ms.net
売ってない
実在しない
どれだ
109:デフォルトの名無しさん
21/11/12 19:29:27.55 Ln6Hv7ms.net
害虫がまた初心者向けに少しでもなるようなページを検索結果から消しているな
110:デフォルトの名無しさん
21/11/12 19:35:48.17 Ln6Hv7ms.net
そんなに早死にしたいのかねえ
111:デフォルトの名無しさん
21/11/26 12:10:38.20 ncT7Zn6W.net
>>38
秋月のPIC用c使ってるけどこれ規格準拠する気更々ないよな、cっぽいナニカ
まあアマチュア向けで気にすることも無いと思うけど
するとPCスマホ組み込みサポート網羅すべく頑張ってるc規格が可哀想に思えてくる…
112:デフォルトの名無しさん
21/11/28 00:02:18.62 A21vXR4U.net
スタック数段のマイナーマイコンcだと関数スコープから呼べない標準関数があったりしたな
何段消費するか明示して欲しい
まさかテストケースをグローバルで書いてるわけないよな
113:デフォルトの名無しさん
21/11/28 00:41:12.56 1ODb51AX.net
徹底的に呼び出し避けたマクロライブラリも挙動不審になりがちだしあきらめよう
114:デフォルトの名無しさん
23/06/11 23:42:34.62 NEZaQnIG.net
>>66
#defineでは書けなかった
でもif文で処理を分ければ最適化で通らない処理とif文の処理は削除される
int a=1;
if((char)a==0)
{
;
}
else
{
;
}
こんな感じ
115:デフォルトの名無しさん
23/06/12 04:26:28.49 wqSZy/1p.net
間違えた
int a=1;
if(*((char *)&a)==0)
{
;
}
else
{
;
}
こんな感じ
116:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています