[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 04/28 01:12 / Filesize : 253 KB / Number-of Response : 1018
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

C言語なら俺に聞け 142



1 名前:デフォルトの名無しさん [2017/08/10(木) 20:21:23.44 ID:hEocmkh50.net]
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

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

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

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

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


mevius.2ch.net/test/read.cgi/tech/1500293207/
www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

610 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 18:32:58.84 ID:LFQQ2ZHvd.net]
なぜ通ると思ったのか

611 名前:デフォルトの名無しさん [2017/10/08(日) 19:03:56.08 ID:uO7C8UFXE.net]
コーディングスタイルってたくさんあるんですね
とりあえず検索したらエリートの人達が使ってそうなものを集めてみました

C Coding Standard - CMU (ECE)
https://users.ece.cmu.edu/~eno/coding/CCodingStandard.html
GNU Coding Standards
https://www.gnu.org/prep/standards/html_node/Writing-C.html
NASA C Style Guide
homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-c-style.pdf
C Coding Style - GNOME Developer Center
https://developer.gnome.org/programming-guidelines/stable/c-coding-style.html.en
CERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
Linux kernel coding style
https://www.kernel.org/doc/html/v4.10/process/coding-style.html

どれも難しそうなのでコーディングスタイル見るのやめようと思います。
githubで適当に見ても全然統一されてないし
とりあえずインデントは空白8個で{}を省略しないルールだけにしたいと思います。

612 名前:デフォルトの名無しさん [2017/10/08(日) 19:04:57.70 ID:uO7C8UFXE.net]
空白8個なのはメモ帳で見た時にこのくらいだから合わせてるだけです

613 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 19:18:41.81 ID:PUMPETat0.net]
また戦争がしたいのか、アンタは

614 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 19:26:45.12 ID:+nfO/L5n0.net]
戦闘民族

615 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 19:30:12.30 ID:HosRocIl0.net]
書いてりゃわかると思うけど8は多すぎ
単に昔のシステムがそうだったと言うだけのことだから4とか2でいいと思う

616 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 19:36:28.95 ID:+nfO/L5n0.net]
あーあ

617 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 21:11:10.70 ID:bhcsmcAx0.net]
>>573
会社や複数人作業ならそれにあわせる
一人で書く分には何でもいいだろ
なんなら、PHPで使ってたスタイルでいいだろ
ってか、PHPの時はどうしてたんだよ

618 名前:デフォルトの名無しさん [2017/10/09(月) 01:05:37.72 ID:6VRPxojV0.net]
マンデルブロの描画がうまくいきません。ズームするとすぐに単調になってしまいます。

動画
https://youtu.be/Ompp_YwrLPw

ソースコード
codepad.org/mlm33eRT



619 名前:片山博文MZ mailto:sage [2017/10/09(月) 01:30:56.68 ID:vdfcSFiBd.net]
>>609
クリックしたら画面の中心を移動させる。

620 名前:片山博文MZ mailto:sage [2017/10/09(月) 01:32:01.57 ID:vdfcSFiBd.net]
ドラッグされたらずらす。

621 名前:デフォルトの名無しさん [2017/10/09(月) 01:53:40.87 ID:6VRPxojV0.net]
>>610
一応クリックするとある境界線付近を拡大するようにプログラムに書いてるのですが...

622 名前:片山博文MZ mailto:sage [2017/10/09(月) 03:32:25.69 ID:vdfcSFiBd.net]
>>612
環境によって座標系が違うのかも知れない。ずらす値を変えてみては?

623 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 03:39:59.55 ID:69HXGpsc0.net]
>>609
単調になるのは k のループ回数が少ないせいでは

624 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 06:38:40.98 ID:hRP3P7r40.net]
そうだね k=1000くらいで

625 名前:デフォルトの名無しさん [2017/10/09(月) 08:53:44.75 ID:IXUwPWpS6.net]
>>613
変えても同じでした
>>614
>>615
なるほど!家に帰ったらやって見ます!

