1,質問があります。
#include <stdio.h> #include <string.h> int main(void) { char str[] = "str == NULL ? \"(NULL)\": str"; char* p, * q; int ch; p = str; for (;;) { for (q = p; !(*q == '?' || *q == ':' || *q == 0); q++); ch = *q; *q = 0; printf("|%s|\n", p); if (ch == 0) break; p = q + 1; } }
の!(*q == '?' || *q == ':' || *q == 0);において、なぜ'?'、':'、 0を否定しているのにchには'?'、':'、 0が代入され、内部処理が働くのでしょうか?
ch = *q; *q = 0; printf("|%s|\n", p); if (ch == 0) break; p = q + 1;
2,質問
#include <stdio.h> #include <string.h> int main(void) { char str[] = "str == NULL ? \"(NULL)\": str"; char* p, * q; int ch; p = str; for (;;) { for (q = p; !(*q == '?' || *q == ':' || *q == 0); q++); ch = *q; *q = 0; printf("|%s|\n", p); if (ch == 0) break; p = q + 1; } }
の!(*q == '?' || *q == ':' || *q == 0);を(*q == '?' || *q == ':' || *q == 0);とした場合、画像のようなエラーが出るのですが、なぜでしょうか?また(*q == '?' || *q == ':' || *q == 0);とした場合、どのような処理のプログラムになるのでしょうか?

3,最後に以下のようにプログラムを書くと
#include <stdio.h> #include <string.h> int main(void) { char str[] = "str == NULL ? \"(NULL)\": str"; char* p, * q; int ch; p = str; for (;;) { for (q = p; !(*q == '?' || *q == ':' || *q == 0); q++) { ch = *q; *q = 0; printf("|%s|\n", p); if (ch == 0) break; p = q + 1; } } }
以下のようなバグが起きました。これはバグということでかたずけていいでしょうか?
というか、なぜこの様な実行結果になったのかが、わかりません。
|| || || || || || || || || || || ||
タグに「デバッグ」を入れている割にデバッグ全くしてないですよね。ふざけてますか?
>以下のようなバグが起きました。
書いた通りに動いた結果。書いたのは誰?
> これはバグということで
バグと言うのは、こうあるべきという事に対して、異なる動きをする事ですが、期待する動きとはなんでしょうか? それが無いとバグとは言えません。
なお、ソースを見る限り、書かれたように動作してると思われます。
また、指摘がすでにあるようですが、過去の質問の続き?
続きというか、新たな疑問点です。
> 以下のようなバグが起きました。これはバグということでかたずけていいでしょうか?
国語力。
いまさら言うのも虚しいけれど、放置して「これでいいのだ」と思われるのも癪なので。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12247335552
マルチポスト対応は https://teratail.com/help#posted-otherservice を参照。
推奨はしないけど、どうしてもやるならこうしてね、と書いてあるのだからそうすればいいのになぜしないのだろう?
その疑問を解消するためにデバッガ使ってるんじゃないのか?
あちこち書き換えてその挙動を観察するのがデバッガの目的。観察しているか?
マルチポストの「ルールを守らない」理由はなにか?
マルチポストのルールを知らないのか? それとも知ってて無視か?
「ルールなんて守らなくても罰則があるわけじゃない」から守る必要を感じないのでしょう。
ついでに言えば、「罵倒した相手でもしばらく期間をおいて質問すれば応えてくれる」という学習をさせてしまったように思いますが如何?
回答付ける人が居る限りやめないでしょうな。
本人の姿勢(と根本的な理解力)が変わらない限りどこで聞いても同じ。