[表示 : 全て 最新50 1-99 101- 2ch.scのread.cgiへ]
Update time : 07/24 14:39 / Filesize : 31 KB / Number-of Response : 117
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

0からの、超初心者C言語相談室



1 名前:デフォルトの名無しさん [2021/05/19(水) 01:34:14.03 ID:OYngDuIu.net]
何にも知らない0からの出発、超初心者のためのC言語相談室


C++は、こちら。

0からの、超初心者C++相談室
https://mevius.5ch.net/test/read.cgi/tech/1542002113/

2 名前:デフォルトの名無しさん [2021/05/19(水) 02:46:32.09 ID:iywlut5a.net]
糸冬

3 名前:デフォルトの名無しさん [2021/05/19(水) 07:05:58.55 ID: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 名前:デフォルトの名無しさん [2021/05/19(水) 07:34:36.87 ID:dkgz9ZJm.net]
無理しないでPythonでもやっとけ

5 名前:デフォルトの名無しさん [2021/05/19(水) 11:41:19.87 ID:psqzmlBB.net]
&p

6 名前:デフォルトの名無しさん [2021/05/19(水) 11:41:41.86 ID:psqzmlBB.net]
もとい
%p

7 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 11:51:21.02 ID:AeilwxT4.net]
どっかの宿題か
https://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/MP/final/part06/node9.html
https://www.atmarkit.co.jp/ait/articles/1703/01/news166_4.html
https://qiita.com/zacky1972/items/86741d1ac6939795784f
https://qiita.com/hiro4669/items/348ba278aa31aa58fa95

8 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 16:59:00.40 ID:ZyjXFBY0.net]
>>4
pythonでもid(obj)で番地見れるからおんなじだよ
変なのpythonスレに誘導するような言動は謹んで頂きたい

9 名前:はちみつ餃子 mailto:sage [2021/05/19(水) 17:43:06.29 ID:ONEwpJm5.net]
>>3
(1) 一般にはスタックと呼ばれるが言語仕様にはそのような規定はないので、
  実行環境によっては違うこともあるかもね。
  (言語仕様ではオブジェクトの寿命が決められているだけ。)
(2) 主流の CPU では b の方が小さい番地の可能性が高い。
(3) スタックはメモリの上位番地から下位番地に向かって使われる。
  なんでそうなるかっていうのは結局のところそう決めたから
  そうなっているってだけなんで、逆でもかまわないし、
  実際に逆にデザインされたアーキテクチャは存在する。
  https://ja.wikipedia.org/wiki/PA-RISC

これらはコンピュータアーキテクチャの話。
言語の仕様とそれがどのように実装されているか (機械語を生成するか) は別物なんで、
そこらへんのレイヤを区別して考えないとわけわからんと思う。

10 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 18:47:16.00 ID:SmvgsauD.net]
>>9
ありがとうございます!
本に書いてない内容だったのでスッキリしました。



11 名前:デフォルトの名無しさん [2021/06/09(水) 14:13:39.99 ID:3Qpbsqp/.net]
strstr で文字列を検索出来ますが'\0'が含まれているともちろん正常に動作しませんね
メモリ中の'\0'を含むバイトパターンの現れる位置を調べる関数は何ていう名前?

12 名前:はちみつ餃子 mailto:sage [2021/06/09(水) 16:35:20.50 ID:Ih94CWHU.net]
>>11
標準には無い。 POSIX にも無い。
glibc には memmem があるので場合によってはそれが使えることもあるかもね。

13 名前:デフォルトの名無しさん [2021/06/10(木) 10:48:32.40 ID:ZbfFyHii.net]
memchr を使って memmem 相当の関数を造りました
ありがとうございました

ところで memmem の引数や戻り値ってどうして void * なんですか?
char * になってないと使いにくくないですか?
memory 用だからですか?
void * の場合 size_t が各要素の size の倍数なのか char の size の倍数なのか
特別考慮してくれる訳でもないですよね?

14 名前:はちみつ餃子 mailto:sage [2021/06/10(木) 14:11:49.95 ID:MOYAWABe.net]
>>13
> memory 用だからですか?

