C言語なら俺に聞け 142 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 8a6f-bDrV)
垢版 |
2017/08/10(木) 20:21:23.44ID:hEocmkh50
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
567デフォルトの名無しさん (ワッチョイ b632-rzHd)
垢版 |
2017/10/06(金) 15:16:39.88ID:qH0Ei3hn0
>>566
形容詞には比較をつけろ
一年目でおぼえる初歩だろうがボケ
568デフォルトの名無しさん (ワッチョイ 0516-5Ff0)
垢版 |
2017/10/06(金) 15:20:28.76ID:B4vVDMXU0
うんち!
2017/10/06(金) 17:45:14.09ID:4Iec6HYc0
>>567
朝鮮語ではそう言うルールがあるのか?
日本語にはないぞ
2017/10/06(金) 18:41:01.91ID:fZ4i0/3ka
>>567
>>559のレスの中の「早く」の使い方は自然だと思うが…。
日本語学校の1年目に、どう教わったの?
571デフォルトの名無しさん (ワッチョイ b632-rzHd)
垢版 |
2017/10/06(金) 20:42:56.05ID:qH0Ei3hn0
>>569
朝鮮語か日本語かには関係ない
電気屋のルールだ
572デフォルトの名無しさん (ワッチョイ 059f-huPf)
垢版 |
2017/10/07(土) 14:47:24.49ID:f9dDdlSq0
>>555
>>546にはそのstrncpy()が書かれているが?
573デフォルトの名無しさん (エーイモ SEda-2JKf)
垢版 |
2017/10/08(日) 10:02:50.14ID:iaWD4MFGE
PHPしかできないザコだったけどC言語が楽しい
Cのスタンダードなコーディングスタイルってないですか?
インデントにタブ使ってたりifに{}使ってなかったりするコードをよく見かけますけど
2017/10/08(日) 10:09:18.29ID:+nfO/L5n0
戦争でも起こす気か?
2017/10/08(日) 11:30:23.33ID:HosRocIl0
>>573
C言語 コーディングスタイル
でググれ
あと結果の報告は要らん
と言うか報告するな
理由は>>574に書いてある
2017/10/08(日) 11:56:53.58ID:SX/6L99bd
戦いの火蓋は切って落とされた
2017/10/08(日) 13:00:43.13ID:FR3ELF64M
インデントは空白4個だね
578デフォルトの名無しさん (ワッチョイ 0516-5Ff0)
垢版 |
2017/10/08(日) 13:04:33.16ID:SXbZ1Yc30
>>573
ほんまC言語楽しいよな
俺もC#かWeb系スクリプト言語しか使ったことなかったんだが
2017/10/08(日) 13:04:53.34ID:e96mZsST0
>>577
2つで十分ですよ
580デフォルトの名無しさん (ワッチョイ 0516-5Ff0)
垢版 |
2017/10/08(日) 13:05:13.53ID:SXbZ1Yc30
C++はゴミ
581デフォルトの名無しさん (ワッチョイ 059f-huPf)
垢版 |
2017/10/08(日) 14:51:03.41ID:c+/m9riq0
>>579
いやタブ1つにして表示幅はスペース4つ分だ。
582デフォルトの名無しさん (ワッチョイ 059f-huPf)
垢版 |
2017/10/08(日) 14:54:49.62ID:c+/m9riq0
>>576
ああ。もうこのスレはスペース開けるか開けないか改行するかしないか何文字にするか中括弧はどうするか行末にバックスラッシュ入れて次行に書くか書かないかgotoどうするか等の話で延々と10年ぐらい費やされるんだろうな。
もちろんエディタの話に飛び火してviがvimがemacsがとなる。
2017/10/08(日) 14:55:08.52ID:bhcsmcAx0
スペース一つで充分
2017/10/08(日) 15:03:04.04ID:Eg4i3QFB0
プログラム終了前にfree()が必要かどうかを忘れちゃいかん。
585デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
垢版 |
2017/10/08(日) 16:00:19.88ID:tULmhvm40
ちょっと教えてくださいとあるHPから抜粋
意味が分からないので解説お願いします
私が負荷した文は<<  >>で囲みます