626 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 09:35:07.86 ID:IkImbMA7a.net]
>>594
変数宣言が全てtypedefになるなんて狂気な言語
実例を教えてくれ

627 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 09:51:45.98 ID:UMVukllE0.net]
俺はこの書き方
if (condition) {
}
else {
}

628 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 09:55:27.10 ID:pMEz2IHg0.net]
コーディングスタイルにこだわる奴は素人。



629 名前:デフォルトの名無しさん [2017/10/09(月) 12:12:59.35 ID:9ioWbZDx6.net]
Linuxのソースコードは?

630 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 13:24:11.42 ID:N3YX2Zf80.net]
ソース整形ツールの動作オプションの数で眩暈がするぜw

631 名前:デフォルトの名無しさん [2017/10/09(月) 14:12:40.72 ID:98rFBdXp0.net]
■■たびたびお世話になります なにが悪いのかご指摘おねがいします■■

struct I2C_MEM 
{
char DEV_ADR ;
char REG_ADR ;
char DATA[4] ;
} static I2C_MEM[2] ;

task02_tst ( struct I2C_MEM *aaa )
{
char i,a[2],b[2],c[2];
i = 0 ;

while ( i <= 1 )
{
aaa -> DEV_ADR ;
a[i] = *aaa ;         // データタイプがインコンパチでエラーになる char DEV_ADR を参照してくれない?
aaa -> REG_ADR ;
b[i] = *aaa ;        // データタイプがインコンパチでエラーになる char REG_ADR を参照してくれない?
aaa -> DATA ;
c[i] = *aaa         // データタイプがインコンパチでエラーになる char DATA を参照してくれない?
p += 1 ;

i += 1 ;
}
}

632 名前:デフォルトの名無しさん [2017/10/09(月) 14:22:20.38 ID:98rFBdXp0.net]
↑単純に関数内で構造体のデータにポインタ+インデックスでアクセスしたい

633 名前:デフォルトの名無しさん [2017/10/09(月) 14:26:06.29 ID:98rFBdXp0.net]
間違い発見
p += 1 ; は aaa += 1 ; に置き換えてください

634 名前:片山博文MZ mailto:sage [2017/10/09(月) 14:39:31.76 ID:vdfcSFiBd.net]
>>622
何がしたいのかわからない。
代入の左辺は右辺と互換性のある型じゃないといけないし、配列まるごとの代入はできない。
まずは代入の型をそろえないと。

635 名前:片山博文MZ mailto:sage [2017/10/09(月) 15:09:21.54 ID:vdfcSFiBd.net]
char型のデータを代入したいのなら、両辺の型をcharにしないといけないよ。

636 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 15:26:29.02 ID:G+wiEnLh0.net]
>>622
> aaa -> DEV_ADR ;
> a[i] = *aaa ;

例えばこの部分は a[i] = aaa->DEV_ADR; という処理を意図してるのではないかと思う
ただし aaa->DATA のところは char* 型になるので char 型の c[i] に代入できない

637 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 15:56:12.50 ID:of8Vs49yM.net]
>>622
エスパーするとたぶんこう言うことだと思う
task02_tst ( struct I2C_MEM *aaa ){
int i;
char a[2],b[2],c[2];
for(i = 0; i < 2; i++){
a[i] = aaa[i].DEV_ADR;
b[i] = aaa[i].REG_ADR;
c[i] = aaa[i].DATA; // ここは >>627 の言う通りなにをしたいのかよくわからん
}
}

638 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 17:01:40.23 ID:u+Z6y4O20.net]
初心者相手に表記法を変えると理解しにくいかも。
本質から外れた部分が目についてしまうからね。

int i = 0;

while ( i <= 1 )
{
a[i] = aaa -> DEV_ADR ; // ポインタaaaが指す構造体の DEV_ADR メンバの値
b[i] = aaa -> REG_ADR ; // ポインタaaaが指す構造体の REG_ADR メンバの値
c[i] = aaa -> DATA ; // c[i] の型と DATA メンバの型が違うからエラー
aaa += 1 ;

i += 1 ;
}

てな感じかと。
>>627-628 をまとめただけ、だけど。



639 名前:デフォルトの名無しさん [2017/10/09(月) 17:19:35.64 ID:tFlwnlNI0.net]
>>629
c を char *c[2] で宣言しておけばなんとかなるね。

640 名前:デフォルトの名無しさん [2017/10/09(月) 17:34:38.15 ID:98rFBdXp0.net]
皆様 どうもありがとうございます
とりあえず代入の書き方が知りたかっただけでありまして
ちなみにインデックスを使用した配列メンバーのアクセスなんだけど
c[i] = aaa -> DATA +0 ;
d[i] = aaa -> DATA +1 ;
e[i] = aaa -> DATA +2 ;
f[i] = aaa -> DATA +3 ;
こんな書き方ってできるの?

641 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 17:44:30.12 ID:N3YX2Zf80.net]
ポインタを返す場合はそういう書き方
aaa->DATA+3
ポインタの指してる先を求めたい場合は
aaa->DATA[3]

左辺が何を要求しているのか(どういうものを操作したいのか)を頭の中で整理せずに
記述法だけを即物的にトレースするのはとてもまずい

642 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 18:00:40.01 ID:tNKVEDsJ0.net]
task02_tst()の呼び出しが
task02_tst(I2C_MEM)なのか
task02_tst(&I2C_MEM[1])なのかわからん

前者と仮定するとDEV_ADRにアクセスする方法は
1. (*(aaa + i)).DEV_ADR
2. aaa[i].DEV_ADR
3. (aaa + i)->DEV_ADR
なんかが考えられるけど(2は1の糖衣構文)、ドットとアローそれぞれの
左側の違いを理解しないと先には進めないよ

643 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 18:02:21.36 ID:tda6mQVw0.net]
>>631
意図が分からないからマトモに答えら

644 名前:れない
実際に数字入れて教えてくれ
例えば>>622はI2C_MEM = {4, 8, {0, 1, 2, 3}} でa,b,cはどうなるの?
[]
[ここ壊れてます]

645 名前:デフォルトの名無しさん [2017/10/12(木) 10:23:33.14 ID:jY+yK3vs6.net]
過疎ってるな

646 名前:デフォルトの名無しさん [2017/10/12(木) 11:18:46.53 ID:mQ4S5/8+0.net]
ちょっと質問です
↓下記のようなwhileの中身を複製するために使う実体化されない変数iをコンパイラ制御のための変数と明示する書き方ってあるんですか?

task02_tst ( I2C_MEM_typ *p , char i)
{
char i ;
i = 0 ;
while ( i < 2 )
{
p = p + i ;
a[i] = p -> DEV_ADR ;
b[i] = p -> REG_ADR ;
c[i][0] = p -> DATA[0] ;
c[i][1] = p -> DATA[1] ;
c[i][2] = p -> DATA[2] ;
c[i][3] = p -> DATA[3] ;
}
}

647 名前:デフォルトの名無しさん [2017/10/12(木) 11:24:19.55 ID:mQ4S5/8+0.net]
task02_tst ( I2C_MEM_typ *p )
{
char i ;
i = 0 ;
while ( i < 2 )
{
p = p + i ;
a[i] = p -> DEV_ADR ;
b[i] = p -> REG_ADR ;
c[i][0] = p -> DATA[0] ;
c[i][1] = p -> DATA[1] ;
c[i][2] = p -> DATA[2] ;
c[i][3] = p -> DATA[3] ;
}
}

に修正します

648 名前:デフォルトの名無しさん [2017/10/12(木) 11:26:34.34 ID:mQ4S5/8+0.net]
task02_tst ( I2C_MEM_typ *p )
{
char i ;
i = 0 ;
while ( i < 2 )
{
p = p + i ;
a[i] = p -> DEV_ADR ;
b[i] = p -> REG_ADR ;
c[i][0] = p -> DATA[0] ;
c[i][1] = p -> DATA[1] ;
c[i][2] = p -> DATA[2] ;
c[i][3] = p -> DATA[3] ;

i += 1 ;
}
}

