私はしばらく Python のことを知っていて、C について理解を深めようとしていました。
Pythonに似たものがあるかどうか疑問に思っていました
if x in y:
たとえば、x
is2
およびy
isの場合、数字として含まれて2540
いる場合、ステートメントは true になります。y
x
C/C++ でこれに似たものはありますか? あるとしても、まだ見つかっていないからです。
C++ では、y
がstd::string
または標準コレクションの場合、eg std::find
(またはコレクション自体のfind
メソッド) を使用して、コレクション内にあるかどうかを確認できます。
C ではy
、文字列の場合、文字が文字列内にあるかどうかを確認するために使用できstrchr
ます。
整数の場合、そのような方法はありません。数値を文字列に変換し ( std::to_string
C++ またはstrtol
C で使用)、上記のいずれかの方法を使用できます。
この特定の問題については、数字を文字列に変換しません
必要がないからです。代わりに、この関数 (C コード) を見てください。
#include <assert.h>
int is_digit_in_number(unsigned char digit, unsigned int number)
{
assert(digit < 10);
while(number)
{
if(number % 10 == digit)
return 1;
number /= 10;
}
return 0;
}
これにより、数値を文字列に変換するオーバーヘッドが節約され、コンパイラにスマートな最適化の余地が与えられます。また、コードが何をすべきかが読者にとってより明確になります。これは常に良いことです:)
乾杯、アンディ