c++ সি++ বই - সি ++ এ "->" অপারেটর কী?





10 Answers

অথবা সম্পূর্ণ ভিন্ন কিছু জন্য ... x স্লাইড 0

while (x --\
            \
             \
              \
               > 0)
     printf("%d ", x);

তাই গাণিতিক নয়, কিন্তু ... প্রতিটি ছবি হাজার হাজার শব্দ আঁকা হয় ...

টিউটোরিয়াল প্রোগ্রামিং ল্যাঙ্গুয়েজ

comp.lang.c++.moderated C ++ / STL এর লুকানো বৈশিষ্ট্য এবং ডার্ক কর্নার পড়ার পরে, আমি সম্পূর্ণরূপে বিস্মিত হয়েছিলাম যে নীচের স্নিপেটটি ভিজ্যুয়াল স্টুডিও 2008 এবং G ++ 4.4 উভয়তে কম্পাইল এবং কাজ করেছে।

এখানে কোডটি রয়েছে:

#include <stdio.h>
int main()
{
    int x = 10;
    while (x --> 0) // x goes to 0
    {
        printf("%d ", x);
    }
}

আমি এই সি মনে করি, এটি GCC পাশাপাশি কাজ করে। কোথায় এই মান নির্ধারিত হয়, এবং এটা কোথা থেকে এসেছে?




এটা সমতুল্য

while (x-- > 0)

x-- (পোস্ট হ্রাস) x = x-1 সমতুল্য তাই কোডটি রূপান্তরিত হয়:

while(x > 0) {
    x = x-1;
    // logic
}



এটা

#include <stdio.h>
int main(void){
     int x = 10;

     while( x-- > 0 ){ // x goes to 0

       printf("%d ", x);
     }

     return 0;
}

শুধু স্থান মজা জিনিস দেখায়, -- হ্রাস এবং > তুলনা।




while( x-- > 0 )

এটা কিভাবে পার্স করা হয়।




আমি পড়া একটি বই (আমি সঠিকভাবে কোন বই মনে রাখবেন না) বলেন: কম্পাইলার বাম ডান নিয়ম ব্যবহার করে বৃহত্তম টোকেন এক্সপ্রেশন প্যারিস করার চেষ্টা

এই ক্ষেত্রে, অভিব্যক্তি:

x-->0

বৃহত্তম টোকেন পার্সেস:

token 1: x
token 2: --
token 3: >
token 4: 0
conclude: x-- > 0

একই নিয়ম এই অভিব্যক্তি প্রযোজ্য:

a-----b

পার্স পরে:

token 1: a
token 2: --
token 3: --
token 4: -
token 5: b
conclude: (a--)-- - b

আমি এই জটিল অভিব্যক্তি ^^ বুঝতে সাহায্য করে আশা করি




যাইহোক, আমরা এখন একটি অপারেটর "যায়"। "-->" একটি দিক হিসাবে মনে রাখা সহজ, এবং "যখন x শূন্যে যায়" অর্থ সরাসরি।

উপরন্তু, এটি কিছু প্ল্যাটফর্মগুলির "for (x = 10; x > 0; x --)" চাইতেও আরও বেশি কার্যকরী।




আমি এই কোড রান যখন আমার কম্পাইলার 9876543210 প্রিন্ট আউট হবে।

#include <iostream>
int main()
{
    int x = 10;

    while( x --> 0 ) // x goes to 0
    {
        std::cout << x;
    }
}

প্রত্যাশিত. while( x > 0) আসলে অর্থ while( x > 0)x পোস্ট হ্রাস x

while( x > 0 ) 
{
    x--;
    std::cout << x;
}

একই জিনিস লেখার একটি ভিন্ন উপায়।

এটি আসলেই সুন্দর যে "যখন x 0 তে যায় তবে" সুন্দর।




-- হ্রাস অপারেটর এবং > অপারেটরের চেয়ে বড়

দুই অপারেটর যেমন একটি এক হিসাবে প্রয়োগ করা হয় -->




প্রকৃতপক্ষে, x পোস্ট-হ্রাসিং এবং সেই অবস্থার সাথে চেক করা হচ্ছে। এটা না --> , এটি (x--) > 0

দ্রষ্টব্য: শর্তটি চেক করার পরে x মান পরিবর্তিত হয়, কারণ এটি হ্রাস হওয়ার পরে। কিছু অনুরূপ ক্ষেত্রেও ঘটতে পারে, উদাহরণস্বরূপ:

-->    x-->0
++>    x++>0
-->=   x-->=0
++>=   x++>=0



কেন সব জটিলতা?

আসল প্রশ্নের সহজ উত্তর ঠিক হল:

#include <stdio.h>
int main()
{
    int x = 10;
    while (x > 0) 
    {
        printf("%d ", x);
        x = x-1;
    }
}

একই জিনিস। বলার অপেক্ষা রাখে না যে আপনি এটি ভালো করা উচিত, কিন্তু এটি একই জিনিস এবং একটি পোস্টে প্রশ্নের উত্তর দিতে হবে।

x-- উপরের জন্য শুধু x-- , এবং > শুধুমাত্র operator চেয়ে একটি স্বাভাবিক বৃহত্তর। কোন বড় রহস্য!

আজকাল জটিল জিনিসগুলি জটিল করে তুলছে অনেক মানুষ;)




Related