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