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/
前
http://mevius.2ch.net/test/read.cgi/tech/1500293207/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C言語なら俺に聞け 142 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 8a6f-bDrV)
2017/08/10(木) 20:21:23.44ID:hEocmkh50614デフォルトの名無しさん (ワッチョイ 558c-v8iM)
2017/10/09(月) 03:39:59.55ID:69HXGpsc0 >>609
単調になるのは k のループ回数が少ないせいでは
単調になるのは k のループ回数が少ないせいでは
615デフォルトの名無しさん (ワッチョイ da7c-yS8h)
2017/10/09(月) 06:38:40.98ID:hRP3P7r40 そうだね k=1000くらいで
616デフォルトの名無しさん (ガックシ 060e-5Ff0)
2017/10/09(月) 08:53:44.75ID:IXUwPWpS6617デフォルトの名無しさん (アウアウカー Sa4d-xgRF)
2017/10/09(月) 09:35:07.86ID:IkImbMA7a618デフォルトの名無しさん (ワッチョイ 6955-clNK)
2017/10/09(月) 09:51:45.98ID:UMVukllE0 俺はこの書き方
if (condition) {
}
else {
}
if (condition) {
}
else {
}
619デフォルトの名無しさん (ワッチョイ 459e-G6mq)
2017/10/09(月) 09:55:27.10ID:pMEz2IHg0 コーディングスタイルにこだわる奴は素人。
620デフォルトの名無しさん (ガックシ 060e-5Ff0)
2017/10/09(月) 12:12:59.35ID:9ioWbZDx6 Linuxのソースコードは?
621デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/09(月) 13:24:11.42ID:N3YX2Zf80 ソース整形ツールの動作オプションの数で眩暈がするぜw
622デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/09(月) 14:12:40.72ID:98rFBdXp0 ■■たびたびお世話になります なにが悪いのかご指摘おねがいします■■
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 ;
}
}
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 ;
}
}
623デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/09(月) 14:22:20.38ID:98rFBdXp0 ↑単純に関数内で構造体のデータにポインタ+インデックスでアクセスしたい
624デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/09(月) 14:26:06.29ID:98rFBdXp0 間違い発見
p += 1 ; は aaa += 1 ; に置き換えてください
p += 1 ; は aaa += 1 ; に置き換えてください
625片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/09(月) 14:39:31.76ID:vdfcSFiBd626片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/09(月) 15:09:21.54ID:vdfcSFiBd char型のデータを代入したいのなら、両辺の型をcharにしないといけないよ。
627デフォルトの名無しさん (ワッチョイ 5ae1-bBfX)
2017/10/09(月) 15:26:29.02ID:G+wiEnLh0 >>622
> aaa -> DEV_ADR ;
> a[i] = *aaa ;
例えばこの部分は a[i] = aaa->DEV_ADR; という処理を意図してるのではないかと思う
ただし aaa->DATA のところは char* 型になるので char 型の c[i] に代入できない
> aaa -> DEV_ADR ;
> a[i] = *aaa ;
例えばこの部分は a[i] = aaa->DEV_ADR; という処理を意図してるのではないかと思う
ただし aaa->DATA のところは char* 型になるので char 型の c[i] に代入できない
628デフォルトの名無しさん (ドコグロ MM0d-Nz6W)
2017/10/09(月) 15:56:12.50ID:of8Vs49yM629デフォルトの名無しさん (ワッチョイ 5593-Xc0J)
2017/10/09(月) 17:01:40.23ID:u+Z6y4O20 初心者相手に表記法を変えると理解しにくいかも。
本質から外れた部分が目についてしまうからね。
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 をまとめただけ、だけど。
本質から外れた部分が目についてしまうからね。
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 をまとめただけ、だけど。
630デフォルトの名無しさん (ワッチョイ 059f-huPf)
2017/10/09(月) 17:19:35.64ID:tFlwnlNI0 >>629
c を char *c[2] で宣言しておけばなんとかなるね。
c を char *c[2] で宣言しておけばなんとかなるね。
631デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/09(月) 17:34:38.15ID:98rFBdXp0 皆様 どうもありがとうございます
とりあえず代入の書き方が知りたかっただけでありまして
ちなみにインデックスを使用した配列メンバーのアクセスなんだけど
c[i] = aaa -> DATA +0 ;
d[i] = aaa -> DATA +1 ;
e[i] = aaa -> DATA +2 ;
f[i] = aaa -> DATA +3 ;
こんな書き方ってできるの?
とりあえず代入の書き方が知りたかっただけでありまして
ちなみにインデックスを使用した配列メンバーのアクセスなんだけど
c[i] = aaa -> DATA +0 ;
d[i] = aaa -> DATA +1 ;
e[i] = aaa -> DATA +2 ;
f[i] = aaa -> DATA +3 ;
こんな書き方ってできるの?
632デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/09(月) 17:44:30.12ID:N3YX2Zf80 ポインタを返す場合はそういう書き方
aaa->DATA+3
ポインタの指してる先を求めたい場合は
aaa->DATA[3]
左辺が何を要求しているのか(どういうものを操作したいのか)を頭の中で整理せずに
記述法だけを即物的にトレースするのはとてもまずい
aaa->DATA+3
ポインタの指してる先を求めたい場合は
aaa->DATA[3]
左辺が何を要求しているのか(どういうものを操作したいのか)を頭の中で整理せずに
記述法だけを即物的にトレースするのはとてもまずい
633デフォルトの名無しさん (ワッチョイ 958a-j1W8)
2017/10/09(月) 18:00:40.01ID:tNKVEDsJ0 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の糖衣構文)、ドットとアローそれぞれの
左側の違いを理解しないと先には進めないよ
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の糖衣構文)、ドットとアローそれぞれの
左側の違いを理解しないと先には進めないよ
634デフォルトの名無しさん (ワッチョイ 9dc3-evb8)
2017/10/09(月) 18:02:21.36ID:tda6mQVw0635デフォルトの名無しさん (ガックシ 06eb-HijE)
2017/10/12(木) 10:23:33.14ID:jY+yK3vs6 過疎ってるな
636デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 11:18:46.53ID:mQ4S5/8+0 ちょっと質問です
↓下記のような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] ;
}
}
↓下記のような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] ;
}
}
637デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 11:24:19.55ID:mQ4S5/8+0 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] ;
}
}
に修正します
{
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] ;
}
}
に修正します
638デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 11:26:34.34ID:mQ4S5/8+0 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 ;
}
}
に修正します
{
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 ;
}
}
に修正します
639デフォルトの名無しさん (ワッチョイ 13e1-IVl6)
2017/10/12(木) 11:50:40.24ID:z+R5CP9n0640デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 12:32:35.60ID:mQ4S5/8+0 こんな感じで構造体をインデックスで指定した転送命令にコンパイルする意図で書いています
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の意味が
希薄になるのでコンパイラに対する変数だよと明示(コンパイラ&設計者に)したいのだが
そんな書き方ある?ということでありまして
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の意味が
希薄になるのでコンパイラに対する変数だよと明示(コンパイラ&設計者に)したいのだが
そんな書き方ある?ということでありまして
641デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/12(木) 12:41:11.33ID:Z8zboj8V0 多少は意図した記述に沿って機械語出力するだろうけど、
保障されてるわけでもないし、最適化他でどうなるかもわからん
「機械語でこうなって欲しい」という目的を達成させるならその部分を機械語で書くか、
(環境によるだろうけど)その部分だけをインラインアセンブラにする
保障されてるわけでもないし、最適化他でどうなるかもわからん
「機械語でこうなって欲しい」という目的を達成させるならその部分を機械語で書くか、
(環境によるだろうけど)その部分だけをインラインアセンブラにする
642デフォルトの名無しさん (ワッチョイ 13cf-HoIg)
2017/10/12(木) 12:42:56.26ID:cscfLNVP0 memcpy使ったらいいんじゃないの?
643片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/12(木) 12:52:32.73ID:loBt1/dEd volatile
644デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 13:04:26.04ID:mQ4S5/8+0 うーーん・・・
volatileは最適化抑止(消すなー!)のための記述と認識しているんですが
volatileの逆の機能が欲しいんですよね 実体化するなー!ってやつです
volatileは最適化抑止(消すなー!)のための記述と認識しているんですが
volatileの逆の機能が欲しいんですよね 実体化するなー!ってやつです
645デフォルトの名無しさん (ワッチョイ 1312-B6a6)
2017/10/12(木) 13:37:51.69ID:jX4dlPv10 volatile揮発性の当初の意図は
70年代コンピュータでの磁気コアメモリに置いておく、程度なんじゃあねえの
70年代コンピュータでの磁気コアメモリに置いておく、程度なんじゃあねえの
646デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/12(木) 13:45:28.14ID:Z8zboj8V0 実体化するな=機械語としてコードにおくな
ということは、言語上での変数を一切使わずに繰り返し展開するような
テンプレートやマクロでメタプログラミングしたい って話になるが・・・
#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);
変数を使ってループできないから 繰り返し分リテラルを手で並べる必要あるしー
正直ほめられたやりかたじゃないと思うわ
ということは、言語上での変数を一切使わずに繰り返し展開するような
テンプレートやマクロでメタプログラミングしたい って話になるが・・・
#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);
変数を使ってループできないから 繰り返し分リテラルを手で並べる必要あるしー
正直ほめられたやりかたじゃないと思うわ
647デフォルトの名無しさん (ササクッテロレ Sp45-NqOW)
2017/10/12(木) 14:25:00.48ID:1sF6m3D2p 実体化させたく無いものを記述?
…スラ二本じゃダメなのか?
…スラ二本じゃダメなのか?
648デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 14:30:09.97ID:9bJ1Vwh10 そういう話ではないでしょ
そもそもループによるコードのキャストは
記述を短縮化するのが目的なんだから
キャストのためのループであることをコンパイラに
推論させるための変数指定の仕組みがあるのかな?ってはなし
そもそもループによるコードのキャストは
記述を短縮化するのが目的なんだから
キャストのためのループであることをコンパイラに
推論させるための変数指定の仕組みがあるのかな?ってはなし
649デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 14:32:07.54ID:9bJ1Vwh10 まあ 指定しなくても現状でコンパイラは推論してるけれどもねw
なんかキモチ悪いといえばキモチ悪いんで指定できればうれしいってだけです
なんかキモチ悪いといえばキモチ悪いんで指定できればうれしいってだけです
650デフォルトの名無しさん (ガックシ 06eb-HijE)
2017/10/12(木) 14:36:32.09ID:OhN0e73F6 死ねゴミ
651デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 14:37:45.66ID:9bJ1Vwh10 なんかすぐ出てこないところをみると
そこらへんはコンパイラまかせなのね
そこらへんはコンパイラまかせなのね
652デフォルトの名無しさん (ガックシ 06eb-HijE)
2017/10/12(木) 14:38:53.90ID:OhN0e73F6 クッサ
653デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/12(木) 14:45:29.40ID:Z8zboj8V0 結局 >>639 だったのか・・・
654デフォルトの名無しさん (ワッチョイ 13e1-IVl6)
2017/10/12(木) 14:46:41.92ID:z+R5CP9n0 返答が幾つもついてるのに出てこないとか言っちゃうのは見たいものしか見ない人の典型だね
655デフォルトの名無しさん (スップ Sd33-BnQ2)
2017/10/12(木) 14:48:17.07ID:XqOCC09Fd とりあえずお前には無理だ
諦めな
諦めな
656デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 15:03:43.28ID:9bJ1Vwh10 大体わかりました
ありがとうございました
ありがとうございました
657デフォルトの名無しさん (ガックシ 06eb-HijE)
2017/10/12(木) 15:06:24.03ID:OhN0e73F6 一から10まで足し合わせるプログラムを教えてください。
658片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/12(木) 15:10:29.76ID:loBt1/dEd >>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;
}
#include <stdio.h>
int main(void) {
int i, n = 0;
for (i = 1; i <= 10; ++i) n += i;
printf("%d\n", n);
return 0;
}
659デフォルトの名無しさん (ガックシ 06eb-HijE)
2017/10/12(木) 15:18:14.51ID:OhN0e73F6 >>658
ありがとうございます!
ありがとうございます!
660デフォルトの名無しさん (ワッチョイ 59b3-89ZN)
2017/10/12(木) 18:50:09.63ID:7bIAw6590 人に思いを正しく伝えられない奴がうまくプログラミングできるとは思えないけど大丈夫なんだろう
661デフォルトの名無しさん (ササクッテロレ Sp45-NqOW)
2017/10/12(木) 20:36:00.66ID:1sF6m3D2p 俺は逆だと思っている。
人に上手く思いを伝えられないからこそ、
表現手段を駆使して伝えようと努力するんだよな。
絵とか音楽とか、クリエイターってそんな生き物。
人に上手く思いを伝えられないからこそ、
表現手段を駆使して伝えようと努力するんだよな。
絵とか音楽とか、クリエイターってそんな生き物。
662デフォルトの名無しさん (ワッチョイ 13b3-itUa)
2017/10/12(木) 21:49:52.42ID:wn8w1zGC0 >>661
> 絵とか音楽とか、クリエイターってそんな生き物。
全然違う
あいつらは自分の思いを伝えられるのは自分の表現法方だけだと思ってる
絵を描く奴で説明文を書いて思いを伝えるやつなんていないだろ
> 絵とか音楽とか、クリエイターってそんな生き物。
全然違う
あいつらは自分の思いを伝えられるのは自分の表現法方だけだと思ってる
絵を描く奴で説明文を書いて思いを伝えるやつなんていないだろ
663デフォルトの名無しさん (ワッチョイ 799f-BSx0)
2017/10/12(木) 23:57:59.88ID:5ILt7KpA0664デフォルトの名無しさん (ワッチョイ 799f-BSx0)
2017/10/13(金) 00:30:38.46ID:neFZx4WS0 共有メモリとか mmap() して複数のプロセスまたはスレッドがアクセスする領域も同じか。
あれ? こんなのちょっと前に話題にならなかったか?
あれ? こんなのちょっと前に話題にならなかったか?
665デフォルトの名無しさん (ドコグロ MM63-itUa)
2017/10/13(金) 06:51:32.49ID:txebgbcNM DMAとかもあるわな
666デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 12:09:21.29ID:UePpwGnn0 ちょっとお尋ねします
char *a ; と記述すると
↓
char a ; 実体化
int (&a) ; 非実体化(コンパイラが使用する変数)
が生成される
*の概念が無いと
char a ; 実体化
int a_point ; 実体化(アドレス長=intとする)
a_point = &a ; 実体化
例えばこう書くことになる
ポインタは関数内で宣言できる
その場合そのポインタの寿命は関数内に限定される
こんな感じの認識であってますか?
char *a ; と記述すると
↓
char a ; 実体化
int (&a) ; 非実体化(コンパイラが使用する変数)
が生成される
*の概念が無いと
char a ; 実体化
int a_point ; 実体化(アドレス長=intとする)
a_point = &a ; 実体化
例えばこう書くことになる
ポインタは関数内で宣言できる
その場合そのポインタの寿命は関数内に限定される
こんな感じの認識であってますか?
667デフォルトの名無しさん (アウーイモ MM1d-1+gY)
2017/10/13(金) 12:21:34.93ID:ZC5rLpvkM ポインタの寿命はプログラム内じゃないん?
668デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/13(金) 12:24:24.54ID:y6HLA65k0 実体化とか 非実体化とかの オレオレ用語は何を意図してるのかわからん
669デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 12:29:00.47ID:UePpwGnn0 >>667
ということはプログラム内でユニークな名前をつけなければならないということですね?
ということはプログラム内でユニークな名前をつけなければならないということですね?
670デフォルトの名無しさん (ワッチョイ 5387-6M7B)
2017/10/13(金) 12:29:33.87ID:x6piWjtI0 >>666
>char a ; 実体化
>int (&a) ; 非実体化(コンパイラが使用する変数)
ポインタを定義したからといって,即応して実体が生成されることはない
ポインタがさす実体は自分で生成しないといけない
>char a ; 実体化
>int (&a) ; 非実体化(コンパイラが使用する変数)
ポインタを定義したからといって,即応して実体が生成されることはない
ポインタがさす実体は自分で生成しないといけない
672デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 12:31:44.24ID:UePpwGnn0 C言語です
実体/非実体とは機械語に変換されるかどうかということです
実体/非実体とは機械語に変換されるかどうかということです
673デフォルトの名無しさん (ワッチョイ 8be8-B6a6)
2017/10/13(金) 12:33:52.57ID:piAojqU/0 実体化とか非実体化とか、オブジェクト指向の概念でしょ。
Cではリテラルに対応するエリアがあって、それをデータの入れ物にするか、アドレスの入れ物にするか、だけでしょ。
いずれにしろ変数の寿命はグローバルスコープに定義するか、静的(static)に定義しないかぎり、
使われる関数のスコープ内に限られるでしょ。
Cではリテラルに対応するエリアがあって、それをデータの入れ物にするか、アドレスの入れ物にするか、だけでしょ。
いずれにしろ変数の寿命はグローバルスコープに定義するか、静的(static)に定義しないかぎり、
使われる関数のスコープ内に限られるでしょ。
674デフォルトの名無しさん (ワッチョイ 0b3f-MWTH)
2017/10/13(金) 12:33:53.32ID:/fw1jTt60 >>666
> char a; 実体化
というのを除き、だいたい合ってる
char *a;ではcharの実体は作られずに
int(&a);だけが作られる
Cの前身のBでは、*3 = 1;で
メモリの3番地に1を書き込むようになっていた
アドレス演算子もあって
auto a, b; /* 型の概念がないので記憶クラスだけ */
a = &b; /* bとして使っているメモリのアドレスを取得 */
*a = 1; /* bに1を代入 */
つまり、おまえさんの言うように整数変数を
そのままアドレスの表現に使っていた
> char a; 実体化
というのを除き、だいたい合ってる
char *a;ではcharの実体は作られずに
int(&a);だけが作られる
Cの前身のBでは、*3 = 1;で
メモリの3番地に1を書き込むようになっていた
アドレス演算子もあって
auto a, b; /* 型の概念がないので記憶クラスだけ */
a = &b; /* bとして使っているメモリのアドレスを取得 */
*a = 1; /* bに1を代入 */
つまり、おまえさんの言うように整数変数を
そのままアドレスの表現に使っていた
675デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 12:42:43.01ID:UePpwGnn0 なるほど ありがとうございました
676デフォルトの名無しさん (ドコグロ MM55-itUa)
2017/10/13(金) 12:46:55.16ID:DPD6/A6xM677デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/13(金) 12:48:21.81ID:y6HLA65k0 機械語に翻訳されるかどうかは
それまでの文意や環境(特に最適化)次第だもんな
それまでの文意や環境(特に最適化)次第だもんな
678デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 12:49:08.21ID:UePpwGnn0 ちょっとお尋ねします
ベテランとお見受けする方は
/* */
↑コメントにこれつかいますけど
//
↑何故これつかわないんですか?
なにかしらトラブルの元になったりするんですか?
ベテランとお見受けする方は
/* */
↑コメントにこれつかいますけど
//
↑何故これつかわないんですか?
なにかしらトラブルの元になったりするんですか?
679デフォルトの名無しさん (ワッチョイ 79be-HijE)
2017/10/13(金) 12:49:26.38ID:Xi3f71oh0 すげえややこしいな
コンパイラ作りたくなってきた
コンパイラ作りたくなってきた
680デフォルトの名無しさん (ドコグロ MM7d-g9Ug)
2017/10/13(金) 13:06:01.52ID:QZe0YwYUM681デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 13:09:27.27ID:UePpwGnn0 おおおおおお
ありがとうございます
なるほどねー
そういうことですか
ありがとうございます
なるほどねー
そういうことですか
682デフォルトの名無しさん (ササクッテロロ Sp45-NqOW)
2017/10/13(金) 14:53:58.16ID:yVfJQeWEp //は、文字コード特有のバグがあってだな。
683デフォルトの名無しさん (ワッチョイ 0b3f-MWTH)
2017/10/13(金) 15:14:34.29ID:/fw1jTt60 >>678
1行コメントならもちろん//を使うが
コメントが2行以上になる可能性が否定できない場合、
毎行いちいち//が必要なのは面倒なので
/*
*/
と折り返す恰好にする
それと1行コメントは内容的に馬鹿っぽくなりやすい
なんて気持ちもちょっとある
1行コメントならもちろん//を使うが
コメントが2行以上になる可能性が否定できない場合、
毎行いちいち//が必要なのは面倒なので
/*
*/
と折り返す恰好にする
それと1行コメントは内容的に馬鹿っぽくなりやすい
なんて気持ちもちょっとある
684デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 16:31:54.32ID:UePpwGnn0 C99非準拠の環境って工場のメンテとかそんな感じっすかね
685デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 16:50:15.81ID:UePpwGnn0686デフォルトの名無しさん (ワッチョイ e961-z1uI)
2017/10/13(金) 17:10:14.68ID:51NkmwHu0 emacsだとコメントリージョンは/*になるからだろうな。
687デフォルトの名無しさん (ワッチョイ 1993-grZD)
2017/10/13(金) 17:23:15.84ID:kwktlkZb0 >>682 の話は行の最後に \ があると次の行に継続するってやつかな。
その言語仕様と Shift-JIS の特定文字との組み合わせで問題が起きる。
「表」や「能」は文末に来る可能性が高い字でしょ。
その言語仕様と Shift-JIS の特定文字との組み合わせで問題が起きる。
「表」や「能」は文末に来る可能性が高い字でしょ。
688デフォルトの名無しさん (ワッチョイ d360-89ZN)
2017/10/13(金) 17:26:39.84ID:KnON5zi30 いまどき shift jis ですか?
689デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/13(金) 17:37:27.25ID:nzA1z5Pk0 苦Cで勉強してるけど文字列がよくわからん
あれいる?
あれいる?
690デフォルトの名無しさん (ワッチョイ d360-89ZN)
2017/10/13(金) 17:43:15.33ID:KnON5zi30 >>689
どれだ?
どれだ?
691デフォルトの名無しさん (ワッチョイ fb8a-0Pb6)
2017/10/13(金) 17:43:35.67ID:z3X0WVAY0 ただの\0終端の文字型の配列を便宜的に文字列と呼んでいるだけ
692デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/13(金) 17:52:09.39ID:nzA1z5Pk0 文字列処理関数
わざわざ配列に文字列入れる意味あるのか?
わざわざ配列に文字列入れる意味あるのか?
693デフォルトの名無しさん (ワッチョイ d360-89ZN)
2017/10/13(金) 17:56:53.82ID:KnON5zi30 >>692
https://9cguide.appspot.com/14-03.html
か?
入力に scanf() 系を薦めているのは古い(fgets() を使うべき)とか問題はあるが、
内容は基本的で絶対に必要なものだ
C には「文字列型」はなく文字型の配列で扱うのは基本的な了解事項だ
https://9cguide.appspot.com/14-03.html
か?
入力に scanf() 系を薦めているのは古い(fgets() を使うべき)とか問題はあるが、
内容は基本的で絶対に必要なものだ
C には「文字列型」はなく文字型の配列で扱うのは基本的な了解事項だ
694デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/13(金) 18:02:19.89ID:nzA1z5Pk0695デフォルトの名無しさん (ブーイモ MMcb-13gS)
2017/10/13(金) 18:05:48.92ID:1QR3MvqoM >>692
入れないと文字処理何もできないよ
入れないと文字処理何もできないよ
696デフォルトの名無しさん (ワッチョイ d360-cyyB)
2017/10/13(金) 18:06:49.21ID:KnON5zi30697デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/13(金) 18:07:38.35ID:nzA1z5Pk0 わざわざ配列でやるのってprintfじゃ上書きできないから?
698デフォルトの名無しさん (ワッチョイ d360-cyyB)
2017/10/13(金) 18:09:43.61ID:KnON5zi30 sprintf() というものはある
699デフォルトの名無しさん (ワッチョイ 59b3-89ZN)
2017/10/13(金) 18:26:23.09ID:D1RCmTnA0 atoi は 文字列から数値へ変換する方向
(s)printf は 数値から文字列に変換する方向
(s)printf は 数値から文字列に変換する方向
700デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/13(金) 18:46:00.32ID:nzA1z5Pk0 すまんよくわからん
まぁ配列の重要性はわかったけどさ
まぁ配列の重要性はわかったけどさ
701デフォルトの名無しさん (ワッチョイ 9123-gv9Q)
2017/10/13(金) 19:47:45.81ID:9FeTZoAH0 入力して下さい ?
? の二倍は---
っての作りたい
? の二倍は---
っての作りたい
702デフォルトの名無しさん (ワッチョイ 0b3f-MWTH)
2017/10/13(金) 19:53:08.82ID:/fw1jTt60 またfgets厨が湧いたか
Cスレには付きものだが
誰が吹き込んでるんだかしつこさが異常なんだよな
まったく
Cスレには付きものだが
誰が吹き込んでるんだかしつこさが異常なんだよな
まったく
703デフォルトの名無しさん (ガックシ 06eb-HijE)
2017/10/13(金) 20:16:18.00ID:qDJA92iZ6 >>701
/* -*- C -*- */
#include <stdio.h>
int main()
{
int input;
scanf("入力して下さい:%d", &input);
printf("%dの二倍は%d\n", input, input * 2);
return 0;
}
/* -*- C -*- */
#include <stdio.h>
int main()
{
int input;
scanf("入力して下さい:%d", &input);
printf("%dの二倍は%d\n", input, input * 2);
return 0;
}
704デフォルトの名無しさん (ワッチョイ d360-cyyB)
2017/10/13(金) 20:21:21.47ID:KnON5zi30 >>702
fgets() の方が総合的にすぐれていると思うのだが
fgets() の方が総合的にすぐれていると思うのだが
705デフォルトの名無しさん (ワッチョイ 0b3f-MWTH)
2017/10/13(金) 21:08:48.11ID:/fw1jTt60 何がどのように何に対して優れているんだ?
腐っても工学者たるもの客観的で再検証可能な主張をしてみな
腐っても工学者たるもの客観的で再検証可能な主張をしてみな
706デフォルトの名無しさん (ワッチョイ 59b3-89ZN)
2017/10/13(金) 21:11:50.63ID:D1RCmTnA0 >>703
scanf はメッセージを出力したうえで値を受け取る関数じゃないんだ 残念ながら
scanf はメッセージを出力したうえで値を受け取る関数じゃないんだ 残念ながら
707デフォルトの名無しさん (ササクッテロロ Sp45-NqOW)
2017/10/13(金) 21:17:30.86ID:yVfJQeWEp え?scanfは、この通り打ち込まないと認識しないよって事だろ?
708デフォルトの名無しさん (ワッチョイ 59b3-89ZN)
2017/10/13(金) 21:20:10.60ID:D1RCmTnA0 >>701 のは 入力して下さい も含めて入力を要求してたのか
こりゃ失礼
こりゃ失礼
709デフォルトの名無しさん (ワッチョイ 5975-HijE)
2017/10/13(金) 21:31:55.79ID:DZqiVJRN0 >>706
dクス
dクス
710片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/13(金) 21:37:13.63ID:aO55acrud >>701
#include <stdio.h>
int main(void)
{
int n;
char buf[32];
printf("入力して下さい:");
fgets(buf, sizeof(buf), stdin);
n = atoi(buf);
printf("%dの二倍は%d\n", n, n * 2);
return 0;
}
#include <stdio.h>
int main(void)
{
int n;
char buf[32];
printf("入力して下さい:");
fgets(buf, sizeof(buf), stdin);
n = atoi(buf);
printf("%dの二倍は%d\n", n, n * 2);
return 0;
}
711デフォルトの名無しさん (ワッチョイ d360-cyyB)
2017/10/13(金) 21:39:30.87ID:KnON5zi30712デフォルトの名無しさん (ワッチョイ eb7f-MV6u)
2017/10/13(金) 22:15:45.85ID:xDZ8VANT0 それ都市伝説だから、単に使い方間違えてるだけだから!
フィールド幅をちゃんと指定すればscanf系でも安全だよ?
まぁ、エラーメッセージの都合上fgets使うかもだけど。。。
フィールド幅をちゃんと指定すればscanf系でも安全だよ?
まぁ、エラーメッセージの都合上fgets使うかもだけど。。。
713デフォルトの名無しさん (ワッチョイ 13cf-HoIg)
2017/10/13(金) 22:16:23.56ID:HDAg9FRW0 gets_s()やscanf_s()を使えば済む話に思えるが
714デフォルトの名無しさん (ブーイモ MM0d-edxA)
2017/10/13(金) 22:20:11.49ID:vlU7OwXLM 言いたいことは分かるなぁ
printfだって使い方間違えればフォーマットストリングで死ぬしな
printfだって使い方間違えればフォーマットストリングで死ぬしな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★2 [蚤の市★]
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 [蚤の市★]
- 【ド軍】山本由伸、WBC出場を決断!ドジャースが本人の意向を尊重、佐々木朗希はチームが故障歴を懸念で不参加 [鉄チーズ烏★]
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ ★2 [蚤の市★]
- 【テレビ】粗品「THE W」バッサリ「おもんない、レベル低い」審査員就任で「日テレが“血の海”に…」 [湛然★]
- 通気取り「⚪︎⚪︎を食べればその店の実力が分かる」←だから何だ?
- 女の子集合!
- ひまでんぼ
- おまえら宝くじは買わないと当たらないんだぞ?
- タバコ吸わんがこれでタバコ吸ってたらカッコ良いかも
- 「鈴木彩艷」←これ読めない奴wwwwwwwwwwwwwwwwwwwwwwwwwwwwww
