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

  • Awesomesauce Network

    Awesomesauce

    4 EKİM 2012
  • geraldnonadoez

    geraldnonado

    3 Temmuz 2013
  • Mark Brown

    Mark Brown

    9 HAZİRAN 2010