に修正します



649 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 11:50:40.24 ID:z+R5CP9n0.net]
>>636
先ず日本語をなんとかした方がいい
『whileの中身を複製する』とはどういうことか?
『実体化されない変数』とは何か?
『コンパイラ制御のための変数』とは何か?

650 名前:デフォルトの名無しさん [2017/10/12(木) 12:32:35.60 ID:mQ4S5/8+0.net]
こんな感じで構造体をインデックスで指定した転送命令にコンパイルする意図で書いています

p = p + i ;                            //*実体化されない(マシンコード化されない)コード
mov a[0] ,  [構造体I2C_MEMの基底番地+0]
mov b[0] ,  [構造体I2C_MEMの基底番地+1]
mov c[0][0] ,  [構造体I2C_MEMの基底番地+2]
          :
mov c[0][3] ,  [構造体I2C_MEMの基底番地+5]
i += 1 ;                              //*実体化されない(マシンコード化されない)コード


p = p + i ;                            //*実体化されない(マシンコード化されない)コード
mov a[1] ,  [構造体I2C_MEMの基底番地+6]
mov b[1] ,  [構造体I2C_MEMの基底番地+7]
mov c[1][0] ,  [構造体I2C_MEMの基底番地+8]
          :
mov c[1][3] ,  [構造体I2C_MEMの基底番地+11]
i += 1 ;                              //*実体化されない(マシンコード化されない)コード

・・・で意図通りコンパイルしてくれるわけですが

実体化されない(メモリー空間またはレジスタファイルにアサインされない)char iの意味が
希薄になるのでコンパイラに対する変数だよと明示(コンパイラ&設計者に)したいのだが
そんな書き方ある?ということでありまして

651 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 12:41:11.33 ID:Z8zboj8V0.net]
多少は意図した記述に沿って機械語出力するだろうけど、
保障されてるわけでもないし、最適化他でどうなるかもわからん

「機械語でこうなって欲しい」という目的を達成させるならその部分を機械語で書くか、
(環境によるだろうけど)その部分だけをインラインアセンブラにする

652 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 12:42:56.26 ID:cscfLNVP0.net]
memcpy使ったらいいんじゃないの?

653 名前:片山博文MZ mailto:sage [2017/10/12(木) 12:52:32.73 ID:loBt1/dEd.net]
volatile

654 名前:デフォルトの名無しさん [2017/10/12(木) 13:04:26.04 ID:mQ4S5/8+0.net]
うーーん・・・

volatileは最適化抑止(消すなー!)のための記述と認識しているんですが
volatileの逆の機能が欲しいんですよね 実体化するなー!ってやつです

655 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 13:37:51.69 ID:jX4dlPv10.net]
volatile揮発性の当初の意図は
70年代コンピュータでの磁気コアメモリに置いておく、程度なんじゃあねえの

656 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 13:45:28.14 ID:Z8zboj8V0.net]
実体化するな=機械語としてコードにおくな
ということは、言語上での変数を一切使わずに繰り返し展開するような
テンプレートやマクロでメタプログラミングしたい って話になるが・・・

#define IMP(idx) do { \
a[idx] = p[idx].DEV_ADR; \
b[idx] = p[idx].REG_ADR; \
:
: 以下同じ様に記述
:
c[idx][3] = p[idx].DATA[3] ; } whle(0)

IMP(0);
IMP(1);
IMP(2);

変数を使ってループできないから 繰り返し分リテラルを手で並べる必要あるしー
正直ほめられたやりかたじゃないと思うわ

657 名前:デフォルトの名無しさん [2017/10/12(木) 14:25:00.48 ID:1sF6m3D2p.net]
実体化させたく無いものを記述?
…スラ二本じゃダメなのか?