そう。 バイト列を扱う場合というのは色んな型のメモリブロックである可能性がある。
`void*` の特徴として、他のポインタとの間で暗黙の型変換の対象になるという特別扱いがある。
(C++ ではこの特徴は廃止されているので注意!)

だから

int a=114514;
unsigned char b=0xbf;

memmem(&a, sizeof(a), &b, 1);

といったように何のポインタを渡した場合でも型が違うとかいったエラーにはならない。
いちいちキャストしなくてよいから楽だからこうなってる。

15 名前:はちみつ餃子 mailto:sage [2021/06/10(木) 14:20:26.59 ID:MOYAWABe.net]
ちょっと間違えた。
C++ でも void* への暗黙の型変換はアリだけど
void* からの暗黙の型変換はないんだった。

16 名前:デフォルトの名無しさん [2021/06/11(金) 16:56:51.54 ID:hP01Bt9y.net]
環境
unix系でxterm系のコンソール

less vi emacs等の
現在のプロンプト位置でプログラムを実行し(全画面表示し)終了すると
元のプロンプト位置(の次の行)に戻ってくる処理をできる限りの低レベルで知りたい

例えば
3行目でvi起動
編集
終了
プロンプトが4行目に復帰する
起動時のコマンドが直上にある状態

エスケープシーケンスでのクリアは内部的に
エコーしないで改行してるだけ?なのかそのまま空行が出来てしまう

