Pytania początkującego

0

Witam, mam kilka pytań odnośnie języka c, z góry dzięki za pomoc.

  1. nie moge rozszyfrować tego zapisu
char c = '\x05' 
  1. tu chodzi o 2 linijkę , poproszę kilka słów wyjaśnienia :)
int n=10, p=5, q=10, r;
    r=n==(p=q);
    printf("A: n=%d p=%d q=%d r=%d\n", n ,p,q ,r); 

3.Jeszcze pytanie dotyczące tablic, dlaczego w ostatnim wieszu w nawiasie jest i ?

int tab[5], i;
for (i=0; i<5; i++)
  tab[i] = 10; 
0
char c = '\x05' 

to je chyba 5, czy to jest zapis hexowy?
2.

r=

przypisanie

n**==**(p=q) 

instrukcja porownawcza.
poniewaz operacja przypisania sie powiedzie (?) czyli p = q, p bedzie rowne q, a p jest równe 10 rowne n, czyli 10, to cale wyrazenie jest prawda i dlatego r jest rowne 1(true)

0

Ad 1. Znak z tablicy ASCII zapisany heksadecymalnie. http://donsnotes.com/tech/charsets/ascii.html
Ad 2. == to jest operator zwracający zero kiedy wyrażenie jest fałszywie i nie-zero kiedy jest prawdziwe.
Ad 3. i-ty element tablicy. Każdy z elementów tej tablicy będzie równy 10.

2
  1. '\x05' oznacza znak o kodzie 0x05, czyli 5 w systemie szesnastkowym. W tym przypadku to jest równoważne
char c = 5

bo 5 w systemie dziesiętnym jest równy 5 w szesnastkowym.
Nie mylić z

char c = '5'
r = n == (p = q);

Należy czytać od prawej
p = q - p dostaje wartość 10
całe wyrażenie przypisania zwraca tę wartość, która była przypisana, czyli w tym przypadku 10
n == 10 - co jest prawdą
r = 1 - bo prawda w C to 1

tab[i] = 10

A jak nie i to niby co? Przecież lecisz po każdej komórce tablicy, czy po indeksach od 0 do 4. Po to jest ta pętla.

1 użytkowników online, w tym zalogowanych: 0, gości: 1