SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Learn word 2013 tutorials

    Learn word 2

    5 AĞUSTOS 2014
  • skiesofblack.net

    skiesofblack

    14 HAZİRAN 2009
  • theavettbrothers

    theavettbrot

    9 ŞUBAT 2007