SORU
17 HAZİRAN 2015, ÇARŞAMBA


print < yapar;< &;\ " n"[a==N];?

Aşağıdaki örnekte:

cout<<"\n"[a==N];

[] seçeneği cout ama a değeri N eşittir bir yeni satır baskı değil, ne hakkında hiçbir ipucu var.

CEVAP
17 HAZİRAN 2015, ÇARŞAMBA


Ne hakkında hiçbir fikrim yok [] print seçeneği yok

Bu aslında cout bir seçenek değil, ne oluyor "\n" string literal bir olmasıdır. Bir dize türü vardırn sabit karakter dizisi[] sadece bu durumda içeren karakter dizisi olarak: bir göstergesidir

\n\0

\0 tüm dize hazır eklenir unutmayın.

== operatör de olurdoğruyayanlışdizin olacak:,

  • , a eğer yanlış varsa 0 N \n sonuçta eşit değil
  • a N \0 sonuçlanan eşitse true 1,

Bu oldukça gizemli ve basit if ile yerini almış.

Başvuru için C 14 standartHafiflik taslak gerçek standart eşleştiğini teyit ettien yakın taslak 2.14.5 bölüm içinde Dize hazır N3936 olmak.) ^em>[lex.dize](söylüyorvurgu benim):

dizetürü yok “dizisi n sabit karakter”n bulunduğu , dize boyutu, aşağıda tanımlanan ve statik depolama süresi vardır (3.7).

ve:

Gerekli birleştirme, çeviri aşamasında 7 (2.2) sonra, ’0 \’ her dize eklenirbir dize tarama programları son bulabilir.

bölüm 23**[dönş.balo]diyor ki:

Bool türü bir prvalue int türünde bir prvalue, dönüştürülebilir yanlış olma sıfır ve gerçek olmak.

Metin akışı için bir boş karakter yazma

İddia boş karakter(\0) metin akışı yazılı tanımsız davranış olduğunu yapıldı.

Söyleyebileceğim kadarıyla bu 27.4.2 gibi makul bir sonuca cout C akışı açısından tanımlanır[dar.stream.nesneler]diyor ki:

Bu nesne stream buffer nesne stdout, ilan ile ilgili çıkış kontrolleri &; cstdio^ lt . (27.9.2).

ve bölümünde C11 taslak standart 27**Akarsudiyor ki:

[...]Veri bir metin akışından okuyun mutlaka veri eşit karşılaştırır bu akış yalnızca yazılı idi önceki: veriler sadece baskı oluşur karakterler ve yatay sekme ve yeni satır kontrol karakterleri;

veyazdırma karakterleri7.4 kaplıKarakter işleme <ctype.h>:

[...]dönem denetim karakteri baskı karakterleri bölgeye özgü bir üyesi anlamına gelir karakterler.199) Tüm harf ve sayı karakterleri vardır.

Dipnot 199 diyerek:

Yedi-bit US-ASCII karakter kümesi kullanan bir uygulama, baskı karakterleri bunlar 0x20 (boşluk) 0x7E (tilde); kontrol karakterleri bu yalan kimin kimin değerler 0 (NULL) 0x1F (ABD), ve karakter 0x7F (DEL) yalan.

ve sonunda boş karakter gönderme sonucu belirtilmemiş olduğunu görüyoruz ve bu bölüm 4 tanımsız davranıştır Uygunluğu diyor ki: hangi görebiliriz

[...]Tanımsız davranış başka. kelime ‘veya tarafından davranış’ tanımsız tarafından bu Uluslararası Standart belirtilen davranış herhangi bir açık tanım eksiklik.[...]

Ayrıca diyor ki: C99 rationale ümit edebiliriz

Karakter kümesi stream I/O yazma için gerekli olan bu metin korunması gerekli C program; niyet Standart C bir çevirmen olarak yazılı izin gerektiğidir maksimum taşınabilir moda. Backspace gibi kontrol karakterleri bu amaç, yani kendi için gerekli değildir metin işleme akışları zorunlu değildir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Floortile83

    Floortile83

    16 Ocak 2010
  • Liz Morgan

    Liz Morgan

    4 Aralık 2011
  • RFS Dan

    RFS Dan

    22 Temmuz 2014