X



C言語なら俺に聞け 143
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ b375-rVGZ)
垢版 |
2017/10/27(金) 21:28:08.20ID:pAogLeJi0
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/

前スレ
C言語なら俺に聞け 142
http://mevius.2ch.net/test/read.cgi/tech/1502364083/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0003デフォルトの名無しさん (ブーイモ MMeb-gj0X)
垢版 |
2017/10/27(金) 23:12:15.85ID:67YjQzLBM
>>1
0004デフォルトの名無しさん (ワッチョイ 9193-cGPg)
垢版 |
2017/10/28(土) 08:25:42.00ID:VIxhg0oq0
「新スレッドは○番に書き込んだ人が立てる」みたいなガイドラインを
テンプレートに盛り込んだ方が安心じゃないかな。

前スレッドの終了まで新スレッド(ここ)が立たなかったし、
999番で「誰か立ててくれ」と書き込まれたのに応じて
「立てたよ、リンク先は…」と誘導に使われるべき1000番が
無意味な「あぼーん」で潰されたし。
0005デフォルトの名無しさん (ワッチョイ d18a-bYcA)
垢版 |
2017/10/28(土) 09:22:16.51ID:6bG+Py6x0
あぁあああもうポインタ全然分かんねえよおおお
0006デフォルトの名無しさん (ワッチョイ 6b15-OCcV)
垢版 |
2017/10/28(土) 10:32:21.81ID:QoaQu2To0
前スレへのリンクがあって、スレタイにも番号がついてるわけで
1000いったら次スレなんて言われんでもわかるし望む者がいるから立っている
それだけのことで、別に何かする必要はないと思うな
0007デフォルトの名無しさん (ワッチョイ 719f-WLyz)
垢版 |
2017/10/28(土) 13:13:54.08ID:cK0+9veY0
>>5
文字通り何かを指し示すものだよ。
0008デフォルトの名無しさん (ワッチョイ 21d2-Eec1)
垢版 |
2017/10/28(土) 13:25:50.21ID:NBGUhvqo0
data8<7-0> にdata32<31-00>の中のdata32<07-00>を抜き出して代入したい

data8 = data32 % 256 ;

と書いてもコンパイラが素直に推論してくれません
キャリー処理のコードっぽいものをつけてきやがります
どうしたらいいでしょうか?
0009デフォルトの名無しさん (ワッチョイ 1312-nu9H)
垢版 |
2017/10/28(土) 13:30:10.44ID:z7fGPvzs0
あまりにも挫折者が多すぎる
教え方が悪いとか例題が少ないとかじゃねえのかと

変数とか言うふわふわしたモンがいきなり具体的なものになるから分かりにくいんじゃないのかね
メモリとかアドレスとかいきなし言われても分んねーよ、とかなるし
しまいにはアドレスの値だって気にかけなくなる

いきなり「変数は値と場所、二つの数字をもちます」とか言われると混乱するんだよ
0010デフォルトの名無しさん (ワッチョイ 719f-WLyz)
垢版 |
2017/10/28(土) 13:51:05.54ID:cK0+9veY0
>>8
君の言いたいことがよくわからない。とりあえず全部日本語に翻訳してくれ。
0013デフォルトの名無しさん (ワッチョイ 21d2-Eec1)
垢版 |
2017/10/28(土) 14:11:40.74ID:NBGUhvqo0
両変数ともunsigned宣言はしています
0016デフォルトの名無しさん (ワッチョイ 1be7-DNJs)
垢版 |
2017/10/28(土) 16:17:52.03ID:DjUYz3cS0
int *a = 0;
*a = 1;
これは入るけど1は入るん?0の番地って存在するん?
0020デフォルトの名無しさん (ワッチョイ 9193-cGPg)
垢版 |
2017/10/28(土) 17:33:04.44ID:VIxhg0oq0
>>8
「リテラルの数値256での剰余だから結果の範囲は0-255、
unsigned char の範囲からはみ出す可能性はない」
ということまでコンパイラが見抜いてくれないってことだよね。

data8 = (unsigined char) data32;