struct Person {
char name[20];
int sex;
// char sex;
int age;
double height;
double weight;
} person_s;               <<←今までの自分の認識:Person構造体のインスタンスperson_sを生成 しかしこの認識は後述@でpがインスタンスであると推定できることから間違っていると推定できる>>
                      << person_sは構造体宣言の為の鋳型と推定 しかし様々なプログラムをチェックするとここでインスタンス宣言している例も見受けられる >>
                      << 変数が構造体宣言の為の鋳型なのかインスタンスなのかはコンパイラが記述から自動判断???>>
person_s p;               << ←pがPerson構造体のインスタンスであることは後述@のメンバ呼び出しで推定できる >> 

とかけば、不要な宣言を減らすことができます。
構造体メンバの初期化
各メンバの初期化方法として次のようなものがあります

person_s p = {"Tom", 0, 20, 175.2, 66.5};  <<←構造体宣言鋳型person_sを使用しpをインスタンス宣言??>>

// または

person_s p;         << 構造体宣言鋳型person_sを使用しpをインスタンス宣言?? >>
p.name = "Tom";     << この記述でpが構造体Personのインスタンスであると推定できる ・・・@ >>
p.sex = 0;

<< person_sは構造体宣言の鋳型 pはインスタンスであると推定できるが >>
<< 何故ダイレクトにPersonを使ってpを宣言しないのか? >>
<< 何故person_sなどという変数を使って間接的に宣言するのか? >>
<< うんちくきぼんぬ >>
2017/10/08(日) 16:03:19.22ID:dE95R3nJ0
struct Person の前に typedef がありそうな雰囲気
2017/10/08(日) 16:13:28.90ID:yi/NbOiJ0
ここかな
https://qiita.com/nomunomu/items/1a72b0150ea0fcf442b0
typedef の書き漏れだろうね
2017/10/08(日) 16:38:19.39ID:HosRocIl0
>>584
exit() の前にだろ
2017/10/08(日) 17:08:17.03ID:F9J/pQ0V0
C++ならtypedefなくても可
多分.cppでビルド通したんだろうね
2017/10/08(日) 17:13:11.77ID:dE95R3nJ0
>>589
後の句 person_s を型名として使ってるんで typedef は必須じゃない?
(strust 省略の Person で宣言してるのとは違う)
591デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
垢版 |
2017/10/08(日) 17:16:54.10ID:tULmhvm40
なるほどー ありがとうございました
2017/10/08(日) 17:26:51.19ID:F9J/pQ0V0
>>590
C++ではtypedefは不要だよ(別にあっても構わないけど)
structとclassはメンバーのデフォルト設定がpublicかprivateかという違いを除けば構文的には全く同じように使える
structで継承することすら出来る
2017/10/08(日) 17:32:00.82ID:dE95R3nJ0
>>592
論点はそこじゃなくて
 struct Person { };
 Person p;
が C++ では文法として通るのは指摘の通り

質問元の記述では
 struct Person { } person_s;
 person_s p;

こうなってるから、これじゃ C++ の文法でも通らないでしょうよ ってことで
2017/10/08(日) 17:37:28.39ID:F9J/pQ0V0
通るよ
class宣言ではいちいちtypedefなど使わないのと同じように構造体でもtypedefは省略するのが一般的
むしろ先頭の構造体テンプレート名を省略して最後の型名だけ宣言する場合も多い
2017/10/08(日) 17:42:06.58ID:dE95R3nJ0
https://ideone.com/e1pLf2
通ったっけ? って確認コード
インスタンスとtypedef の区別つく?
2017/10/08(日) 18:04:45.47ID:PUMPETat0
structが省略可能になってtypedefしなくなったのを
typedefが省略可能と間違って覚えてるんじゃないだろうか
2017/10/08(日) 18:08:10.27ID:dlDwfjxk0
>>594
>>595 を見る限り通らないようだね
2017/10/08(日) 18:14:58.26ID:ALuk3l/eM
あれ?
通らないのかこれ?
2017/10/08(日) 18:20:47.85ID:dE95R3nJ0
型名のエイリアス宣言と  その型のインスタンスの生成
typedef を省略した場合には、全く同じ記述になるんだけど
後者のインスタンスの生成で翻訳してるぜ
2017/10/08(日) 18:29:26.73ID:HosRocIl0
通ると思う方がどうかしてるわ
2017/10/08(日) 18:32:58.84ID:LFQQ2ZHvd
なぜ通ると思ったのか
602デフォルトの名無しさん (エーイモ SEda-2JKf)
垢版 |
2017/10/08(日) 19:03:56.08ID:uO7C8UFXE
コーディングスタイルってたくさんあるんですね
とりあえず検索したらエリートの人達が使ってそうなものを集めてみました

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
http://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個で{}を省略しないルールだけにしたいと思います。
603デフォルトの名無しさん (エーイモ SEda-2JKf)
垢版 |
2017/10/08(日) 19:04:57.70ID:uO7C8UFXE
空白8個なのはメモ帳で見た時にこのくらいだから合わせてるだけです
2017/10/08(日) 19:18:41.81ID:PUMPETat0
また戦争がしたいのか、アンタは
2017/10/08(日) 19:26:45.12ID:+nfO/L5n0
戦闘民族
2017/10/08(日) 19:30:12.30ID:HosRocIl0
書いてりゃわかると思うけど8は多すぎ
単に昔のシステムがそうだったと言うだけのことだから4とか2でいいと思う
2017/10/08(日) 19:36:28.95ID:+nfO/L5n0
あーあ
2017/10/08(日) 21:11:10.70ID:bhcsmcAx0
>>573
会社や複数人作業ならそれにあわせる
一人で書く分には何でもいいだろ
なんなら、PHPで使ってたスタイルでいいだろ
ってか、PHPの時はどうしてたんだよ
609デフォルトの名無しさん (ワッチョイ 7575-5Ff0)
垢版 |
2017/10/09(月) 01:05:37.72ID:6VRPxojV0
マンデルブロの描画がうまくいきません。ズームするとすぐに単調になってしまいます。