17 名前:デフォルトの名無しさん [2021/06/20(日) 10:08:07.54 ID: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 名前:デフォルトの名無しさん mailto:sage [2021/06/20(日) 18:24:48.63 ID: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 名前:デフォルトの名無しさん mailto:sage [2021/06/20(日) 19:07:42.24 ID:Q3V/e/tw.net]
×使うな
◯仕様を理解して適切な場面で適切に使え

20 名前:デフォルトの名無しさん mailto:sage [2021/06/21(月) 00:42:00.03 ID:zJyyyGxF.net]
正直標準ライブラリは諦めた方がいいと思うんだが

安全な文字列や数値型ライブラリはあるけど、特にどれがメジャーというわけでもないから、チームでやると最大公約数の標準ライブラリ使わざるを得ないっていう



21 名前:デフォルトの名無しさん mailto:sage [2021/06/26(土) 05:41:35.82 ID:64gC9b2h.net]
>>16
printf("\e[?1049h"); // これで代替スクリーンバッファを有効にする
printf("\e[?1049l"); // これで代替スクリーンバッファを無効にする

22 名前:デフォルトの名無しさん [2021/06/29(火) 14:18:16.44 ID:q4QzgdjF.net]
default:
https://www.mbs.jp/news/kansainews/20210628/GE00038998.shtml
■「日本が財政破綻する確率は100%」と大前研一氏。
私に言わせれば、税金を払える生産年齢人口が減り続けている以上、破綻確率は「100%」である。
今の日本は、いわば“裸の王様”のようなもので、すでに国の財政は破綻している状態だから、いつ国債が暴落して債務不履行になってもおかしくない。
ただ、それは1年後かもしれないし、10年後かもしれない、という話なのである。
そういう事態が起きないように財政運営戦略を作っていくのが、国を預かる為政者がやるべきことだ。

ところが日本は、日本銀行が「異次元金融緩和」を8年以上も継続して財務省が紙幣を刷りまくり、大量発行する国債の消化資金を民間金融機関に提供してきた。
そして、その国債を日銀が民間金融機関から買い取って自ら貯め込み、“禁じ手”とされている事実上の財政ファイナンス(中央銀行が通貨を発行して国債を直接引き受けること)を続けている。

23 名前:デフォルトの名無しさん mailto:sage [2021/06/29(火) 14:18:32.64 ID:q4QzgdjF.net]
FRBやECBも日銀と同じように金融緩和を行なっているが、むしろ日銀を先行指標として注視している。

一方、日本人の多くは、自分は国債と関係ないと思っている。
だが実際は、郵便貯金や銀行預金が金融機関を通じて国債に流れ、さらに日銀とGPIFという「2頭の鯨」が国債と株を爆買いしている。
つまり、個人金融資産は国債に化け、年金積立金も国債と株に形を変えているわけで、政府が財政破綻したら国民も一蓮托生なのだ。

だが、今の日本は政治家に政府債務に対する危機感がなく、今後も少子化と生産年齢人口の減少が続く。GAFAMのような巨大IT企業もなければ、アメリカや中国などで続々と誕生しているユニコーンも全く出てこない。このような状況では、巨額の政府債務を返せるわけがない。

では、国民はどうすればよいのか? 
資金に余裕があれば、政府が財政破綻しても影響が少ない「不動産」や「金」を買っておいたほうがよいだろう。
利息が付く預貯金は元本1000万円までとその利息しか保護されないし、「株」や「投資信託」や「債券」も国が破綻すれば「国債」と同じく紙屑同然になるからだ。

ただし、最も有効な対策は、自分に投資して世界のどこに行っても稼げる人間になることだ。
もし日本が破綻したとしても、世界のどこかに繁栄しているところはあるはずだから、そこで稼げる力を磨いておくことが唯一の安全・安心・有望な投資先なのである。

24 名前:デフォルトの名無しさん mailto:sage [2021/07/05(月) 11:47:38.56 ID:c503ASju.net]
4899774451
4899775067
4046019557
489977463X

25 名前:デフォルトの名無しさん [2021/09/12(日) 04:36:58.26 ID: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 名前:デフォルトの名無しさん mailto:age [2021/09/12(日) 04:40:02.79 ID:a7tYNi4V.net]
p1 = str1 + strlen(str1) - 1;の部分と*p2++ = *p1--;この部分の意味がよく分かってない可能性が高いので解説してほしいです

str1の先頭アドレス+str1の文字数-1…でつまり何処をさしてるのでしょうか?
p1 >= str1は先頭アドレスより大きい間はって意味ですか?

27 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 05:25:12.94 ID:cHe5vqGk.net]
>str1の先頭アドレス+str1の文字数-1…でつまり何処をさしてるのでしょうか?
str1の最後の文字(0終端の一個前)

>p1 >= str1は先頭アドレスより大きい間はって意味ですか?
惜しい
「より大きい」ではなく「以上」、=があるから

VisualStudio等のIDEのデバッガでステップ実行して、
各変数の変化・ポインタの指す先を見てればすぐわかるよ

28 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 07:15:26.26 ID:jZMYjdNi.net]
*p2++ = *p1--

こういのは、意味が分からないしバグるから、MISRA-C で禁止している

Ruby には、++/-- 演算子はない。
Go では単独文扱いで、他の式と組み合わせることは出来ない

MISRA-C でも同様

29 名前:デフォルトの名無しさん [2021/09/12(日) 09:32:13.18 ID:x3+6FKDq.net]
>意味が分からないしバグる

馬鹿自慢乙

30 名前:デフォルトの名無しさん mailto:age [2021/09/12(日) 19:32:07.65 ID:0tQ1ubt9.net]
*p2++=*p1--
これは参照してるオブジェクトの値に化けてからアドレスを進めてるんですね。
なんとなく分かりました。ありがとうございます!

>>p1 = str1 + strlen(str1) - 1;
ここがなんかモヤモヤするんですけど
数字で表すとどんな感じになってるか教えてほしいです。お願いします。



31 名前:蟻人間 mailto:sage [2021/09/12(日) 19:38:22.89 ID:G4gOb8CM.net]
str1が文字列の戦闘アドレスを刺している。それに文字列の長さマイナスいちを足すと文字列の最後の文字へのアドレスが得られる。

32 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 20:18:52.41 ID:0tQ1ubt9.net]
>>31
0+25-1って感じでしょうか?今回のケースの場合

33 名前:蟻人間 mailto:sage [2021/09/12(日) 20:37:03.69 ID:G4gOb8CM.net]
>>32
Visual C++を使ってるならデバッグ厨二、ウォッチ死期で実際に確認で切るはずだ。

