if (c)
,C++ ile aynı mı?C++ de if deyimi nasıl değerlendirilir?
cevap
Hayır, if (c)
, if (c != 0)
ile aynıdır. Ve if (!c)
, if (c == 0)
ile aynıdır.
varsayarsak hiçbir garip aşırı yükleme alıyor [negatif sayılar C C++?/return false yapın] Genellikle C++ 'daki cevabın bir parçası olan yer. –
Tabi ki, eğer operatörler == veya! = Aşırı yüklendiyse, bir şey olabilirdi, hatta sizin için milli marşı oynamaya başlayabilirdi ... ;-) – Jesper
Bu günlerden birinde operatörleri aşırı yükleyen bir sınıf yapacağım ses efektlerini çalmak. Birisi onları sıralamak istediğinde harika olacak. – rlbond
Daha Elbette if (c != 0)
gibi !=
operatör bu o tam eşit olduğunu söylemek tamamen doğru değil bu yüzden aşırı yüklenebilir bu.
== 0
- != 0
için değiştirirseniz, aynıdır.
Uh, hayır değiller. – Aistina
if ifadesi, * true olmayan bir şeyi kabul etmek için * tanımlı *. Yani evet aynı. C. –
Bu paketteki paketten ayrılıyorum ... "if (c)
", "if (((bool)c) == true)
" ile yakındır. Tamsayı türleri için, bu "if (c != 0)
" anlamına gelir. Başkalarının işaret ettiği gibi, operator !=
'un aşırı yüklenmesi bazı garipliklere neden olabilir, ancak yanılmadığım sürece "operator bool()
" aşırı yüklenebilir.
soru başlangıçta yalnızca C dolayısıyla yukarıdaki cevapları etiketlendi if (static_cast
hiçbir bool olmadığı –
C99, Boole ... – rlbond
Bu, yalnızca sayısal değerler için geçerlidir.
c işaretçi veya sayısal bir değer ise#include <stdio.h>
class c_type
{
public:
operator bool()
{
return true;
}
};
int main()
{
c_type c;
if (c) printf("true");
if (!c) printf ("false");
}
,
if(c)
eşdeğerdir: C sınıfı ise, örneğin burada olduğu gibi, dönüşüm boolean yapar aşırı bir operatör olmalıdır
if(c != 0)
c boole (tip BOOL [yalnızca C++]), (düzenleme: veya operatör bool() arasında aşırı bir kullanıcı tanımlı tipi) ise
c işaretçi veya sayısal bir değer ne bir Boole ne olursaif(c)
if(c)
derlenmeyecektir,
if(c == true)
eşdeğerdir.
if (c != 0)
ikinci eski ise 0
(boş) işaretçi karşı c
bir doğrudan check olarak
Bu c, kullanıcı tarafından tanımlanan bir operatördür, sadece “operatör bool()”, D. Shawley ve galerilerin her ikisini de işaret eder ve bu sayede çok iyi bir şekilde derlenir. Tam – Troubadour
, ben hem bir ibrenin durumunda kesinlikle aynı anlama ... –
c
bir işaretçi testi
if (c)
ise oldukça aynı değildir aslında c
'un geçerli bir nesneyi işaretleyip işaretlemediğini kontrol etme talimatıdır. Genellikle derleyiciler aynı kodu üretirler.
hayır, öyle değil açıklama ekleyin: if (c = NULL!) – Massa
derleme ve/veya çalışma zamanı için hiçbir yolu yoktur Bir nesnenin C veya C++ 'da geçerli olup olmadığını bilmek. Yazabilirsiniz: "X * c = (X *) 1;" Ardından c kesinlikle geçersiz bir nesneye işaret eder. Ve "(c)" ise true olacaktır. –
@Andrew: Açıkladığınız ifadeyi, nesnenin geçerli olup olmadığını kontrol etmenin bir yolu olmadığını haklı çıkaracağınızdan şüpheliyim. Kesinlikle derleyici tarafından çalışma zamanı kodunun kontrol edilmesi için çok çaba sarfedilmesi gerekecek ve bu nedenle derleyicilerin aynı kodu ve null işaretçisine karşı sınama yapmamaları ve bu kodu üretmemelerinin nedeni budur. İşte bu yüzden, örneğiniz (muhtemelen) tüm derleyicileri yanlış bir şekilde sonuçlandıramıyor. – Troubadour
0'ın her zaman aynı şey anlamına gelmediğini unutmayın. Boş gösterici sabit veya tamsayı sıfır olabilir. –
"C++ ile aynı (c) = ile aynıysa (c) ile aynı mıdır?" Demek istemiyor musunuz? ? –
Belirli bir türdeki değişken c mü? –