てな具合に明示的なキャストで上手くいかんかな。
あるいはコンパイラの最適化オプションを強めにするか。
0021デフォルトの名無しさん (ワッチョイ 21d2-Eec1)
垢版 |
2017/10/28(土) 17:42:28.64ID:NBGUhvqo0
ちょっと勘違いしてました
>>8の質問はとりさげます
ちなみに%256の推論はしているみたいです
0023デフォルトの名無しさん (ワッチョイ 6b15-OCcV)
垢版 |
2017/10/28(土) 18:54:14.85ID:QoaQu2To0
希望的観測でタカをくくって結果を見もしないやつが一番悪い
0026デフォルトの名無しさん (ワッチョイ 9ba1-qonp)
垢版 |
2017/10/28(土) 20:54:20.70ID:uE8IWkSS0
>>16
ヌルポインタに関しては、なんかややこしい事情があるみたいね。
規格ではいかなるオブジェクトとも一致しない特殊なポインタってことになってるようだけど、
自分が使ってる組込み用のコンパイラではただの 0 になる。しかも0番地から普通の RAM なんで、
値も普通に格納される。
どうなるかは確認するしかないんじゃなかろうか。
0027デフォルトの名無しさん (ワッチョイ 9150-FcU6)
垢版 |
2017/10/28(土) 21:07:29.96ID:gfV3l07s0
>>20
32bitの範囲の数値を8bitの最大値で割るんだから
最大24bitの数値になるんじゃないの?
data8 = *(unsigined char*) &data32;
リトルエンディアンだと仮定するとこうなると思う
0028デフォルトの名無しさん (ワッチョイ 9150-FcU6)
垢版 |
2017/10/28(土) 21:24:13.85ID:gfV3l07s0
すみません
剰余を除算と勘違いしていました
無視してください
0029デフォルトの名無しさん (ワッチョイ 719f-WLyz)
垢版 |
2017/10/28(土) 23:08:15.00ID:cK0+9veY0
>>16
あるけど今時のだいたいのOSではアクセスすると例外発生してプログラムが停止させられると思う。
そうでなくてもCPUによってアドレス0付近が特別扱いされている事が多いのでアクセスできたとしても要注意だったりする。
なのでそういうのが必要な時というのはOSそのものやデバイスドライバを作る時ぐらいしかないと考えて良い。
0030デフォルトの名無しさん (ワッチョイ 1be7-DNJs)
垢版 |
2017/10/28(土) 23:16:46.23ID:DjUYz3cS0
最近ヤフー知恵袋で初心者なんですけど将来プログラマになりたくてC言語やってみたいんですけどどうですかって
質問が多いがプログラマが時代の流行になってきたか?
0031デフォルトの名無しさん (ワッチョイ d18a-bYcA)
垢版 |
2017/10/28(土) 23:27:04.65ID:6bG+Py6x0
>>30
とりあえずみんなc言語やるんだな
0032デフォルトの名無しさん (ワッチョイ 1be7-DNJs)
垢版 |
2017/10/28(土) 23:47:39.21ID:DjUYz3cS0
>>31
おすすめの本やらおすすめの開発アプリやらおすすめのサイトやら学校のカリキュラムの評価やら色んな質問が多いしC言語やるならC#やった方が良いと思うんだけどなstring型ないだけで文字列処理とか大変だし不規則な空白・カンマ区切りとかの処理大変だし
そうゆうのを除外してくれる関数あるから楽なのになC言語はchar型で文字列操作してから処理しないとint型にしたりするのが大変だからな
0034デフォルトの名無しさん (ワッチョイ 9193-cGPg)
垢版 |
2017/10/29(日) 06:18:21.91ID:7nxu6Zdr0
教育だと一般性ってのも考えなきゃならないからね。
次々出てくる「Cを改良したネット時代の言語」とかの新しいやつも
10年たったら別の新言語と置き換わってるかも知れないし。
その点、Cなら古くさくても基本として残ってるだろう。

資格試験はまた別だがね。時々変えないと商売にならん。
0035デフォルトの名無しさん (JP 0Hc5-xXVv)
垢版 |
2017/10/29(日) 10:11:30.74ID:NWVP0NdTH
Cは一人でやるとちょっとしたミスで手も足も出なくなるから論外
右も左も分からない初心者に基本はC言語とか言い出すヤツは老害
0036てすと (ワッチョイ 9150-20SA)
垢版 |
2017/10/29(日) 10:24:35.50ID:S9avFBtQ0
package test;

