30 Ocak 2011, Pazar
Neden &; bir" quot; != &;" C"?
void main() {
if("a" == "a")
printf("Yes, equal");
else
printf("No, not equal");
}
Neden çıkış No, not equal
?
CEVAP
30 Ocak 2011, Pazar
Karşılaştırma ne kadar farklı yerlerde saklanan farklı dizeleri, iki bellek adresleri. Böylece, aslında bu gibi görünüyor:
if(0x00403064 == 0x002D316A) // Two memory locations
{
printf("Yes, equal");
}
Aşağıdaki kodu iki dize değerleri karşılaştırmak için kullanın:
#include <string.h>
...
if(strcmp("a", "a") == 0)
{
// Equal
}
Ayrıca, "a" == "a"
gerçekten doğru bir yer kazanmak için derleme zamanında eşit dizeleri birleştirmek olabilir hangi derleyici, hatta aylar gerekebilir.
İki karakter değerleri işaretçileri olmayan) karşılaştırılması olduğunda, sayısal bir karşılaştırma. Örneğin:
'a' == 'a' // always true
Bunu Paylaş:
Neden bu kod rastgele dizeleri yazdırm...
Neden &; ad std quot;" kötü olara...
Neden[[]]yok[ []] [ []] dize " dön...
Neden C ön işlemci word "linux&qu...
Nereye ve neden&; şablon" quot; ve...