[過去ログ] スレ立てるまでもない質問はここで 165匹目 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
285: (スププ Sd22-jNFU) 2023/11/24(金)17:07 ID:emckAcP4d(1) AAS
#include <stdio.h>

void func(void); // 関数プロトタイプ

int main(void)
{
int a; // このaは0で初期化される
printf("a=%d\n", a);
func();
return 0;
}
void func(void)
{
int b; // このbは不定値になる
printf("b=%d\n", b);
}
286: (ワッチョイ 0609-sW/m) 2023/11/24(金)17:46 ID:acItGeQV0(1) AAS
スタックの使われ方でそうなるだけ
そのaの0初期化を保証する文書はないと思う
287: (ワッチョイ 298e-cVwZ) 2023/11/24(金)18:31 ID:A049oz9t0(1) AAS
というか初期化は癖にしとけ
288: (ワッチョイ 0279-KWGQ) 2023/11/24(金)21:57 ID:pe/5i+Cu0(1) AAS
スタートアップルーチン次第で使う領域の0埋めはできるよ
Flashの少ないマイコンでコード削減のために使われたりする
289: (ワッチョイ 07a2-erZV) 2023/11/25(土)14:54 ID:3au87Jfr0(1) AAS
でっていう
290: (ワッチョイ 5fa5-1+JT) 2023/11/27(月)12:39 ID:kSLkA03P0(1) AAS
ユーザーモードでもデバドラかけるけどカーネルモードで実装しなきゃいけない理由ってなんなの?性能だけ?
他のユーザーモードプログラムからプロセスの中身を隠したいとか?
あと、ユーザーモードだとタスクマネージャーとかでユーザーが終了させちゃう恐れもあるか
他になんかある?
291: (ワッチョイ 5f79-/KuA) 2023/11/27(月)19:51 ID:/cbu4sL+0(1) AAS
権限の違いだけだよ
ユーザーモードのドライバは署名不要で良いと思うんだけどねえ
292
(1): (ワッチョイ c777-2qxF) 2023/11/29(水)22:11 ID:9Fs/PVQH0(1/2) AAS
画像のコマンドプロンプトなんですが
echoで
「変数A」は表示されるのですが
「変数B」が表示されないのはなぜでしょうか?
画像リンク

293
(1): (ワッチョイ ffde-Ura4) 2023/11/29(水)23:17 ID:11rLHIi40(1) AAS
>>292
遅延環境変数でググると原因と対策が出てくる
294: (ワッチョイ 8701-OYus) 2023/11/29(水)23:43 ID:5e0Dum8b0(1) AAS
powershellでやれ
295: (ワッチョイ c777-2qxF) 2023/11/29(水)23:57 ID:9Fs/PVQH0(2/2) AAS
>>293
やっと解決できました
ありがとうございました
画像リンク

296
(1): (スフッ Sd7f-1fOb) 2023/12/01(金)13:56 ID:x4GTgSrOd(1) AAS
C言語において-3が、unsigned int で4294967293になる理屈を教えてください
297
(1): (ワッチョイ 7fd6-WSLN) 2023/12/01(金)14:58 ID:2riclQL00(1) AAS
外部リンク:en.cppreference.com

otherwise, if the target type is unsigned, the value 2^b
, where b is the number of value bits in the target type, is repeatedly subtracted or added to the source value until the result fits in the target type. In other words, unsigned integers implement modulo arithmetic.
298: (スププ Sd7f-1fOb) 2023/12/01(金)15:09 ID:FXqwQW8Dd(1/2) AAS
>>297 モジュロ演算の意味が分かりません
299
(1): (スッップ Sd7f-O0Dn) 2023/12/01(金)15:19 ID:1ihFKBOzd(1) AAS
>>296
CPUの整数表現として負数を2の補数で表現するから

32ビットはめんどいので末尾8ビットだけ書くとして3は00000011
3の1の補数はビット反転して11111100(4294967292)
3の2の補数は1の補数に1を足して11111101(4294967293)