658 名前:デフォルトの名無しさん [2017/10/12(木) 14:30:09.97 ID:9bJ1Vwh10.net]
そういう話ではないでしょ
そもそもループによるコードのキャストは
記述を短縮化するのが目的なんだから

キャストのためのループであることをコンパイラに
推論させるための変数指定の仕組みがあるのかな?ってはなし



659 名前:デフォルトの名無しさん [2017/10/12(木) 14:32:07.54 ID:9bJ1Vwh10.net]
まあ 指定しなくても現状でコンパイラは推論してるけれどもねw
なんかキモチ悪いといえばキモチ悪いんで指定できればうれしいってだけです

660 名前:デフォルトの名無しさん [2017/10/12(木) 14:36:32.09 ID:OhN0e73F6.net]
死ねゴミ

661 名前:デフォルトの名無しさん [2017/10/12(木) 14:37:45.66 ID:9bJ1Vwh10.net]
なんかすぐ出てこないところをみると
そこらへんはコンパイラまかせなのね

662 名前:デフォルトの名無しさん [2017/10/12(木) 14:38:53.90 ID:OhN0e73F6.net]
クッサ

663 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 14:45:29.40 ID:Z8zboj8V0.net]
結局 >>639 だったのか・・・

664 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 14:46:41.92 ID:z+R5CP9n0.net]
返答が幾つもついてるのに出てこないとか言っちゃうのは見たいものしか見ない人の典型だね

665 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 14:48:17.07 ID:XqOCC09Fd.net]
とりあえずお前には無理だ
諦めな

666 名前:デフォルトの名無しさん [2017/10/12(木) 15:03:43.28 ID:9bJ1Vwh10.net]
大体わかりました
ありがとうございました

667 名前:デフォルトの名無しさん [2017/10/12(木) 15:06:24.03 ID:OhN0e73F6.net]
一から10まで足し合わせるプログラムを教えてください。

668 名前:片山博文MZ mailto:sage [2017/10/12(木) 15:10:29.76 ID:loBt1/dEd.net]
>>657
#include <stdio.h>
int main(void) {
int i, n = 0;
for (i = 1; i <= 10; ++i) n += i;
printf("%d\n", n);
return 0;
}



669 名前:デフォルトの名無しさん [2017/10/12(木) 15:18:14.51 ID:OhN0e73F6.net]
>>658
ありがとうございます!

670 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 18:50:09.63 ID:7bIAw6590.net]
人に思いを正しく伝えられない奴がうまくプログラミングできるとは思えないけど大丈夫なんだろう

671 名前:デフォルトの名無しさん [2017/10/12(木) 20:36:00.66 ID:1sF6m3D2p.net]
俺は逆だと思っている。
人に上手く思いを伝えられないからこそ、
表現手段を駆使して伝えようと努力するんだよな。
絵とか音楽とか、クリエイターってそんな生き物。

672 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 21:49:52.42 ID:wn8w1zGC0.net]
>>661
> 絵とか音楽とか、クリエイターってそんな生き物。
全然違う
あいつらは自分の思いを伝えられるのは自分の表現法方だけだと思ってる
絵を描く奴で説明文を書いて思いを伝えるやつなんていないだろ

673 名前:デフォルトの名無しさん [2017/10/12(木) 23:57:59.88 ID:5ILt7KpA0.net]
>>645
メモリマップドI/Oに使える。特定のアドレスを読むとキーボードで入力した文字が読めるとか、そういうやつ。
読んだ直後に内容が変わる可能性があるので volatile でないとまずい。

674 名前:デフォルトの名無しさん [2017/10/13(金) 00:30:38.46 ID:neFZx4WS0.net]
共有メモリとか mmap() して複数のプロセスまたはスレッドがアクセスする領域も同じか。
あれ? こんなのちょっと前に話題にならなかったか?

675 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 06:51:32.49 ID:txebgbcNM.net]
DMAとかもあるわな

