Неявное приведение в аргументы функции, что происходит внутри этого? - PullRequest
0 голосов
/ 16 февраля 2011

Слушай, я узнал, что базовые типы для функции повышаются до int, а float удваивается, но подожди, если я передам символ функции:

char character; my_func (character)</p> <p>void my_func (char buffer)

Каждый раз, когда я ссылаюсь на буфер, это int ??? Если да, подождите, а как насчет всего того кода, который я написал, ссылаясь на буфер как char? Это делает приведение от int к char? А как насчет указателей, массивов и структур enum союзов и т. Д.? Я очень боюсь этого, потому что я предполагаю, что использование других типов вместо int является ошибкой, потому что все, что я сделал, будет преобразовано в int. право

Большое спасибо.

1 Ответ

0 голосов
/ 16 февраля 2011

Продвижение базовых типов в вызове функции имеет значение, только если вы используете код старого стиля без прототипов (если ваш компилятор поддерживает это) или используете функции ... varargs. В вашем случае у вас есть прототип, и он соответствует, так что нет конверсии или продвижения.

В любом случае рекламная акция распространяется только на числовые типы - она ​​не распространяется на указатели, массивы, структуры или объединения.

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