34 名前:Mb [2021/09/12(日) 20:42:24.21 ID:eZoXy3gP.net]
C言語というのは、unix の記述言語としてスタートした言語という経緯があって、
システム記述言語だから「基本的になんでもあり」みたいな危険な言語では
あるのですよ。
それを踏まえて向かいあうんだったら、ニモニックとかアセンブラとか
マクロアセンブラとか、そのあたりまで含めて勉強してほしいと思う。
C++ だって、C に一皮被せただけのマクロ

35 名前:言語だしね。
そこは、アセンブラとの関係まで含めて、勉強しておくといいかもしれない。
ツー手も、昨今の言語だと、「そういうところは気にしなくていい」というのが
潮流ではあるんだけどね。
[]
[ここ壊れてます]

36 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 20:54:09.14 ID:0tQ1ubt9.net]
>>33
すいませんVCステップイン実行のやり方調べときます。
ありがとうございました。
アセンブラも覚えてみたいんですがCよりさらに難しそうなので…

37 名前:はちみつ餃子 mailto:sage [2021/09/13(月) 00:44:43.40 ID:b2LY5t5P.net]
アセンブラの詳細を理解する必要はないんだけれど、
C で書いたものがどういう機械語に対応付けられているのかおおよそにでも
知っておくと C の仕様が腑に落ちることは結構あるとは思う。
(現代的なコンパイラは超強力な最適化があるので一対一に対応付けられるようなもんではなくなってしまっているけど……。)

38 名前:デフォルトの名無しさん mailto:sage [2021/09/15(水) 10:15:40.95 ID:v8RKbjHW.net]
>>9
亀だけど、マイコン触ってるとスタック上から、下からはグローバル変数など固定配置のメモリ、
その上にヒープまたはそれに類するものがスタック間際までって割当になっててなるほどって思った。
スタックが伸びすぎても下がそこまで使ってなければぶっ飛ぶこともない的な。
スタックオーバーフローの割り込みとかありますしデバッガで様子はわかりますから気にすべきですが。

39 名前:デフォルトの名無しさん mailto:sage [2021/09/15(水) 10:28:04.04 ID:JucPjPcF.net]
>>37
むかーし買った秋月のH8キットだったかな
ペラ1枚の説明書しかなかったけどちゃんとメモリマップは載っていてなるほどそういうことか、って思った

40 名前:デフォルトの名無しさん [2021/09/17(金) 20:49:49.30 ID:inv44Tua.net]
ラズパイ pico \500



41 名前:デフォルトの名無しさん [2021/09/18(土) 08:22:38.19 ID:bA/qQPAi.net]
STM32

42 名前:デフォルトの名無しさん mailto:sage [2021/09/22(水) 02:00:31.84 ID:T3iMh7Ht.net]
char p[]="12345";
char *p="12345";
const char *p="12345";

先生、この違いをおしえてください。

43 名前:はちみつ餃子 mailto:sage [2021/09/22(水) 04:32:30.60 ID: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 名前:デフォルトの名無しさん mailto:sage [2021/09/22(水) 10:30:17.08 ID:T3iMh7Ht.net]
ロボット制御に使いたいんですが、
アドレスaのchar領域cのnビット目(0-7)をon/offするマクロはどう書いたらいいですか?
関数ではなくマクロにしたいです。

#define BitOn(a,c,n) ???????
#define BitOff(a,c,n) ???????

45 名前:デフォルトの名無しさん mailto:sage [2021/09/22(水) 10:51:34.30 ID:jJoskI2c.net]
>>43
とりあえず自分で書いたやつがどうなるのか出してほしいなぁ。
a はアドレス n はビット位置っていうのはわかるんだけどだ c は何の指定なの?

46 名前:デフォルトの名無しさん [2021/09/22(水) 12:09:08.97 ID:T3iMh7Ht.net]
>>44
ad1バイトのcharです

47 名前:デフォルトの名無しさん [2021/09/22(水) 12:10:01.22 ID:T3iMh7Ht.net]
aで指定される1バイトのcharです

48 名前:デフォルトの名無しさん [2021/09/22(水) 12:37:28.88 ID:T3iMh7Ht.net]
1バイト限定にすればcなしでもいいですね。

49 名前:デフォルトの名無しさん mailto:sage [2021/09/22(水) 12:48:28.66 ID:jJoskI2c.net]
>>47
やっぱそうだよね。

unsigned char ) ~ * << |= ( 1 &=
パーツを教えてやるよ。あとは自分で考えな。

50 名前:デフォルトの名無しさん [2021/09/22(水) 15:58:45.17 ID:KzVGjGnL.net]
そんなにたくさんパーツいらんやろ



51 名前:デフォルトの名無しさん mailto:sage [2021/09/22(水) 16:10:13.68 ID:jJoskI2c.net]
>>49
ん?要らないのどれ?

52 名前:デフォルトの名無しさん [2021/09/22(水) 18:02:02.01 ID:T3iMh7Ht.net]
すみません、質問した立場でアレですが、|=と&=は要らないと思いますw

53 名前:デフォルトの名無しさん mailto:sage [2021/09/22(水) 19:14:02.21 ID:jJoskI2c.net]
>>51
そうなのか。気になるから解決してたら結果教えて。

54 名前:デフォルトの名無しさん mailto:sage [2021/09/22(水) 19:37:07.36 ID:u8cZI69m.net]
&、| なしか、興味あるな…

55 名前:デフォルトの名無しさん mailto:sage [2021/09/23(木) 16:53:43.78 ID:lZOUN/j/.net]
漏れはヘタレだから、ビットフィールド使ってRAM上で更新してバイト単位でポートに書けば良いやなんて考えちゃう。

56 名前:デフォルトの名無しさん mailto:sage [2021/09/23(木) 17:55:47.84 ID:T47aXDe3.net]
>>51
なぜそう思ったw

57 名前:デフォルトの名無しさん mailto:age [2021/09/23(木) 18:30:20.38 ID:KLbp/g+2.net]
上位ワード下位ワードを取り出すって意味がよくわからないのですが
int main()
{
int a=77778888;
}
とあったら7777が上位ワードって事でしょうか?

58 名前:蟻人間 mailto:sage [2021/09/23(木) 18:45:44.45 ID:WyFAZLWz.net]
>>56
それは10進だから、まずはウィンドウズのプログラマ電卓で16進数に直して。

59 名前:デフォルトの名無しさん [2021/09/23(木) 19:09:52.18 ID:KLbp/g+2.net]
>>57
4A2 CFC8
となりました。あんまりWORDって意味を分かってないんですが
アドレスとかの事じゃなくて符号なしshortの生の数値って意味と捉えていいんでしょうか?

60 名前:デフォルトの名無しさん mailto:sage [2021/09/23(木) 19:29:25.98 ID:h/5qm19B.net]
>>58
コンピュータの中のデータはすべてビット(0か1)の集まり
int は32ビットだったり16ビットだったりするが、とにかく0や1がいくつもならべてある
だけだ。

表示するのに、0111100010111101 とかだと長くてわかりづらい。
それを手短にわかりやすく表現しようと 4ビットづつまとめて表示したのが16進数



61 名前:デフォルトの名無しさん mailto:age [2021/09/23(木) 20:15:26.01 ID:KLbp/g+2.net]
>>59
なるほど。でも取り出すって意味がよくわからないです
ROWORDとHIWORDって関数は何をしてるんでしょうか

62 名前:蟻人間 mailto:sage [2021/09/23(木) 20:25:44.38 ID:WyFAZLWz.net]
>>60
LOWORD/HIWORDは、ビットシフトと型キャストをしている。Visual C++なら定義を確認できるはずだ。

63 名前:デフォルトの名無しさん mailto:sage [2021/09/23(木) 21:05:22.52 ID:KLbp/g+2.net]
>>>61
難しいのでまた型サイズやビット演算復習してからWIN32やってみます。。
解答ありがとうございました。

64 名前:デフォルトの名無しさん [2021/09/24(金) 08:02:57.39 ID:eotJkoo2.net]
#define BitOn(a,c,n) ( a[c] |= 1<<c )
#define BitOff(a,c,n) ( a[c] &= ~(1<<c) )

65 名前:デフォルトの名無しさん [2021/09/24(金) 08:06:02.22 ID:eotJkoo2.net]
間違えた
#define BitOn(a,c,n) ( a[c] |= 0x01<<n )
#define BitOff(a,c,n) ( a[c] &= ~(0x01<<n) )

よく使うよ

66 名前:デフォルトの名無しさん [2021/09/24(金) 08:12:56.68 ID:eotJkoo2.net]
8ビット=1バイト
1ワード=2バイト=16ビット

32ビットCPUなら、通常int は32ビットで2ワード。

67 名前:デフォルトの名無しさん [2021/09/24(金) 14:39:54.44 ID:6iUyOY+3.net]
CPUがBEかLEか判定するのに使うマクロを
#defineで描くとどんなのがありますか

68 名前:はちみつ餃子 mailto:sage [2021/09/24(金) 15:04:20.65 ID:hNucDJal.net]
>>66
完全に仕様の範囲内かつ人が一切のヒントを与えずに結果が定数式になる形で自動判定するのはたぶん無理だと思う。

69 名前:デフォルトの名無しさん [2021/09/24(金) 15:43:32.44 ID:zyC2bCW7.net]
#define LE ( (1&0x00000001)!=0)?true:false)
#define BE ( (1&0x01000000)!=0)?true:false)

70 名前:デフォルトの名無しさん mailto:sage [2021/09/24(金) 15:47:22.20 ID:U2st4CQ0.net]
>>66
そんなこと考えるより環境のエンディアンに依存しないコードの書き方を学んだほうが良い。



71 名前:デフォルトの名無しさん [2021/09/24(金) 15:55:16.30 ID:6iUyOY+3.net]
htonsですか?ωωω

72 名前:デフォルトの名無しさん mailto:sage [2021/09/24(金) 21:07:09.60 ID:naX2jA4f.net]
?true:false
って、意味あるの?

73 名前:デフォルトの名無しさん [2021/09/24(金) 22:00:46.33 ID:eotJkoo2.net]
意味ないよ

74 名前:デフォルトの名無しさん mailto:sage [2021/09/24(金) 22:25:06.12 ID:Dq17+3pv.net]
gcc拡張なら
#define LE ({ int a = 1; ((const char *)&a)[0]; })
うごくかどうかはしらん

75 名前:デフォルトの名無しさん [2021/09/25(土) 11:13:09.39 ID:lBxoEpbF.net]
!=0 って意味あるの?

76 名前:はちみつ餃子 mailto:sage [2021/09/25(土) 11:44:02.46 ID:ToKIzbmV.net]
>>74
有るよ。

77 名前:デフォルトの名無しさん mailto:sage [2021/09/26(日) 21:10:08.57 ID:0u8JLN98.net]
!!って意味あるの?

78 名前:デフォルトの名無しさん mailto:sage [2021/09/27(月) 00:30:15.47 ID:qCKTTnQF.net]
意味なくもないよ。

79 名前:デフォルトの名無しさん mailto:sage [2021/09/27(月) 01:12:22.69 ID:lw6R4pVu.net]
!!は静的解析やコンパイラの警告黙らせる時に使える場合もあるよ

80 名前:デフォルトの名無しさん [2021/10/25(月) 12:19:02.96 ID:hesMamgg.net]
char a[3]とした場合 aとa[0]は同じ←分かる
struct A a[3]とした場合 aとa[0]は違うんか?



81 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 12:33:40.14 ID:Rm/sO20O.net]
>>79
aが配列でa[0]はその先頭要素。これらは同じじゃないよ。
この関係はchar a[3]でもstruct A a[3]でも同じだけど。