676 名前:デフォルトの名無しさん [2017/10/13(金) 12:09:21.29 ID:UePpwGnn0.net]
ちょっとお尋ねします

char *a ;  と記述すると
 ↓
char a ; 実体化
int (&a) ; 非実体化(コンパイラが使用する変数)

が生成される
*の概念が無いと

char a ;    実体化
int a_point ; 実体化(アドレス長=intとする)
a_point = &a ; 実体化

例えばこう書くことになる


ポインタは関数内で宣言できる
その場合そのポインタの寿命は関数内に限定される


こんな感じの認識であってますか?

677 名前:デフォルトの名無しさん [2017/10/13(金) 12:21:34.93 ID:ZC5rLpvkM.net]
ポインタの寿命はプログラム内じゃないん?

678 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 12:24:24.54 ID:y6HLA65k0.net]
実体化とか 非実体化とかの オレオレ用語は何を意図してるのかわからん



679 名前:デフォルトの名無しさん [2017/10/13(金) 12:29:00.47 ID:UePpwGnn0.net]
>>667
ということはプログラム内でユニークな名前をつけなければならないということですね?

680 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 12:29:33.87 ID:x6piWjtI0.net]
>>666
言ってる意味がわからない
何の言語やってたの?

681 名前: mailto:sage [2017/10/13(金) 12:30:40.15 ID:KnON5zi30.net]
>>666
>char a ; 実体化
>int (&a) ; 非実体化(コンパイラが使用する変数)
ポインタを定義したからといって,即応して実体が生成されることはない
ポインタがさす実体は自分で生成しないといけない

682 名前:デフォルトの名無しさん [2017/10/13(金) 12:31:44.24 ID:UePpwGnn0.net]
C言語です
実体/非実体とは機械語に変換されるかどうかということです

683 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 12:33:52.57 ID:piAojqU/0.net]
実体化とか非実体化とか、オブジェクト指向の概念でしょ。
Cではリテラルに対応するエリアがあって、それをデータの入れ物にするか、アドレスの入れ物にするか、だけでしょ。
いずれにしろ変数の寿命はグローバルスコープに定義するか、静的(static)に定義しないかぎり、
使われる関数のスコープ内に限られるでしょ。

684 名前:デフォルトの名無しさん [2017/10/13(金) 12:33:53.32 ID:/fw1jTt60.net]
>>666
> char a; 実体化
というのを除き、だいたい合ってる
char *a;ではcharの実体は作られずに
int(&a);だけが作られる

Cの前身のBでは、*3 = 1;で
メモリの3番地に1を書き込むようになっていた

アドレス演算子もあって
auto a, b; /* 型の概念がないので記憶クラスだけ */
a = &b; /* bとして使っているメモリのアドレスを取得 */
*a = 1; /* bに1を代入 */

つまり、おまえさんの言うように整数変数を
そのままアドレスの表現に使っていた

685 名前:デフォルトの名無しさん [2017/10/13(金) 12:42:43.01 ID:UePpwGnn0.net]
なるほど ありがとうございました

686 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 12:46:55.16 ID:DPD6/A6xM.net]
>>672
そんなものはコンパイラ次第で変わる
定数でアドレス取ってなきゃ実体を生成しないとか普通にあるし

687 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 12:48:21.81 ID:y6HLA65k0.net]
機械語に翻訳されるかどうかは
それまでの文意や環境(特に最適化)次第だもんな

688 名前:デフォルトの名無しさん [2017/10/13(金) 12:49:08.21 ID:UePpwGnn0.net]
ちょっとお尋ねします
ベテランとお見受けする方は

/*    */ 
↑コメントにこれつかいますけど

//
↑何故これつかわないんですか?
なにかしらトラブルの元になったりするんですか?



689 名前:デフォルトの名無しさん [2017/10/13(金) 12:49:26.38 ID:Xi3f71oh0.net]
すげえややこしいな
コンパイラ作りたくなってきた