class Test
{
  public static void main(String[] args)
  {
    System.out.println("test");
  }
}
0042デフォルトの名無しさん (ワッチョイ 719f-Akqv)
垢版 |
2017/10/29(日) 13:36:30.43ID:oFRxn/Jf0
環境依存の部分はどんな言語でも影響受けるから結局は覚える事になるんじゃないのかな
0043デフォルトの名無しさん (ワッチョイ e1c3-bYcA)
垢版 |
2017/10/29(日) 16:45:37.57ID:Qj29lsVR0
まずはcでゲーム作ってみようかな
0044デフォルトの名無しさん (ワッチョイ 1be7-DNJs)
垢版 |
2017/10/29(日) 17:07:01.40ID:eJZsCyOV0
win32で作ってみる?
0045デフォルトの名無しさん (ワッチョイ 7116-rVGZ)
垢版 |
2017/10/29(日) 17:13:50.83ID:X7Kr9qJt0
OpenGLの方がいい
0047デフォルトの名無しさん (ワッチョイ 1be7-DNJs)
垢版 |
2017/10/29(日) 22:58:38.22ID:eJZsCyOV0
その前に開発環境を整えるのが大変だわプログラミングはできるけどそれぞれ出してる開発アプリがあるしその中で開発ツールだっけXNAやらwin32やらで解らんことばっかりや
0048デフォルトの名無しさん (ワッチョイ d18a-bYcA)
垢版 |
2017/10/29(日) 23:13:28.81ID:cx6N475a0
>>47
ほんそれ
0051デフォルトの名無しさん (ワッチョイ f1ca-OCcV)
垢版 |
2017/10/30(月) 01:28:40.64ID:ObFQilr40
キャリーを含む9bitローテートか
それとも含まない8bitローテートか
0053デフォルトの名無しさん (ワッチョイ 9193-cGPg)
垢版 |
2017/10/30(月) 04:58:13.48ID:oEYvBlvb0
性能優先ならインラインアセンブリでCPUのローテート命令かねぇ。
移植性が大事なら正直にマスクしてシフトしてビットorで重ねる。

8bitや16bitならテーブル使えば両立できるかな。
0055デフォルトの名無しさん (ササクッテロラ Sp9d-jmG0)
垢版 |
2017/10/30(月) 13:22:56.64ID:LaVtZ0d2p
ストリームの概念はUNIX譲りの万能概念だから未来永劫絡んで来るぞ。
0056デフォルトの名無しさん (アウーイモ MM95-bYcA)
垢版 |
2017/10/30(月) 13:37:21.46ID:/ejdYHINM
fopen
fclose
0058デフォルトの名無しさん (ササクッテロラ Sp9d-jmG0)
垢版 |
2017/10/30(月) 17:55:35.83ID:LaVtZ0d2p
read/writeが無いと意味が無いだろ。
0060デフォルトの名無しさん (ガックシ 068b-rVGZ)
垢版 |
2017/10/30(月) 18:06:29.16ID:6LR7RaNa6
char c1=data&0b000000000000000011111111000;
char c2=data%&0b000000001111111100000000000;
char c1=data%&0b111111110000000000000000000;
0061デフォルトの名無しさん (ガックシ 068b-rVGZ)
垢版 |
2017/10/30(月) 18:07:40.57ID:6LR7RaNa6
char1重複エラー
0062デフォルトの名無しさん (ガックシ 068b-rVGZ)
垢版 |
2017/10/30(月) 18:09:07.45ID:6LR7RaNa6
演算子オペランドエラー
0063デフォルトの名無しさん (アウアウカー Saed-6HSk)
垢版 |
2017/10/30(月) 18:14:50.15ID:ki8heFlTa
ファイルとストリームを結びつけるのって、具体的に何がどうなってるんですか?
その辺りがわかるサイトや書籍があれば英語でもいいので教えていただけるとありがたいです
0066デフォルトの名無しさん (ガックシ 068b-rVGZ)
垢版 |
2017/10/30(月) 18:19:48.86ID:6LR7RaNa6
シフト演算子でやろうと思ったら先越されてた
0067デフォルトの名無しさん (ワッチョイ 0b23-20SA)
垢版 |
2017/10/30(月) 18:21:54.38ID:S5mFuOM00
>>63
これ普通はどうやって勉強すんだろうな 興味あるわ