動画
https://youtu.be/Ompp_YwrLPw

ソースコード
http://codepad.org/mlm33eRT
2017/10/09(月) 01:30:56.68ID:vdfcSFiBd
>>609
クリックしたら画面の中心を移動させる。
2017/10/09(月) 01:32:01.57ID:vdfcSFiBd
ドラッグされたらずらす。
612デフォルトの名無しさん (ワッチョイ 7575-5Ff0)
垢版 |
2017/10/09(月) 01:53:40.87ID:6VRPxojV0
>>610
一応クリックするとある境界線付近を拡大するようにプログラムに書いてるのですが...
2017/10/09(月) 03:32:25.69ID:vdfcSFiBd
>>612
環境によって座標系が違うのかも知れない。ずらす値を変えてみては?
2017/10/09(月) 03:39:59.55ID:69HXGpsc0
>>609
単調になるのは k のループ回数が少ないせいでは
2017/10/09(月) 06:38:40.98ID:hRP3P7r40
そうだね k=1000くらいで
616デフォルトの名無しさん (ガックシ 060e-5Ff0)
垢版 |
2017/10/09(月) 08:53:44.75ID:IXUwPWpS6
>>613
変えても同じでした
>>614
>>615
なるほど!家に帰ったらやって見ます!
2017/10/09(月) 09:35:07.86ID:IkImbMA7a
>>594
変数宣言が全てtypedefになるなんて狂気な言語
実例を教えてくれ
2017/10/09(月) 09:51:45.98ID:UMVukllE0
俺はこの書き方
if (condition) {
}
else {
}
2017/10/09(月) 09:55:27.10ID:pMEz2IHg0
コーディングスタイルにこだわる奴は素人。
620デフォルトの名無しさん (ガックシ 060e-5Ff0)
垢版 |
2017/10/09(月) 12:12:59.35ID:9ioWbZDx6
Linuxのソースコードは?
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 ;
}
}
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 ; に置き換えてください
2017/10/09(月) 14:39:31.76ID:vdfcSFiBd
>>622
何がしたいのかわからない。
代入の左辺は右辺と互換性のある型じゃないといけないし、配列まるごとの代入はできない。
まずは代入の型をそろえないと。
2017/10/09(月) 15:09:21.54ID:vdfcSFiBd
char型のデータを代入したいのなら、両辺の型をcharにしないといけないよ。
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] に代入できない
2017/10/09(月) 15:56:12.50ID:of8Vs49yM
>>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 の言う通りなにをしたいのかよくわからん
}
}
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 をまとめただけ、だけど。
630デフォルトの名無しさん (ワッチョイ 059f-huPf)
垢版 |
2017/10/09(月) 17:19:35.64ID:tFlwnlNI0
>>629
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 ;
こんな書き方ってできるの?
2017/10/09(月) 17:44:30.12ID:N3YX2Zf80
ポインタを返す場合はそういう書き方
aaa->DATA+3
ポインタの指してる先を求めたい場合は
aaa->DATA[3]

