আমি জানি না কেন এটি দীর্ঘ ডেটা টাইপটিকে কোনও int হিসাবে উল্লেখ করছে
এইটা না. আপনার সংকলক বার্তাগুলির উপর নির্ভর করা শিখতে হবে (বিশেষত যখন সে বুদ্ধিমান, আধুনিক সংকলক এবং প্রাচীন সি / সি ++ সংকলক নয়)। যদিও তারা যে ভাষায় কথা বলে তা কখনও কখনও বোঝা শক্ত হতে পারে তবে তারা সাধারণত আপনার কাছে মিথ্যা বলে না।
এর আবার দেখুন:
ইতিমধ্যে 9223372036854775807 এর আক্ষরিক সীমার বাইরে।
মনে রাখবেন, এটি না আপনার পরিবর্তনশীল উল্লেখ testLongবা টাইপ longযে কোন স্থানে, তাই এটা না আরম্ভের সম্পর্কে। সমস্যাটি অন্য কোনও সময়ে দেখা যাচ্ছে বলে মনে হয়।
এখন বার্তার কিছু অংশ তদন্ত করতে দিন:
int আমাদের বলে যে সে কিছু হিসাবে একটি হিসাবে আচরণ করতে চায় int মান (যা আপনি চেয়েছিলেন তা নয়!)
- "পরিসীমা ছাড়াই" বেশ স্পষ্ট: কিছু প্রত্যাশিত ব্যাপ্তির মধ্যে নেই (সম্ভবত এটির মধ্যে
int )
- "আক্ষরিক": এখন এটি আকর্ষণীয়: আক্ষরিক কী?
আমি এক মুহুর্তের জন্য আক্ষরিক বিষয়ে কথা বলার জন্য আরামদায়ক তালিকাটি ছেড়ে দেব: আক্ষরিকাগুলি এমন জায়গা যা আপনার কোডে আপনার কিছু মূল্য আছে। আছে Stringলিটারেল, intলিটারেল, classলিটারেল ইত্যাদি। প্রতিবার আপনি আপনার কোডে একটি মান স্পষ্টভাবে উল্লেখ করলে এটি আক্ষরিক।
সুতরাং এটি ভেরিয়েবলের ঘোষণাপত্রের বিষয়ে আসলে আপনাকে কড়া নাড়ায়, তবে সংখ্যাটি নিজেই, মানটি এটি আপনাকে হ্রাস করে।
আপনি সহজেই একই আক্ষরিক প্রসঙ্গে যেখানে longও এবং intসমানভাবে গ্রহণযোগ্য তা প্রাসঙ্গিকভাবে যাচাই করতে পারেন :
System.out.println(9223372036854775807);
PrintStream.printlnযে কোনও একটিint বা একটিlong (বা অন্য কোনও কিছু) নিতে পারে। সুতরাং যে কোড ঠিক আছে, ঠিক করা উচিত?
নং ওয়েল, হয়তো এটা করা উচিত , কিন্তু নিয়ম অনুযায়ী এটা হল নয়।
সমস্যাটি হ'ল "কিছু অঙ্ক" intআক্ষরিক হিসাবে সংজ্ঞায়িত এবং সুতরাং এটি দ্বারা সংজ্ঞায়িত ব্যাপ্তিতে থাকতে হবে int।
আপনি যদি একটি লিখতে চান longআক্ষরিক, তারপর আপনি যে সংযোজন দ্বারা স্পষ্ট করতে হবে L(অথবা ছোট হাতের l, কিন্তু আমি অত্যন্ত সুপারিশ আপনি সবসময় উপরের কেস বৈকল্পিক ব্যবহার, কারণ এটি অনেক সহজ একটি জন্য ভুল পড়া এবং কঠিন থেকে1 )।
নোট করুন যে float(পোস্টফিক্স F/ f) এবং double(পোস্টফিক্স D/d ) এর ।
পার্শ্ব দ্রষ্টব্য: আপনি বুঝতে পারবেন যে কোনও byteবা shortআক্ষরিক নেই এবং আপনি এখনও মানগুলি (সাধারণত intআক্ষরিক) byteএবং shortভেরিয়েবলগুলি নির্ধারণ করতে পারেন : এসাইনমেন্ট রূপান্তর সম্পর্কে rules 5.2 এ বিশেষ নিয়মের কারণে এটি সম্ভব : তারা বৃহত্তর ধরণের ধ্রুবক প্রকাশের অ্যাসাইনমেন্টের অনুমতি দেয় থেকে byte, short, charবা int যদি মানের প্রকার মধ্যে পরিসীমা আছে।