Akademisyenler öncülüğünde matematik/fizik/bilgisayar bilimleri soru cevap platformu
1 beğenilme 0 beğenilmeme
867 kez görüntülendi
#include <iostream>

using namespace std;

int main(){
	char str1[] = "Bartın";
	char str2[] = "Bartın";
	setlocale(LC_ALL, "Turkish");
	if(str1 == str2)
		cout <<"Eşit";
	else
		cout <<"Eşit değil";
 }

 

Veri Bilimi kategorisinde (16 puan) tarafından 
tarafından düzenlendi | 867 kez görüntülendi
derleyicinin str1 ve str2 dizilerini ne olarak atadığını bilmek lazım.

str1 ve str2 ramde adres değeri olarak atanıyosa eşit değil çıkması normaldir.
nasıl yani char şehir satır1 diye oradaki şehiri mi tanımlamak gerek
str1 diye göstermek istediğin şey,str1[] dizisi değildir.

teorik olarak açıklamaları biraz araştırman gerek.kendinde deneyebilirsin.direk str1 printle bakalım ne görüceksin :)

 

main()

{
	
	
	    char d1[] = "Bartin";
		char d2[] = "Bartin";
		
		printf("ilk dizi %s\nikinci dizi %s",d1,d2);
		
		if(d1[1]==d2[1])
		{		printf("\n esit iki dizi");	}
		else
		{
					printf("\n diziler esit degil");
		}
	
	
}

mesela burada çıktı olarak, ilk dizi Bartin,ikinci dizi Bartin
esit iki dizi sonucunu alırız.

çünkü bu kodda dizilerin 1. elemanları karşılaştırılmış ve ikisi aynı olduğu için eşit sonucuna ulaşılmış ancak d1 == d2 olarak işleme aldığımızda,sanıyorum dizilerin ramdeki yerleri ile işlem yapıldığı için eşit değil sonucuna ulaşıyoruz.

  
 

C'de iki string == operatörü ile karşılaştırılmaz. strcmp() fonksiyonunu kullanın.
tamam teşekkür ederim
tamam teşekkür ederim anladim
hocam yanlış hatırlamadıysam,C de dizi ismi,ramdeki adresini belirliyordu.

o yüzden eşit değil diye çıktığını düşünüyorum.
Evet, tam ramdeki adres mi bilmiyorum da o sekilde yorumlanir. Ama sizin yazdiginiz ornek sadece tek bir karakteri karsilastirarak dizilerin esit olup olmadigina karar veriyor. Yanlis yonlendirici olabilir.
Doğru,yorumdada bu yöndeki açıklamayı yaptım,yanlış yönlendirmemek için :)
20,274 soru
21,803 cevap
73,475 yorum
2,427,889 kullanıcı