Ошибка сегментации в C - PullRequest
2 голосов
/ 04 апреля 2011
void main() {
    int num;
    num = 1;
    num++;
    num = num + 9;
    printf('%u',num);
}

Что с этим не так? Это говорит об ошибке сегментации. Написано в C.

Ответы [ 4 ]

7 голосов
/ 04 апреля 2011

'%u' должно быть "%u" (двойные кавычки). C не является SQL, и '%u' считается литералом с несколькими символами .

И, как сказал Эрик, %d лучше в вашем случае.

2 голосов
/ 04 апреля 2011

То, что "% u" (многосимвольная константа char) должно быть "% u" (массив символов).Константа char неправильно интерпретируется как указатель на случайную память.

2 голосов
/ 04 апреля 2011

printf("%d") - printf принимает строку C, а не символ. %d - правильный формат формата для целого числа.

0 голосов
/ 04 апреля 2011

Обратите внимание, что вы получили бы ошибку при передаче неверного типа (int вместо const char *) в качестве первого аргумента printf, за исключением того, что вы забыли #include <stdio.h> или прототип printf самостоятельно. И поскольку printf является функцией с переменным числом, это также приводит к UB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...