おれはいきなりデバドラ書かされたんで理解を強制されたけど
あのへんの概念なしで腑に落ちる理解できるもんなん?
0069デフォルトの名無しさん (ワッチョイ 7102-rVGZ)
垢版 |
2017/10/30(月) 19:47:29.26ID:4jg/LOEr0
>>68
ストリームを作ってるのがカーネルだからだろ。
0076デフォルトの名無しさん (ワッチョイ 497f-20SA)
垢版 |
2017/10/30(月) 20:16:20.68ID:6zI0CLS+0
>>70
なんでC言語の話でlibstdc++が出てくるの?

fopenやらのストリームなんて、setvbufの説明読めばバッファリングしてるだけって理解できるだろ
カーネルやらlibcのソースなんて読む必要性なんてねーよ
0077デフォルトの名無しさん (ササクッテロラ Sp9d-jmG0)
垢版 |
2017/10/30(月) 20:33:32.20ID:LaVtZ0d2p
ストリームなんて、なんでもかんでも先頭から順番に処理するってだけの概念だけどな。
ランダムアクセスメモリーも読み飛ばしと巻き戻し駆使してアクセスするのさ。
0078デフォルトの名無しさん (ワッチョイ 719f-Akqv)
垢版 |
2017/10/30(月) 23:47:44.78ID:nQXUW6Dj0
>>49
マシン語には何でもできるねw
0082デフォルトの名無しさん (ワッチョイ 1387-jmG0)
垢版 |
2017/10/31(火) 08:48:27.57ID:sbQ4uuQC0
>>79
それって、htons()のあるライブラリ間違えたら全く意味が無いマクロだよね?
0087デフォルトの名無しさん (ワッチョイ 719f-Akqv)
垢版 |
2017/10/31(火) 23:37:41.07ID:TMBeGW2t0
>>82
ライブラリというか、ヘッダだな。#include <arpa/inet.h> とか。

コンパイラにもよるだろうけどだいたいはヘッダの中だけで #define されているか
ビルトインの関数に置き換えられるかインラインアセンブラになるか、適当に
うまいことやってくれると思う。(CPUが Big endian なら #define htons(x) (x) に
なってて何もしないだけになるかも知れない)。

それと一応 POSIX.1‐2008 のようなので使えるコンパイラは多いんじゃないかな。
0088デフォルトの名無しさん (ワッチョイ 1be7-DNJs)
垢版 |
2017/11/01(水) 02:46:02.61ID:TUg4iVeD0
今ってC言語でwin32とかで作るアプリに基本構造とかなしで作る感じなの?
0090デフォルトの名無しさん (ワッチョイ 1387-jmG0)
垢版 |
2017/11/01(水) 09:27:14.69ID:AnlYMxNy0
イベントを拾って条件分岐みたいな部分は全部関数内に隠蔽された。
今は決まった名前のコールバック関数を埋めるだけのお仕事。
0093デフォルトの名無しさん (ワッチョイ 7181-/MqV)
垢版 |
2017/11/01(水) 14:12:00.47ID:0yoHAkyy0
実行時に必要なメモリーサイズが決まるようなプログラムだと必要。
最初から大きなメモリーを確保しても無駄になるかもしれないし、
当初想定したサイズでは足りなくなるかもしれない。
そういうときに使う。
0094デフォルトの名無しさん (ササクッテロラ Sp9d-jmG0)
垢版 |
2017/11/01(水) 14:12:15.55ID:Dwgab4vip
組み込みでは1度大きく確保したら後は自前で中身やり繰りするから、あんまり使わない。
0098デフォルトの名無しさん (ワッチョイ 1387-jmG0)
垢版 |
2017/11/01(水) 23:00:55.45ID:AnlYMxNy0
Linuxだからって、メモリーリークが無くなるワケじゃ無いからなぁ〜。
■ このスレッドは過去ログ倉庫に格納されています

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