82 名前:デフォルトの名無しさん [2021/10/25(月) 12:37:22.98 ID:vmRZrQEp.net]
同じじゃない

83 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 13:34:18.40 ID: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 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 03:12:03.00 ID:7iLVX7OB.net]
VisualStudioでWin32APIの入門したいんですが
どのプロジェクトテンプレートを使えば良いのでしょうか?

85 名前:デフォルトの名無しさん [2021/10/26(火) 15:39:42.99 ID:4xSLwudN.net]
Console Application

86 名前:デフォルトの名無しさん mailto:sage [2021/11/10(水) 17:51:26.04 ID:TeMjyUmY.net]
if elseから学びたいのですが、余計な習っていない文がついたサイトばかり出てきます。
どこを見ればいいのでしょうか

87 名前:デフォルトの名無しさん mailto:sage [2021/11/10(水) 19:04:16.39 ID:TeMjyUmY.net]
この際、本でもいいです。買います。

88 名前:蟻人間 mailto:sage [2021/11/10(水) 19:05:31.96 ID:Ibdkkh+M.net]
普通にリファレンスを読めば?

89 名前:デフォルトの名無しさん mailto:sage [2021/11/10(水) 19:45:30.62 ID:TeMjyUmY.net]
出来が悪すぎて

90 名前:蟻人間 mailto:sage [2021/11/10(水) 19:50:39.71 ID:Ibdkkh+M.net]
おむつ? おつむ?