690 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 13:06:01.52 ID:QZe0YwYUM.net]
>>678
C99準拠を仮定できないなら前者を使わざるをえない
複数行をコメントする場合や文の途中をコメントする場合は基本的に前者を使う
行の後半にコメントを書く場合は両方使う

691 名前:デフォルトの名無しさん [2017/10/13(金) 13:09:27.27 ID:UePpwGnn0.net]
おおおおおお
ありがとうございます
なるほどねー
そういうことですか

692 名前:デフォルトの名無しさん [2017/10/13(金) 14:53:58.16 ID:yVfJQeWEp.net]
//は、文字コード特有のバグがあってだな。

693 名前:デフォルトの名無しさん [2017/10/13(金) 15:14:34.29 ID:/fw1jTt60.net]
>>678
1行コメントならもちろん//を使うが
コメントが2行以上になる可能性が否定できない場合、
毎行いちいち//が必要なのは面倒なので
/*
*/
と折り返す恰好にする

それと1行コメントは内容的に馬鹿っぽくなりやすい
なんて気持ちもちょっとある

694 名前:デフォルトの名無しさん [2017/10/13(金) 16:31:54.32 ID:UePpwGnn0.net]
C99非準拠の環境って工場のメンテとかそんな感じっすかね

695 名前:デフォルトの名無しさん [2017/10/13(金) 16:50:15.81 ID:UePpwGnn0.net]
>>682
も気になるな

アスキーコード "2F2F"って何かあるんですか?

696 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 17:10:14.68 ID:51NkmwHu0.net]
emacsだとコメントリージョンは/*になるからだろうな。

697 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 17:23:15.84 ID:kwktlkZb0.net]
>>682 の話は行の最後に \ があると次の行に継続するってやつかな。
その言語仕様と Shift-JIS の特定文字との組み合わせで問題が起きる。
「表」や「能」は文末に来る可能性が高い字でしょ。

698 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 17:26:39.84 ID:KnON5zi30.net]
いまどき shift jis ですか?



699 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 17:37:27.25 ID:nzA1z5Pk0.net]
苦Cで勉強してるけど文字列がよくわからん
あれいる?

700 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 17:43:15.33 ID:KnON5zi30.net]
>>689
どれだ?

701 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 17:43:35.67 ID:z3X0WVAY0.net]
ただの\0終端の文字型の配列を便宜的に文字列と呼んでいるだけ

702 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 17:52:09.39 ID:nzA1z5Pk0.net]
文字列処理関数
わざわざ配列に文字列入れる意味あるのか?

703 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 17:56:53.82 ID:KnON5zi30.net]
>>692
https://9cguide.appspot.com/14-03.html
か?
入力に scanf() 系を薦めているのは古い(fgets() を使うべき)とか問題はあるが、
内容は基本的で絶対に必要なものだ
C には「文字列型」はなく文字型の配列で扱うのは基本的な了解事項だ

704 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 18:02:19.89 ID:nzA1z5Pk0.net]
>>693
それ
結構重要なんだな
atoi型とかもよくわからんが

705 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 18:05:48.92 ID:1QR3MvqoM.net]
>>692
入れないと文字処理何もできないよ

706 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 18:06:49.21 ID:KnON5zi30.net]
>>694
atoi() は文字列の表現からint型に収まる表現に変換するもの
C では "123" と 123 を厳密に区別する

707 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 18:07:38.35 ID:nzA1z5Pk0.net]
わざわざ配列でやるのってprintfじゃ上書きできないから?

708 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 18:09:43.61 ID:KnON5zi30.net]
sprintf() というものはある



709 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 18:26:23.09 ID:D1RCmTnA0.net]
atoi は 文字列から数値へ変換する方向
(s)printf は 数値から文字列に変換する方向

710 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 18:46:00.32 ID:nzA1z5Pk0.net]
すまんよくわからん
まぁ配列の重要性はわかったけどさ






[ 続きを読む ] / [ 携帯版 ]

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

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