左辺が何を要求しているのか(どういうものを操作したいのか)を頭の中で整理せずに
記述法だけを即物的にトレースするのはとてもまずい
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の糖衣構文)、ドットとアローそれぞれの
左側の違いを理解しないと先には進めないよ
2017/10/09(月) 18:02:21.36ID:tda6mQVw0
>>631
意図が分からないからマトモに答えられない
実際に数字入れて教えてくれ
例えば>>622はI2C_MEM = {4, 8, {0, 1, 2, 3}} でa,b,cはどうなるの?
635デフォルトの名無しさん (ガックシ 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] ;
}
}
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] ;
}
}

に修正します
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 ;
}
}

に修正します
2017/10/12(木) 11:50:40.24ID:z+R5CP9n0
>>636
先ず日本語をなんとかした方がいい
『whileの中身を複製する』とはどういうことか?
『実体化されない変数』とは何か?
『コンパイラ制御のための変数』とは何か?
640デフォルトの名無しさん (ワッチョイ 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の意味が
希薄になるのでコンパイラに対する変数だよと明示(コンパイラ&設計者に)したいのだが
そんな書き方ある?ということでありまして
2017/10/12(木) 12:41:11.33ID:Z8zboj8V0
多少は意図した記述に沿って機械語出力するだろうけど、
保障されてるわけでもないし、最適化他でどうなるかもわからん

「機械語でこうなって欲しい」という目的を達成させるならその部分を機械語で書くか、
(環境によるだろうけど)その部分だけをインラインアセンブラにする
2017/10/12(木) 12:42:56.26ID:cscfLNVP0
memcpy使ったらいいんじゃないの?
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の逆の機能が欲しいんですよね 実体化するなー!ってやつです
2017/10/12(木) 13:37:51.69ID:jX4dlPv10
volatile揮発性の当初の意図は
70年代コンピュータでの磁気コアメモリに置いておく、程度なんじゃあねえの
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);

変数を使ってループできないから 繰り返し分リテラルを手で並べる必要あるしー
正直ほめられたやりかたじゃないと思うわ
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
クッサ
2017/10/12(木) 14:45:29.40ID:Z8zboj8V0
結局 >>639 だったのか・・・
2017/10/12(木) 14:46:41.92ID:z+R5CP9n0
返答が幾つもついてるのに出てこないとか言っちゃうのは見たいものしか見ない人の典型だね
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まで足し合わせるプログラムを教えてください。
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;
}
659デフォルトの名無しさん (ガックシ 06eb-HijE)
垢版 |
2017/10/12(木) 15:18:14.51ID:OhN0e73F6
>>658
ありがとうございます!
2017/10/12(木) 18:50:09.63ID:7bIAw6590
人に思いを正しく伝えられない奴がうまくプログラミングできるとは思えないけど大丈夫なんだろう
661デフォルトの名無しさん (ササクッテロレ Sp45-NqOW)
垢版 |
2017/10/12(木) 20:36:00.66ID:1sF6m3D2p
俺は逆だと思っている。
人に上手く思いを伝えられないからこそ、
表現手段を駆使して伝えようと努力するんだよな。
絵とか音楽とか、クリエイターってそんな生き物。
2017/10/12(木) 21:49:52.42ID:wn8w1zGC0
>>661
> 絵とか音楽とか、クリエイターってそんな生き物。
全然違う
あいつらは自分の思いを伝えられるのは自分の表現法方だけだと思ってる
絵を描く奴で説明文を書いて思いを伝えるやつなんていないだろ
663デフォルトの名無しさん (ワッチョイ 799f-BSx0)
垢版 |
2017/10/12(木) 23:57:59.88ID:5ILt7KpA0
>>645
メモリマップドI/Oに使える。特定のアドレスを読むとキーボードで入力した文字が読めるとか、そういうやつ。
読んだ直後に内容が変わる可能性があるので volatile でないとまずい。
664デフォルトの名無しさん (ワッチョイ 799f-BSx0)
垢版 |
2017/10/13(金) 00:30:38.46ID:neFZx4WS0
共有メモリとか mmap() して複数のプロセスまたはスレッドがアクセスする領域も同じか。
あれ? こんなのちょっと前に話題にならなかったか?
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 ; 実体化

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


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


こんな感じの認識であってますか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況