91 名前:デフォルトの名無しさん mailto:sage [2021/11/11(木) 18:53:34.61 ID:N0+2xiNh.net]
今、リファレンスなんてまともなの売ってない
頼んでもいない文が山盛りついていて、一からやりたい奴は苦労している
とほほのhtmlみたいなのは売ってないんだよ

92 名前:デフォルトの名無しさん mailto:sage [2021/11/11(木) 18:54:29.97 ID:N0+2xiNh.net]
つまりリファレンス足り得てない本ばっか
いま、プログラムを始めるのは独学では不可能と言ってもいい

93 名前:デフォルトの名無しさん mailto:sage [2021/11/11(木) 18:57:09.08 ID:N0+2xiNh.net]
ちなみにオクにも出なくなったので手に入らない

94 名前:デフォルトの名無しさん mailto:sage [2021/11/11(木) 18:58:20.42 ID:N0+2xiNh.net]
分かりづらい言い方しなければ、今はif elseから始める本は売ってない

95 名前:蟻人間 mailto:sage [2021/11/11(木) 19:02:41.41 ID:CgY0hHY1.net]
紙のリファレンスを読むという発想で生き残れるとは思えない。そこはもうデジタルファイルかウェブだよ。

96 名前:蟻人間 mailto:sage [2021/11/11(木) 19:07:22.97 ID:CgY0hHY1.net]
ほれ
https://cpprefjp.github.io/
https://en.cppreference.com/w/Cppreference:Archives

97 名前:蟻人間 mailto:sage [2021/11/11(木) 19:16:03.47 ID:CgY0hHY1.net]
君等の政府を見てみよ。教科書すらデジタル化できない。日本語入力の標準化すらままならない。紙ベース、電話ベースの考えなんかデジタル化で吹っ飛ぶ時代なんだ。

98 名前:デフォルトの名無しさん mailto:sage [2021/11/11(木) 19:17:19.43 ID:N0+2xiNh.net]
>>95
これをどう初心者が読むんだ???読めないよ
基本的な構文はこうします、ああします、がなにもない

99 名前:蟻人間 mailto:sage [2021/11/11(木) 19:24:27.07 ID:CgY0hHY1.net]
>>97
残念だが、C言語はC++に飲み込まれたんだ。だから今C言語のみを参照するのは時代遅れ。目次からC言語の部分を参照:
https://cpprefjp.github.io/reference.html#clib-facilities

100 名前:デフォルトの名無しさん mailto:sage [2021/11/11(木) 19:26:45.46 ID:N0+2xiNh.net]
簡素な実例を使って一個づつ説明しないんじゃ、初心者は誰も読めん



101 名前:蟻人間 mailto:sage [2021/11/11(木) 19:27:19.47 ID:CgY0hHY1.net]
たとえば、C言語のprintf関数を見たいのであればC++のstd::printfを参照しないといけない。

102 名前:デフォルトの名無しさん mailto:sage [2021/11/11(木) 19:32:26.99 ID:N0+2xiNh.net]
elseをさもなくば、とか訳すのな、それは合ってる
しかし
n>10とかifに入ってたのなら初心者には、さもなくばではなく
10より小さければ、という意味になります。と書かんといかん。

