TGViewer
Farhan T-byte Farhan T-byte @farhantbyte · 134 subscribers
Post #277 97
نکته مهم در مورد استاندارد سی #technical

ببینید قضیه اینه که سی تعداد آپریتور های بسیار بالایی رو به ما میده اما نکته مهم اینه که بدونیم این آپریتور ها و اکسپرشن هایی که از این آپریتور ها ساخته میشند چطوری و به چه اوردری به اجرا در میان؟

نکته مهم اینه که خیلی ها فکر میکنند در این عبارت همیشه ضرب ها اول اجرا میشند چون ضرب به جمع اولویت داره:

a * b + c * d + e * f

اما داستان اینه که این قضیه درست نیست!

اولویت و حتی ویژگی شرکت پذیری آپریتور ها صرفا به گروه بندی ربط دارند این یعنی چی؟ یعنی صرفا در بسته بندی این عملیات ها به ما کمک میکنند مثلا در بحث اولویت :

(a * b) + (c * d) + (e * f)

به این شکل گروه بندی میشن و وقتی ویژگی شرکت پذیری هم بیاد میتونیم بگیم که به این شکل میتونیم گروه بندیش کنیم :‌
((a * b) + (c * d)) + (e * f)

اما داستانی که وجود داره اینه که این قضیه تقدم evaluation رو به طور کامل بیان نمیکنه یعنی چی؟‌ یعنی درسته که برای جمع اول ما نیاز داریم که ضرب ها اجرا بشن ولی این که در هنگام انجام جمع اول ما ضرب e*f رو داریم یا نه چیزی نیست که بتونیم صد درصد در موردش نظر بدیم

حالا اینجا این قضیه ساید افکتی نداره اما وقتی که از اپریتور هایی استفاده کنیم که ساید افکت دارند این قضیه میتوونه باعث بشه که یک ایکسپرشن ساده undefined باشه و حتی unspecified sequence رو دارا باشیم

مثلا یه همچین چیزی :‌

i + ++i

این قضیه چیه؟‌ اینجا دوتا اکسپرشن داریم یکی i++ و یه دونه کل جمعمون در حقیقت داستان اینه که اولویت i++ بالا تره پس توی گروه بندی میتونیم اینو بنویسیم :‌

i + (++i)

اما موضوع اینه که هیچجا گفته نشده که آیا موقع ارزیابی و i++ مقدار i خونده میشه یا نه اگر خونده بشه مقدار میتونه یکی کمتر از نتیجه نهایی باشه و اگر خونده نشه مقدار یکی بیشتر از نتیجه نهایی هست یعنی در نهایت نتیجه نهایی گارانتی نشده هست

این یه موضوع مهم است که بدونیم وقتی میگیم :

x + c*p

برای این که جمع انجام بشه ما حتما باید مقدار سمت راست و چپ رو به طور کامل داشته باشیم اما این که ایکس خونده میشه و مقدار ضرب انجام میشه یا در هنگام ضرب ایکس خونده میشه و ... ربط داره به پلتفرم و انتخاب کامپایلر و پیاده سازی های سطح پایین

این نکته خیلی نکته مهمی هستش...

میدونم درکش سخته و کمی پیچیده هست ولی کم کم متوجه‌ش میشید

پیشنهاد من اینه که یه برگه کامل بردارید و تک تک اپریتور ها رو بنویسید و ویژگی هاشون رو هم ذکر کنید و در نهایت بزنیدش یه جای اتاقتون و هر روز ببینیدشون و این قضیه رو به شکل ذهنی تمرین کنید...

@farhantbyte
  • ❤‍🔥 4
  • 🔥 1
More from @farhantbyte
  1. Oct 14, 2026خونه تقریبا نزدیک به یکسال کسی توش نبوده هر چی تو یخچال بوده مطمئنن خراب شده تمام چیزا رو…
  2. Oct 14, 2026خب آماده شیم برگردیم به تهران کم کم امیدوارم اینبار اتفاقی نیوفته...
  3. Oct 14, 2026البته به این نمیگن فن پیجی توی تولید محتوا به این میگن کلیپینگ و درآمد بالایی داره تو ایرا…
  4. Oct 13, 2026https://fa.wikipedia.org/wiki/%D8%A2%D8%B1%D8%AC%DB%8C_%D9%85%DB%8C%D8%AA%D9%87 بازیگر نقش…
  5. Oct 13, 2026یکی از جذاب ترین چیز ها در مورد گنجور این مقالشون در مورد حجم زیاد ترافیک و لود رو سرورشون…
  6. Oct 13, 2026گنجور رو که همه دیگه میشناسید؟ به جان خودم چندین ماه هست در تلاشم بتونم با یکی از اعضاهاش…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →