Wyswietlanie znaku ASCII

0

Witam.
Mam oto taki programik i moje zapytanie brzmi: Co robię źle? Chciałbym wyświetlić wartość zmiennej b ale nie wiem co robię źle gdyż po skompilowaniu otrzymuję wyniki: a=1 i puste pole dla b (jej wartość powinna wynieść B zgadza się?).

int main()
{
int a=2;
char b;
b='A'+(a--!=1)?0:1;
printf("%i, %c", a, b);
getchar();
return 0;
} 
2

Kolejność operatorów.

  1. a-- != 1 ------> 2 != 1 -------> true
  2. 'A' + true == true? ------> 'A' + 1 == true? ------> true
  3. b = 0
  4. printf("%c", 0)
2

Polecam powrót do kursu.

a + b ? c : d

jest równoznaczne z:(a+b) ? c : d

 Inaczej mówiąc
```c
b=('A'+(a--!=1))?0:1

Musisz odpowiednio zaaplikować nawiasy:

b='A'+((a--!=1)?0:1)

Przy czym, a-- to postinkrementacja, zwraca poprzednią wartość a, więc przypisanie do b wygląda tak:

b = 'A' + ((2 !=1) ? 0 : 1);

czyli

b = 'A' + ((true) ? 0 : 1);

czyli

b = 'A' + (0);

czyli

b = 'A';

.

--a to preinkrementacja.

0

Dziękuję wam.

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