なんだかねえ、わざとやってんのか
全てを伝えづともそれくらい書かないとダメだろと言いたい

103 名前:はちみつ餃子 mailto:sage [2021/11/12(金) 00:56:45.47 ID:r8IM8kKp.net]
>>98
そんなことはない。
C 由来の関数は C++ の規格では C の規格を参照していて、詳細は C の規格を見ないと書いてない。
C と C++ は付かず離れず平行して存続すると D&E でも言及されている。

だいたい C のほとんどの関数はそのまま使うには C++ では行儀が悪いことが多いだろ。
互換性の都合で仕方なく入ってるだけで、 C++ に取り込みたくなんてないと思う。

104 名前:はちみつ餃子 mailto:sage [2021/11/12(金) 01:19:39.87 ID:r8IM8kKp.net]
入門書というのは必ずしも簡単ではないということは知っておいて欲しい。
その分野でまず必要な知識を書いてあるのが入門書というもので、専門書の一種には違いないわけで。
ハードルを下げようと思えばいくらでも下げられるし、
実際に絵本に毛の生えたような説明の仕方をしているものもあるのだけれど、
きちんとした知識にするにはそれなりに難解な部分だって最終的には避けられない。

入門書なのに難しすぎる! と思うこともあるかもしれないけど、実際にそれは入門に必要なんだってば。

105 名前:デフォルトの名無しさん mailto:sage [2021/11/12(金) 18:39:10.54 ID:Ln6Hv7ms.net]
必要ない

106 名前:デフォルトの名無しさん mailto:sage [2021/11/12(金) 18:39:46.26 ID:Ln6Hv7ms.net]
そんな難解な教え方している専門学校ですらどこにもない

107 名前:蟻人間 mailto:sage [2021/11/12(金) 19:13:06.89 ID:BtQklgip.net]
アスキーとかナツメとか技術評論社あたりを当たると入門書が見つかると思うぜ。

108 名前:デフォルトの名無しさん mailto:sage [2021/11/12(金) 19:24:06.67 ID:Ln6Hv7ms.net]
売ってない
実在しない
どれだ

109 名前:デフォルトの名無しさん mailto:sage [2021/11/12(金) 19:29:27.55 ID:Ln6Hv7ms.net]
害虫がまた初心者向けに少しでもなるようなページを検索結果から消しているな

110 名前:デフォルトの名無しさん mailto:sage [2021/11/12(金) 19:35:48.17 ID:Ln6Hv7ms.net]
そんなに早死にしたいのかねえ



111 名前:デフォルトの名無しさん mailto:sage [2021/11/26(金) 12:10:38.20 ID:ncT7Zn6W.net]
>>38
秋月のPIC用c使ってるけどこれ規格準拠する気更々ないよな、cっぽいナニカ
まあアマチュア向けで気にすることも無いと思うけど

するとPCスマホ組み込みサポート網羅すべく頑張ってるc規格が可哀想に思えてくる…

112 名前:デフォルトの名無しさん mailto:sage [2021/11/28(日) 00:02:18.62 ID:A21vXR4U.net]
スタック数段のマイナーマイコンcだと関数スコープから呼べない標準関数があったりしたな
何段消費するか明示して欲しい

まさかテストケースをグローバルで書いてるわけないよな

113 名前:デフォルトの名無しさん mailto:sage [2021/11/28(日) 00:41:12.56 ID:1ODb51AX.net]
徹底的に呼び出し避けたマクロライブラリも挙動不審になりがちだしあきらめよう

114 名前:デフォルトの名無しさん mailto:sage [2023/06/11(日) 23:42:34.62 ID:NEZaQnIG.net]
>>66
#defineでは書けなかった
でもif文で処理を分ければ最適化で通らない処理とif文の処理は削除される
int a=1;
if((char)a==0)
{
;
}
else
{
;
}
こんな感じ

115 名前:デフォルトの名無しさん mailto:sage [2023/06/12(月) 04:26:28.49 ID:wqSZy/1p.net]
間違えた
int a=1;
if(*((char *)&a)==0)
{
;
}
else
{
;
}
こんな感じ

116 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<31KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef