این l یه کامپایلر میگه که این مقدار یه مقدار long هست. چون در حالت عادی این مقدار به عنوان int در نظر گرفته میشه. برای این کار هم دلایلی وجود داره. مثلاً هدایت کامپایلر به استفاده از تبدیل خودکاری که برنامهنویس دوست داره. جلوگیری از سرریزی مقدار از نوع متغیر. مثلاً کد زیر رو ببینیم
long int a = 1<<43;
قرار بر این بوده که ۲ به توان ۴۲ تولید بشه اما این طور نمیشه. چرا؟ چون کامپایلر مقدار 1 رو به عنوان int و ۳۲ بیتی در نظر میگیره و نتیجهی نادرست تولید میشه. درستش اینه:
long int a = 1L<<43;
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)