ورودی scanf در avr

سلام مهندس.اینکه ورودی scanf باید یه مقدار اسکی باشه رو درست متوجه نشدم.خب ما با عینک اینتیجر به عدد ارسالی نگاه میکنیم.مثلا تو خود c++ که کد میزدیم کنسول خود dev این مقدار مارو به اسکی تبدیل و به اسکن اف میداد؟

سلام، ببینید مثلا شما می خواهید که کاربر سن خودش رو وارد بکنه. بعد شما چک کنید که اگه سنش زیر ۲۰ سال هست یا نه. روی کنسول کاربر سنش رو وارد می کنه ۱۸. ولی طبق آموزش ها، ما می دونیم که این عددی که کاربر وارد کرده، عدد 18 نیست و در واقع کاراکتر های 1 و 8 هستن که توسط کاربر وارد شدن. این کاراکتر ها طبق جدولی به اسم ascii معادل ظاهری یک بایت هستن. اگه به جدول ascii مراجعه کنید می بینید که کاراکتر 1 در واقع عدد 49 هست و کاراکتر 8 در واقع عدد 56 هست. پس چیزی که کاربر وارد کرده هیچ ربطی به عدد 18 نداره و در واقع دو بایت فرستاده برای میکرو که یکیش ۴۹ و دیگری ۵۶ هست. ولی شما داخل برنامه دنبال خود عدد ۱۸ هستید که بتونید باهاش محاسبه انجام بدید یا مثلا یک if بذارید و چک کنید که آیا کمتر از ۲۰ هست یا نه؟
تابع scanf دقیقا این کار رو براتون انجام میده. در واقع شما به scanf میگید که من انتظار دارم که کاربر یک عدد int برای من وارد کنه. تابع scanf این عدد رو به صورت کاراکتر میگیره و تشخیص می ده که بایت های ۴۹ و ۵۶ پشت سر هم در واقع همون عدد ۱۸ هست و به شما عدد ۱۸ رو بر میگردونه. قسمتی از آموزش که درباره scanf توضیح میدیم رو یکبار دیگه با دقت خیلی زیاد ببینید.

بله.متوجه شدم.ممنون از شما