teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

妙に盛り上がってしまったので、表現をぼかします

2021/01/03 09:22

投稿

thkana
thkana

スコア7735

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コード)。現在の世の中のコンピュータの99.99%以上はその要求を満たしているとは思いますが。
17
+ 質問のプログラムは、'A'~'Z', 'a'~'z'が連続していて、'A'と'a'のオフセットが0x20であるという(C言語には決められていない)前提を要求していることは意識しましょう(asciiコード)。現在の世の中のコンピュータの多くはその要求を満たしているとは思いますが、全てではありませんので