回答編集履歴
1
妙に盛り上がってしまったので、表現をぼかします
answer
CHANGED
@@ -14,4 +14,4 @@
|
|
14
14
|
なお、`*str != NULL`と記述するとプログラムは「動いてしまう」でしょう。Cは型の違いに鷹揚なのでNULL(void*型の0)を'\0'整数値の0に勝手に変換して比較を行ってしまいますから(警告ぐらいは出るかも)。動きはしますがしかし「意味」としては異常なことをやっているわけで、やってはいけません。
|
15
15
|
|
16
16
|
もう一ついうと、Cでは言語として文字コードを規定していません。そして、'A'~'Z'あるいは'a'~'z'の文字コードが連続していることは保証しません('0'~'9'が連続していることは規定されています)。
|
17
|
-
質問のプログラムは、'A'~'Z', 'a'~'z'が連続していて、'A'と'a'のオフセットが0x20であるという(C言語には決められていない)前提を要求していることは意識しましょう(asciiコード)。現在の世の中のコンピュータの
|
17
|
+
質問のプログラムは、'A'~'Z', 'a'~'z'が連続していて、'A'と'a'のオフセットが0x20であるという(C言語には決められていない)前提を要求していることは意識しましょう(asciiコード)。現在の世の中のコンピュータの多くはその要求を満たしているとは思いますが、全てではありませんので。
|