2の補数を使う理由はググれ
300: (スププ Sd7f-1fOb) 2023/12/01(金)15:25 ID:FXqwQW8Dd(2/2) AAS
>>299 やはりそうでしたか。納得しました。
301: (スフッ Sdbf-WaQs) 2023/12/09(土)16:25 ID:ZNOr2kH7d(1/2) AAS
C言語でオーバーフローするのは、signed だけですか?それとも、unsigned もですか?
AIに聞いても、意見が分かれていて、どっちかわかりません。
302
(1): (スッップ Sdbf-WfBz) 2023/12/09(土)16:44 ID:ETXxeT5Ld(1/2) AAS
符号なし整数はmod 2^n(nはビット数)で計算します。
これをオーバーフローと表現したりしなかったりする気がします。
303
(1): (スフッ Sdbf-WaQs) 2023/12/09(土)16:54 ID:ZNOr2kH7d(2/2) AAS
>>302 ありがとうございます。規格では、unsigned はオーバーフローしないときめられているようですが、コンパイラの警告が,
unsignedの場合でないですね。
304: (スッップ Sdbf-WfBz) 2023/12/09(土)17:01 ID:ETXxeT5Ld(2/2) AAS
規格では符号なし整数はオーバーフローしないと書かれていて、正確な文言としてはこれが正しいようです。
305: (スップ Sd3f-Rtb0) 2023/12/09(土)17:31 ID:qyzy7PA2d(1) AAS
キャリービットが立つ=オーバーフロー
306: (ワッチョイ 97f2-RTrI) 2023/12/09(土)18:36 ID:p0kpDF0H0(1/2) AAS
wrapping overflowのことをCの規格では「規定された動作でUBじゃないからオーバーフローとは呼ばないキリッ! wraparoundと呼べ」と言ってるだけ
一般に言うところの算術オーバーフローは発生するが規格に定められた動作なので警告は出ない
307: (ワッチョイ d7da-noSv) 2023/12/09(土)19:47 ID:dajCtWdt0(1) AAS
>>303
オーバーフローって演算結果の話なのでコンパイラでは警告でないんじゃね
308: (ワッチョイ 97f2-RTrI) 2023/12/09(土)21:12 ID:p0kpDF0H0(2/2) AAS
実行時にしかチェックできないものとコンパイル時にチェックできるものとある
309: (オイコラミネオ MM2b-FJ+M) 2023/12/10(日)10:57 ID:o2TNvwaPM(1/3) AAS
SQLITEなどのDBMSで、2つ以上のカラムに
まとめてindex (B-Tree)を用意するところの
「Multicolumn indexes(Composite indexes)」
を用いる場合、select の where 節で
2つのカラムa, b に対して、
where a=値1 and b=値2
とした場合、高速化されるそうです。
しかし、b については条件を指定せずに
where a=値1
とだけ書いた場合や、
a については条件を指定せずに
where b=値2
とだけ書いた場合の速度も高速化されますか?
310: (ワッチョイ 7716-pmcO) 2023/12/10(日)11:57 ID:PVGCDu/Y0(1/2) AAS
はい、2つ以上のカラムにまとめてindexを作成すると、それらのカラムを組み合わせて検索条件を指定する場合だけでなく、個々のカラムに対する検索条件も高速化されます。具体的には、次のような場合にも高速化が期待されます。

1. `where a=値1` の場合: もし `(a, b)` の複合インデックスがあるなら、この条件も高速に検索できます。

2. `where b=値2` の場合: 同様に、`(a, b)` の複合インデックスがあるなら、この条件も高速に検索できます。

これは複合インデックスがB-Treeなどの構造を持ち、検索がその構造を活かして行われるためです。複合インデックスが使えると、各カラムに対する条件検索も高速に行えます。
311: (ワッチョイ 7716-pmcO) 2023/12/10(日)11:58 ID:PVGCDu/Y0(2/2) AAS
なぜbだけの条件でも高速されるのか説明します。

複合インデックスが `(a, b)` の形をしている場合、このインデックスはB-Treeなどのデータ構造を持ち、最初のカラム `a` によってソートされています。このようなインデックスがあると、`where b=値2` という条件も高速化されます。

原因はB-Treeの特性にあります。B-Treeは最初のカラムに基づいてツリーを構築し、各ノードはそのカラムの値でソートされています。したがって、`where b=値2` のクエリでも、インデックスを利用して B-Tree の探索を効率的に行えるのです。

ただし、この場合でも、`a` に関する条件が `where a=値1` と組み合わさると、最初のカラムが条件になっているため、より効果的にインデックスが使用されることが期待されます。
312
(2): (オイコラミネオ MM2b-FJ+M) 2023/12/10(日)12:13 ID:o2TNvwaPM(2/3) AAS
>>1
`where b=値2`
の条件だけ書いた場合になぜ高速化されるか
について、もう少し詳しくお願いできませんか。
2文字のひらがなの辞書で考えて、
1文字目をa, 2文字目をb として、
ああ
あい
あう
いあ
いい
いう
のようにならびますが、b=いを検索したい
場合、1文字目が あい と、いい の2か所
に分かれて格納されてしまい、B-Treeだと
全く別の場所になってしまいそうですが。
313
(1): (オイコラミネオ MM2b-FJ+M) 2023/12/10(日)12:18 ID:o2TNvwaPM(3/3) AAS
>>312
まず、複合カラムでない場合に限定すれば、
N文字のキーが入っている B-Treeの場合、
深さは、大体 O(log(N))になります。
検索する際、どのあたりにキーがあるかは、
一意的に深い方向に探索をすれば済むので、
大体、O(log(N)) 回程度に「進めれば」検索が
終了できます。
しかし、複合カラムの場合、条件にaを指定せずに
bだけを指定した場合、
キーは、様々な場所に分散されて格納されます
ので、この例のひらがな50音の辞書の場合なら
50か所に分かれてしまうため、
log(N) * 50 回程度の時間がかかってしまうのでは
ないでしょうか。
314: (ワッチョイ ff84-pmcO) 2023/12/10(日)14:06 ID:Ne0vvx410(1/2) AAS
>>312
申し訳ありません、誤解が生じました。確かに、私の前回の説明は一般的な場合に当てはまりますが、特に文字列の場合、`where b=値2` のクエリが効率的になるかどうかはデータの具体的な並びに依存します。

文字列の場合、B-Treeの挙動が通常の数値とは異なります。例えば、`ああ`、`あい`、`あう`などが順序通りに格納されることで、`where b='い'` のクエリは特に高速になります。これはB-Treeが文字列においても順序を保ちながらデータを格納するためです。

ただし、文字列の場合でも、全くの一般性があるわけではありません。文字列のソートは、通常の辞書順ではなく、各文字のバイトレベルの比較に基づいていることも考慮する必要があります。

そのため、データの実際の配置や使用しているデータベースシステムによっては、特定のクエリの性能が異なることがあります。文字列データにおいても最適なインデックス戦略は、具体的なデータとクエリによって変わることがあるので、実際のデータや使用状況を元に検討することが重要です。
1-
あと 688 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.016s