Неявная переменная
- Войдите на сайт для отправки комментариев
Вс, 13/05/2018 - 22:54
Ивините если могу оскорбить гуру таким вопросом) - не пинайте !
Есть ли у C++ неявная переменная, в которой может быть как int , так и char ?
Или как делают в таких случаях ? Хотя может у гуру не бывает таких случаев xD
int c = 1;
char d = 'N'
if (a = b) {
Keyboard.press(c);
}
else {
Keyboard.press(d);
}
int и char различаются в основном длиной. Как в той, так и в другой можно хранмить как числа, так и коды символов. C - язык со слабой типизацией, при которой по сути единственное различие между целыми, символьними и логическими переменными является только длина. В конструкциях языка они в большинстве случаев взаимозаменяемы (опять же, если хватает размера).
PS. Строка 4 в Вашем коде, вероятнее всего, делает совсем не то, что Вы думаете.
PS. Строка 4 в Вашем коде, вероятнее всего, делает совсем не то, что Вы думаете.
Ой, ошибся когда рисовал для форума) там == естественно.
Но код от этого понгятнее не стал.
Arduino_Novichok. Вы банально мало знаете. Вот и вылазят тупые фантазии. С одной стороны в компьютере биты и байты и нет ничего больше. Так что компьютеру глубоко до ж**ы с чем работать. И даже полученный результат компьютеру так же до ж**ы. Но ведь вам как пользователю совсем не понравится то г**о, что получилось. Вот по этой причине и придумали типы. С этими типами должны работать эти функции, а с другими другие. В Си даже есть перегрузка функции - разные типы вызывают разные функции обработки. Удобно. Не надо иметь кучу названий функций. И теперь вы предлагаете неявные типы переменной. Ну тогда вы явно должны добавить к существующей еще одну переменную -тип той информации которая лежит в неявно заданой ячейке. И вот в зависимости от переменной типа и будете выбирать как эту информацию обрабатывать.
Видимо Вы писали про С++. В оригинальном "С" никаких перегрузок не замечено.. :)
ТС-у: Вы неверно интерпретируете термин "неявная" переменная, имея ввиду "универсальная" или "нетипизованная", когда тип хранимых данных определяется содержимым переменной в каждый отдельный момент времени: что присвоили, тот и тип. Вот таких переменных нет ни в "С" ни в "С++", но в последнем есть некоторые механизмы, позволяющие в определенной степени имитировать такое поведение программы, правда ДО её компиляции (темплейты).
Оригинальному "С", как верно сказано, по-барабану на тип хранящихся данных и любой тип можно привести к практически любому, хотя бы через (void*) .. для работоспособности программы важен размер занимаемой памяти переменной того или иного типа. Все "типовые ограничения" языков связаны исключительно с борьбой с ошибками в программах - "человеческим фактором" их авторства.
Ну и ещё порекомендую прочесть про оператор union в "С".. возможно поможет..
Видимо Вы писали про С++. В оригинальном "С" никаких перегрузок не замечено.. :)
Давненько Вы не смотрели свежие стандарты С.
Лучшее - враг хорошего. :)
И ваще, у "С" есть только один стандарт - Керниган-Ричи. :)