LINUX.ORG.RU

Привет, дружище. Например вот так:

#include <stdio.h>

int main(void) { char a = 'X'; int b = (int)a;

(void)printf("%c == %d\n", a, b);

return (0); }

anonymous
()

Я так понял, тебе надо получить int равное 1.

#include <stdio.h>


main() {

 char a = '1', str[] = " ";
 int b;
 
 *str = a;
 b = atoi(str);

 fprintf(stderr, "b = %d\n", b);
}


linux_man
()
Ответ на: комментарий от dilmah

а он и не пишет в " " между прочим, написано char s[] = " "; что совсем не то-же самое что char *s=" ";

инициализирует массив (длиной сколько надо чтоб строка влезла) строкой, потом в массив кладет '1' все шоколадно, хоть и кривизна :)

anonymous
()
Ответ на: комментарий от linux_man

>> b = a - '0'

>Безусловно, это тоже работает.

не безусловно, а только в аски наборе ну или точнее в наборе в котором цифры по-порядку в кодовой таблице. что не всегда так.

HTH

anonymous
()
Ответ на: комментарий от anonymous

>не безусловно, а только в аски наборе ну или точнее в наборе в котором цифры по-порядку в кодовой таблице. что не всегда так. 

Где реально, в каких случаях может встретиться такое несоответствие?

anonymous
()
Ответ на: комментарий от anonymous

в не аски системах может встретиться... в EBCDIC например, хотя как в нем цифры расположены не уверен, просто дело в том, что _нигде_ не сказано что они подряд должны быть. поэтому лучше писать сразу правильно/портабельно.

PS. как вспомню тонны досовско-борландовых поделок с тоннами таких допущений так плохо становится --- до сих пор не могут перетащить на современные системы.

HTH

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.